You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 12:54:34