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
相关产品推荐
相关产品推荐

