首页 > 解决方案 > 这个错误的原因是什么?循环不会连续运行,它是一个菜单驱动的程序

问题描述

循环应该在一个连续循环中运行,但我找不到错误,因为它在输入数据后以案例 1 结束!

#include <bits/stdc++.h>
using namespace std;

class student
{
public:
    int age = 0;
    string name = "";
};

int main()
{
    bool bistrue = true;

    vector<student> arr;

    while (bistrue)
    {
        cout << "user signup application" << endl
             << "please select an option \n 1.add record \n 2. fetch record \n 3.quit\n";
        int n;
        cin >> n;

        switch (n)
        {
        case 1:
        {
            cout << "please enter user name and age\n";
            student temp;
            // cout<<"name\n age";
            cin >> temp.name;
            cin >> temp.age;
            arr.push_back(temp);
        }
        break;

        case 2:
        {
            cout << "enter user id\n";
            int number;
            cin >> number;
            int i;
            for (i = 0; i < arr.size(); i++)
            {
                if (i == number)
                {
                    cout << "user name" << arr[i].name << "\n user age" << arr[i].age;
                    break;
                }
            }
        }
        break;

        case 3:
        {
            bistrue = false;
            break;
        }
        }

        return 0;
    }
}

标签: c++

解决方案


那是因为您return 0在块内有您的声明while

解决它!

#include <bits/stdc++.h>
using namespace std;

class student {
public:
    int age = 0;
    string name = "";
};

int main()
{
    bool bistrue = true;

    vector<student> arr;

    while (bistrue) {
        cout << "user signup application" << endl
             << "please select an option \n 1.add record \n 2. fetch record \n 3.quit\n";
        int n;
        cin >> n;

        switch (n) {
        case 1: {
            cout << "please enter user name and age\n";
            student temp;
            // cout<<"name\n age";
            cin >> temp.name;
            cin >> temp.age;
            arr.push_back(temp);
        } break;

        case 2: {
            cout << "enter user id\n";
            int number;
            cin >> number;
            int i;
            for (i = 0; i < arr.size(); i++) {
                if (i == number) {
                    cout << "user name" << arr[i].name << "\n user age" << arr[i].age;
                    break;
                }
            }

        } break;

        case 3: {
            bistrue = false;

        } break;
        }
    }
    return 0;  // move it outside the while loop
}

推荐阅读