m0_74898028 2023-01-08 09:31 采纳率: 80%
浏览 59
已结题

关于#c++#的问题,如何解决?

怎么写输入错误信息?按我写的话,”输入错误信息“会循环很多遍,没有思路


bool opFlag = true;
    while (opFlag)
    {
        system("cls");
        cout << "**********************************************" << endl;
        cout << "*                查询学生成绩                *" << endl;
        cout << "**********************************************" << endl;
        cout << "*             1:按学号查询                  *" << endl;
        cout << "*             2:按姓名查询                  *" << endl;
        cout << "*             3:按性别查询                  *" << endl;
        cout << "*             4: 按班级查询                  *" << endl;
        cout << "*             0:返回上一级菜单              *" << endl;
        cout << "**********************************************" << endl;
        cout << "请输入您的选择:";
        cin >> n;
        switch(n)
        {
        case'1':
        cout << "请输入学号:";
        cin >> m;
        for (int k = 0; k < _studentInfo.size(); k++)
        {
            if (_studentInfo[k]._num == m)
            {
                cout << "**************************** 成绩列表 ******************************" << endl;
                cout << "    学号,     姓名, 性别, 班级名称,  考勤,  作业,  实验,  考试,  总评" << endl;
                _studentInfo[k].display();
                system("pause");
                char c = getchar();
            }
        }
        for (int k = 0; k < _studentInfo.size(); k++)
        {
            if (_studentInfo[k]._num != m)
            {
                char c = getchar();
                cout << "输入错误学号!" << endl;
                
                
            }
        }
            break;
  • 写回答

3条回答 默认 最新

  • 关注

    你又for循环了一遍,肯定是输出多次。你可以添加一个标记bool bFind = false; 在第一个for循环中,在if语句里,添加依据bFind = true,然后再for循环下面用if(bFind==false)判断学号是否满足要求就可以了。代码修改如下,修改的地方有注释:

    bool opFlag = true;
    bool bFind = false; //这里添加一个标记位
    while (opFlag)
    {
        system("cls");
        cout << "**********************************************" << endl;
        cout << "*                查询学生成绩                *" << endl;
        cout << "**********************************************" << endl;
        cout << "*             1:按学号查询                  *" << endl;
        cout << "*             2:按姓名查询                  *" << endl;
        cout << "*             3:按性别查询                  *" << endl;
        cout << "*             4: 按班级查询                  *" << endl;
        cout << "*             0:返回上一级菜单              *" << endl;
        cout << "**********************************************" << endl;
        cout << "请输入您的选择:";
        cin >> n;
        switch (n)
        {
        case'1':
            cout << "请输入学号:";
            cin >> m;
            bFind = false; //设置一个标记位,并初始为false
            for (int k = 0; k < _studentInfo.size(); k++)
            {
                if (_studentInfo[k]._num == m)
                {
                    cout << "**************************** 成绩列表 ******************************" << endl;
                    cout << "    学号,     姓名, 性别, 班级名称,  考勤,  作业,  实验,  考试,  总评" << endl;
                    _studentInfo[k].display();
                    bFind = true;//这里设置为true
                    system("pause");
                    char c = getchar();
                }
            }
            if(bFind == false) //用这个if 代替下面的for循环
                cout << "输入错误学号!" << endl;
            /*for (int k = 0; k < _studentInfo.size(); k++)
            {
                if (_studentInfo[k]._num != m)
                {
                    char c = getchar();
                    cout << "输入错误学号!" << endl;
    
    
                }
            }*/
            break;
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月23日
  • 已采纳回答 1月15日
  • 创建了问题 1月8日

悬赏问题

  • ¥15 关于github的项目怎么在pycharm上面运行
  • ¥15 内存地址视频流转RTMP
  • ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
  • ¥15 找一个QT页面+目标识别(行人检测)的开源项目
  • ¥15 有没有整苹果智能分拣线上图像数据
  • ¥20 有没有人会这个东西的
  • ¥15 cfx考虑调整“enforce system memory limit”参数的设置
  • ¥30 航迹分离,航迹增强,误差分析
  • ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
  • ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码