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

时间:2015-03-25 07:57:18

标签: c++ function nested switch-statement

我希望有一个名为“userPrompt”的函数,并要求用户为名为“choose”的整数输入一个值,以便之后我可以使用switch语句。

但它没有用,它说:“选择”未宣布。

我想它首先启动main函数,并且在其中第一个命令将初始化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();

        }
    }

5 个答案:

答案 0 :(得分:1)

C ++使用&#34;范围&#34;哪种转化为&#34;可见性&#34;变量。 &#34;选择&#34;你的userPrompt()函数的变量只有&#34;可见&#34; (在触及范围内)userPrompt()函数的范围内。

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

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

然后在main()中你会做类似的事情:

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

答案 1 :(得分:0)

您忘记将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();

    }
}

答案 2 :(得分:0)

将代码更改为:

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();

    }
}

答案 3 :(得分:0)

简单的错误。将冒号放在case 1:这样的案例中

`首先初始化选择然后尝试。

int choose = o;

答案 4 :(得分:0)

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