C语言单位转换代码输出全为0异常求助
C语言单位转换代码输出全为0异常求助
嗨,我马上帮你定位到问题啦!你的代码里有个scanf使用的典型错误,这就是导致所有输出都是0的根源。
问题所在
scanf函数接收输入时,需要传入变量的内存地址,这样它才能把用户输入的值写入到这个变量里。而你写的代码里:
scanf("%f", dist_km);
直接传了变量名dist_km,这相当于把变量当前的(未初始化的)值传给了scanf,它根本没法把输入的数值存到变量里,后续的计算自然全是错误的0值。
修正方案
把scanf那一行改成这样,加上取地址符&:
scanf("%f", &dist_km);
修正后的完整代码
#include <stdio.h> int main(){ float dist_km, m, cm, feet, inch; printf("Enter distance bet two cities in km= "); // 这里加上&取地址符,让scanf能正确写入输入值 scanf("%f", &dist_km); m = dist_km * 1000; cm = m * 100; inch = cm / 2.54; feet = inch / 12; printf("\n dist in m= %.2f", m); printf("\n dist in cm= %.2f", cm); printf("\n dist in inch= %.2f", inch); printf("\n dist in feet= %.2f", feet); return 0; }
我顺便给输出加了%.2f,让结果只保留两位小数,看起来更整洁,你也可以根据需要调整小数位数。
额外小提示
局部变量如果不初始化,会是随机的垃圾值,虽然这次没影响结果,但养成初始化的习惯会更安全,比如可以写成float dist_km = 0, m = 0, cm = 0, feet = 0, inch = 0;。
现在再运行代码,输入29.5的话,就能得到正确的转换结果啦!
备注:内容来源于stack exchange,提问作者Akash
相关产品推荐
相关产品推荐

