何艺铧 发表于 2021-12-10 20:12:55

why!

#include <stdio.h>
#include<math.h>
int main()
{
    printf("请输入华氏度:");
    int i;
    double g;
    scanf_s("%d", &i);
   
    g = (i - 32) * 5 / 9;
    printf("转换为摄氏度是:%.2f", g);

   



    return 0;
}
为什么输入45华氏度,输出是7.00摄氏度啊,兄弟们。

傻眼貓咪 发表于 2021-12-10 20:22:58


#include <stdio.h>
#include<math.h>
int main()
{
    printf("请输入华氏度:");
    int i;
    double g;
    scanf("%d", &i);
   
    g = ((double)i - 32) * 5 / 9; //问题出现在这里,整数乘或除都会变整数的
    printf("转换为摄氏度是:%.2f", g);

   



    return 0;
}

番杰 发表于 2021-12-10 20:23:42

g = (i - 32) * 5 / 9
   =(45 - 32) * 5 / 9
   = 13*5/9
   = 65/9 (因为除号两遍都是int类型,所以结果也是int类型)
   = 7 (余数为2)

你想输出小数的话,有两种办法:
(1)输入i时,占位符不用%d,用%f,这样你输入45,在编译器里是45.0(浮点型)
(2) g = (i - 32) * 5 / 9.0;这样除号一边是浮点型,结果也是浮点型。

何艺铧 发表于 2021-12-10 21:22:23

不行啊,兄弟
#include <stdio.h>
#include<math.h>
int main()
{
    printf("请输入华氏度:");
    int i;
    double g;
    scanf_s("%f", &i);

    g = (i - 32) * 5 / 9;
    printf("转换为摄氏度是:%.2f", g);





    return 0;
}
答案是错的啊,兄弟

番杰 发表于 2021-12-10 21:49:50

何艺铧 发表于 2021-12-10 21:22
不行啊,兄弟
#include
#include


兄弟呀,你不能用 int 定义i呀,你用int定义,用%f输入也没有呀,i还是一个int类型呀
你需要用float或是double定义 i

小亦003 发表于 2021-12-10 21:52:46

何艺铧 发表于 2021-12-10 21:22
不行啊,兄弟
#include
#include


你i定义为整型int,占位符不是只能用%d么,把9换成9.0就行

何艺铧 发表于 2021-12-11 14:48:59

番杰 发表于 2021-12-10 21:49
兄弟呀,你不能用 int 定义i呀,你用int定义,用%f输入也没有呀,i还是一个int类型呀
你需要用float或 ...

ok,我的
页: [1]
查看完整版本: why!