求大佬看看我这c语言程序有什么问题,为什么输出值为0
答案:3 悬赏:80
解决时间 2021-01-15 12:00
- 提问者网友:活着好累
- 2021-01-14 18:42
求大佬看看我这c语言程序有什么问题,为什么输出值为0
最佳答案
- 二级知识专家网友:蕴藏春秋
- 2021-01-14 18:47
#include
#include
#include
#include
#include
#include
#include
#include
//#include
#define MAX 50 //
#include
int main()
{
int value;
float temp,a;
scanf("%d",&value);
switch(value) {
case 1: printf("请输入华氏温度:");scanf("%f",&temp); a=5.0/9*(temp-32);printf("其摄氏温度为:%.2f",a); break;
/// 5/9时整除掉了,把5改为5.0/9 .下一行同理.把9/5中的9改为9.0.不然结果不对的
///或者直接强制转换(5/9或9/5)成浮点数
case 2: printf("请输入摄氏温度:");scanf("%f",&temp); a=9.0/5*temp+32; printf("其华氏温度为:%.2f",a); break;
default:printf("error!!!");
} return 0;
}
全部回答
- 1楼网友:你可爱的野爹
- 2021-01-14 21:29
因为你的那个算式,5/9*(temp-32)是从左向右算的,5/9=0.所以你的结果为0
- 2楼网友:酒安江南
- 2021-01-14 20:07
a=5/9*(temp-32)
编译器从左往右计算,5和9都是整数,5/9也是整数,得数为零点几,但是整数就看做0.0再和(temp-32)相乘依然为0.
解决办法:
1、a=5.0/9.0*(temp-32.0); //所有数据类型均为float型
2、a=(temp-32.0)*5/9; //cpu会先计算float,则后续计算均按照float进行计算
编译器从左往右计算,5和9都是整数,5/9也是整数,得数为零点几,但是整数就看做0.0再和(temp-32)相乘依然为0.
解决办法:
1、a=5.0/9.0*(temp-32.0); //所有数据类型均为float型
2、a=(temp-32.0)*5/9; //cpu会先计算float,则后续计算均按照float进行计算
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯