C语言程序使用scanf输入时提前退出,无法完成三次输入如何解决?
问题解决:输入第二个分数后程序提前终止
错误原因
你代码里的scanf调用存在核心错误:scanf需要接收变量的内存地址来存储输入值,但你直接传入了变量本身(比如scanf("%i", x))。这种写法会把变量的当前值当作内存地址使用,属于非法内存访问,触发未定义行为——具体表现就是程序在第二次输入后崩溃,跳过第三次输入。
修正后的代码
把每个scanf的第二个参数改成变量的地址(用&取地址符),同时可以简化代码,直接将输入存入数组,省去额外的中间变量:
#include <stdio.h> int main(void) { int scores[3]; printf("first score is:\n"); scanf("%i", &scores[0]); printf("second score is:\n"); scanf("%i", &scores[1]); printf("third score is:\n"); scanf("%i", &scores[2]); printf("average is %f\n", (scores[0] + scores[1] + scores[2]) / (float)3); return 0; }
额外优化说明
- 直接操作数组元素,减少不必要的中间变量,代码更简洁
- 补充
return 0;,符合C标准的main函数规范
内容的提问来源于stack exchange,提问作者Vazhun
相关产品推荐
相关产品推荐

