整数与浮点数的坑
问题:
我第一次写的程序:
#include<stdio.h>
int main(){
int chi,cun;
double height;
printf("您的身高有几尺几寸:");
scanf("%d %d",&chi,&cun);
height=(chi+cun/12)*0.3048;
printf("经转化,您的身高为%f米",height);
return 0;
}
运行:
与标准答案不相符,于是我又多试了几次!
发现程序存在问题,五尺七寸的运行结果明显不是正确答案1.7018米,而且不管是五尺多少寸,编译运行的结果都是1.5240米,看似是英寸在其中没有起作用,听完视频课老师的解答后找到问题所在,因为height是一个浮点数类型,而chi,cun,12都是整数类型的,表达式中cun/12(cun<12)的结果也只能是整数类型的,将小数部分的数扔了,也就是说本来是0.5833…被舍去小数部分变成0,英寸部分在此并不起作用。有两种解决方案,如下所述。
解决方案一:
浮点数和整数放到一起运算时,C程序会将整数转换成浮点数,然后进行浮点数运算,所以我们将整数12改成浮点数12.0,此时,整数cun与浮点数12.0进行浮点数运算,得到的结果为一个浮点数。
#include<stdio.h>
int main(){
int chi,cun;
double height;
printf("您的身高有几尺几寸:");
scanf("%d %d",&chi,&cun);
height=(chi+cun/12.0)*0.3048;
printf("经转化,您的身高为%f米",height);
return 0;
}
运行:
解决方案二:
将chi,cun都定义为浮点数,浮点数cun与整数12进行浮点数运算,得到的结果为一个浮点数。
#include<stdio.h>
int main(){
double chi,cun,height;
printf("您的身高有几尺几寸:");
scanf("%lf %lf",&chi,&cun);
height=(chi+cun/12)*0.3048;
printf("您的身高为%f米",height);
return 0;
}
小细节:
1.int 整数
输出:printf("%d",…);
输入:scanf("%d",…);
2.double 带小数点的数
输出:printf("%f",…);
输入:scanf("%lf",…);