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

如何统计用户输入的大于80的分数数量?(无数组实现+代码修复)

问题分析与修复

你的代码统计大于80的分数数量时出现错误,核心问题有三个:

  • 多余的内层for循环:每当输入的分数大于80时,你用了一个循环5次的内层循环给greater加1,这直接导致每次符合条件就加5,所以结果必然是5的倍数。
  • 分数判断的时机错误:你在输入验证前就判断分数是否大于80,这会导致用无效的输入(比如120)来统计,而用户修正后的有效分数却没被正确判断。
  • 统计结果输出时机错误:你把统计结果的输出放在了循环内部,每次符合条件就输出,这会导致多次重复输出,且结果不完整。

修复后的代码

#include <iostream>
using namespace std;

int main()
{
    int score, sum = 0, greater = 0;
    
    for(int i = 1; i <= 5; i++)
    {
        cout << "Enter the score: ";  // 接收用户输入分数
        cin >> score;
        
        // 输入验证:直到输入有效为止
        while (!(score >= 0 && score <= 100))
        {
            cout << "Invalid Input. Enter the score between the range 0 - 100" << endl;
            cout << "Enter the score: ";
            cin >> score;
        }
        
        // 验证通过后,判断分数是否大于80并统计
        if(score > 80)
        {
            greater++;  // 直接加1,不需要内层循环
        }
        
        sum += score;  // 累加分数到总和
    }
    
    float avg = sum / 5.0;  // 计算平均分
    
    // 循环结束后统一输出统计结果和平均分
    cout << "There are " << greater << " scores more than 80" << endl;
    cout << "Average of scores: " << avg << endl;
    
    return 0;
}

关键修改点说明

  1. 移除内层for循环:当分数大于80时,直接执行greater++即可完成计数,不需要循环多次累加。
  2. 调整判断顺序:先完成输入验证,确保score是0-100之间的有效分数后,再判断是否大于80,避免用无效值统计。
  3. 调整输出位置:把统计结果的输出移到循环结束后,确保所有分数处理完成后,输出最终的统计数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:45:30