大一软件工程系新生一个,今日在网上学了一个代码,自己修改了一下,不知道为什么输入数据后跑不起来了,求帮助
int foot;
int inch;
printf("输入英尺和英寸\n"
"中间用空格隔开");
scanf("%d %d",&foot,&inch);
int A=((foot+inch/12)*0.348);
printf("换算成国际单位是:%f米",A);
上面是我写的代码,帮我看看那里的问题导致不能输出
把int A换成 float A
((foot+inch/12)*0.348)的结果是float型,付给整形变量会丢失精度,其次%f不能输出整型
我想你的本意是A是一个浮点数(带小数点的实数),那么你在声明时,应该将其声明为float或者double类型。因为不同的类型它们在内存中存储的方式是不同的,你在声明时让A为一个int型变量, 而在printf函数中用%f这个转换说明的话,那么它会被强制转换成float类型(int转float机制比较复杂,有兴趣你自己可以去查一下),因此得不到你想要的结果。另外跑不起来是指没产生输出还是输出出错,后者就是我刚才讲的那个问题。前者的话,可能是你输入时中间没有用空格隔开。
你的代码语法上没有错误,可以运行出来。运行不出来是编译都通不过还是输出结果错误?
如果编译错误,那可能是scanf
不安全导致,需要换成scanf_s
。
如果是运行结果错误,请把int A
换成double A
或float A
,并把12
换成12.0
代码如下:
#include <stdio.h>
int main()
{
int foot;
int inch;
printf("输入英尺和英寸\n中间用空格隔开");
scanf_s("%d %d", &foot, &inch,10);//10表示最多读10个字符,你也可以设置别的数字
double A = ((foot + inch / 12.0) * 0.348);
printf("换算成国际单位是:%f米", A);
return 0;
}