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

C语言成绩分级程序实现输入负值自动停止运行的方法

C语言成绩分级循环终止问题解决

错误原因汇总

  • 局部int变量a未初始化就参与条件判断,初始值为随机垃圾值,会导致首次循环条件判断结果不符合预期
  • 循环内重复调用scanf(),每次循环会要求用户输入两次值,仅第一次输入会触发分级逻辑,第二次输入无响应
  • 循环条件设置错误,要么无法进入循环,要么提前终止循环
  • 部分版本逻辑顺序错误,先判断分级再读取输入,导致首次判断使用的是随机值

正确可运行代码

#include <stdio.h>
int main()
{
    int a;
    do {
        // 单次循环仅读取一次输入
        scanf("%d", &a);
        // 输入负值直接跳出循环
        if (a < 0) {
            break;
        }
        if (a > 100) {
            printf("NA\n");
        } else if (a >= 86 && a <= 100) {
            printf("1\n");
        } else if (a >= 61 && a <= 85) {
            printf("2\n");
        } else if (a >= 51 && a <= 60) {
            printf("3\n");
        } else if (a >= 0 && a <= 50) {
            printf("4\n");
        }
    } while (a >= 0); // 非负值继续下一轮循环
    return 0;
}

逻辑说明

  1. 采用do-while循环保证至少执行一次输入读取操作,符合使用场景
  2. 单次循环仅调用一次scanf(),避免重复读取输入的问题
  3. 读取输入后优先判断是否为负值,是则直接跳出循环终止程序
  4. 非负值按照分数区间走分级逻辑,输出对应结果后继续下一轮循环

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:57:03