Switch 语句 - 嵌套函数 - C++

Switch Statement - Nested Functions - C++

我想要一个名为 "userPrompt" 的函数,它要求用户输入一个名为 "choose" 的整数值,这样之后我就可以使用 switch 语句了。

但它不起作用它说:"choose" 未申报。

我想它会先启动主函数,在其中第一个命令将初始化 userPrompt 函数。然后感谢 userPrompt 我将有一个选择值,以便开关可以工作。

那么这段代码有什么问题呢?

如何使用嵌套函数?(我希望它是这样调用的)

我的代码顺序错了吗?

任何帮助将不胜感激。

userPrompt(){

    int choose;

    cout << " Please Choose An Option : " << endl;
    cout << " Type 1 to Add new grades : " << endl;
    cout << " Type 2 to Calculate the average grades : " << endl;
    cout << " Type 3 to Calculate the total grades : " << endl;
    cout << " Type 4 to Exit : " << endl;    

    cin >> choose;

}

    int main()
    {

        userPrompt();

        switch(choose){

        case 1
            getGrade();
            userPrompt();
            break;

        case 2

            int average;
            getGrade();   

            average = total/counter;

            cout << average; 

            break;     

        case 3

            getGrade();
            cout << total;
            break;

        case 4

            cout << "Thanks for Trying" << endl;

            return 0;

            system("pause");

            break;

        default

            cout << "Please Choose A Valid Option ! : " << endl;
            validOption();

        }
    }

您忘记将 colon 放入您的 case 并且您还需要 return choose.

case 1: 

试试这个:

int userPrompt(){

int choose;

cout << " Please Choose An Option : " << endl;
cout << " Type 1 to Add new grades : " << endl;
cout << " Type 2 to Calculate the average grades : " << endl;
cout << " Type 3 to Calculate the total grades : " << endl;
cout << " Type 4 to Exit : " << endl;    

cin >> choose;
return choose;
}
int main()
{

    int choose = userPrompt();

    switch(choose){

    case 1:
        getGrade();
        userPrompt();
        break;

    case 2:

        int average;
        getGrade();   

        average = total/counter;

        cout << average; 

        break;     

    case 3:

        getGrade();
        cout << total;
        break;

    case 4:

        cout << "Thanks for Trying" << endl;

        return 0;

        system("pause");

        break;

    default:

        cout << "Please Choose A Valid Option ! : " << endl;
        validOption();

    }
}

将代码更改为:

int userPrompt(){  //--> changed into a function returning the choice

    int choose;

    cout << " Please Choose An Option : " << endl;
    cout << " Type 1 to Add new grades : " << endl;
    cout << " Type 2 to Calculate the average grades : " << endl;
    cout << " Type 3 to Calculate the total grades : " << endl;
    cout << " Type 4 to Exit : " << endl;    

    cin >> choose;
    return choose;
}

int main()
{
    //--> declare choose in main and assign a value using the function call
    int choose = userPrompt(); 

    switch(choose){

    case 1:
        getGrade();
        userPrompt();
        break;

    case 2:

        int average;
        getGrade();   

        average = total/counter;

        cout << average; 

        break;     

    case 3:

        getGrade();
        cout << total;
        break;

    case 4:

        cout << "Thanks for Trying" << endl;

        return 0;

        system("pause");

        break;

    default

        cout << "Please Choose A Valid Option ! : " << endl;
        validOption();

    }
}

简单的错误。把冒号放在 case 1: 这样的情况下

`首先初始化选择并尝试。

int choose = o;

C++ 使用 "scope" 转换成 "visibility" 变量。您的 userPrompt() 函数的 "choose" 变量仅在 userPrompt() 函数的范围内 "visible"(触手可及)。

因此您可以将 userPrompt() 函数声明为

int userPrompt() // Returns the user choice
{
    ... // your existing code here
    return choose;
}

然后在 main() 中你会做这样的事情:

int main()
{
  int choice = userPrompt();
  switch(choice)
  ...

在 C++ 中,每个函数都有一个 return 类型。这意味着它将 return 某些东西或 return 无效(即 return 什么都没有)。在你的程序中 userPrompt 没有 return 类型既没有 void 也没有任何其他 return 类型因此这部分是你程序中的第一个错误。 下一个错误是,在 switch 语句中的每个 case 标签之后,该标签后面必须跟一个冒号 ':'