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

C语言程序输入n后直接终止,无法打印0~n摄氏度转华氏度结果

问题修复与解释

你的程序输入n后直接结束,核心问题出在scanf的参数传递上,另外还有几个小问题需要修正:

核心错误:scanf参数错误

代码里的scanf("%d", n);是错误的,scanf要求传入变量的内存地址来存储输入值,直接传n会把n的初始随机值当作地址,导致非法内存访问,程序直接崩溃终止。
正确写法应该是:

scanf("%d", &n);

其他可优化/修正点

  • 变量c是从0到n的整数,用int类型比double更合适,避免不必要的浮点运算
  • printf里的拼写错误:fahrenhayt应该改为fahrenheit
  • 换行符建议用\n替代直接换行,符合C语言标准写法

修复后的完整代码

//fahrenheit values for celcius degrees between 0-n
#include<stdio.h>

int main()
{
    int n, c=0; 
    double f;
    printf("n:"); 
    scanf("%d", &n);
    while(c <= n)
    {
        f = (9.0 * c + 160) / 5; // 用9.0确保浮点运算,避免整数截断
        printf("%d celcius = %f fahrenheit\n", c, f);
        c++;
    }
    return 0;
}

额外说明

修复后运行程序,输入n的值,就能正常逐行打印0到n摄氏度对应的华氏度结果了。计算式里用9.0而非9,是为了强制触发浮点运算,避免整数除法导致结果被截断。

内容的提问来源于stack exchange,提问作者yololife

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:25:33