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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:12:11