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

C++中实现学生唯一ID校验及板球得分录入的问题咨询

学生ID唯一性校验与得分限制的C++实现

需求说明

  • 存储11名学生的ID及其板球比赛得分
  • 得分必须大于10
  • 学生ID必须唯一,输入重复ID时需提示“该ID已存在,请输入不同值”并重新输入

原代码问题分析

原代码的重复ID判断逻辑存在明显错误:

  1. 内层循环j从i开始,导致刚输入的id[i]会和自身比较,直接触发重复提示
  2. 仅在第一次检测到重复时重新输入一次,没有循环校验直到输入唯一ID
  3. 数组大小只定义了5,不符合存储11名学生数据的需求

修正后的代码

#include <iostream>

using namespace std;

int main() {
    // 调整数组大小为11,匹配11名学生的存储需求
    int id[11];
    int run[11];

    for (int i = 0; i < 11; i++) {
        // 循环获取ID,直到输入唯一值
        bool isDuplicate;
        do {
            isDuplicate = false;
            cout << "请输入第" << i+1 << "名学生的ID:" << endl;
            cin >> id[i];

            // 仅对比之前已输入的ID,避免和自身重复判断
            for (int j = 0; j < i; j++) {
                if (id[i] == id[j]) {
                    cout << "该ID已存在,请输入不同值!" << endl;
                    isDuplicate = true;
                    break;
                }
            }
        } while (isDuplicate);

        // 循环获取得分,直到输入符合要求的值
        cout << "请输入该学生的比赛得分:" << endl;
        do {
            cout << "得分必须大于10,请重新输入:" << endl;
            cin >> run[i];
        } while (run[i] <= 10);
    }

    // 可选:输出所有学生数据,验证正确性
    cout << "\n所有学生数据如下:" << endl;
    for (int i = 0; i < 11; i++) {
        cout << "学生" << i+1 << ":ID=" << id[i] << ",得分=" << run[i] << endl;
    }

    system("pause");
    return 0;
}

关键修正点

  • 将数组大小从5改为11,满足11名学生的数据存储需求
  • 用do-while循环包裹ID输入逻辑,确保重复时持续提示直到输入唯一ID
  • 检查重复时仅对比之前已输入的ID(j从0到i-1),避免无效的自身对比
  • 修正得分判断条件为run[i] <= 10,严格符合“得分大于10”的要求
  • 优化提示语,更清晰直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:50:28