C ++“while”解释

时间:2011-06-18 03:27:47

标签: c++

我不太确定while(选择== 1 ||选择== 2); 任何人都可以解释我理解这个

if(choice ==1)
    displayMonthly(rainfall);
else if(choice == 2)
    displayTotal(rainfall);

我只是不明白这之后的代码。任何人都可以向我解释。

int main()
{
    //declare variable and array
    int choice = 0;
    double rainfall[12] = {0.0};

    //get rainfall amounts
    for(int x =0;x<12;x++)
    {
        cout << "Enter rainfall for month "<< x+1<< ": ";
        cin >> rainfall[x];
    }

    do
    {
        //display menu and get menu choice
        cout <<endl;
        cout << "1  Display monthly amounts" << endl;
        cout << "2  Display total amount" << endl;
        cout << "3  End program" << endl;
        cout << "Enter your choice : ";
        cin >> choice;

        //call appropriate function or end program
        if(choice ==1)
            displayMonthly(rainfall);
        else if(choice == 2)
            displayTotal(rainfall);
    }while (choice == 1 || choice ==2);

    return 0;
}

4 个答案:

答案 0 :(得分:3)

只要选择为1或2,它就会告诉你保持循环,但它与if语句完全分开。

也可以编码为

while(true) {
    cout stuff...

    if(choice==1)
        ...
    else if(choice==2)
        ...
    else
        break;
}

这可能会更具可读性,但是如果他们看到的话,一些老学生会发现它们(真实的) - 过去常常被人们视为一个巨大的红旗,表明潜在的错误(显然是任何完全无法做到的人)分析代码,因为功能没有区别。)

答案 1 :(得分:1)

这是一个do ... while循环。我们的想法是,只要条件(choice == 1 || choice ==2)为真,块内的代码就会继续执行。

以下是来自cplusplus.com article on Control Structures

的更多信息
  

在(条件);

时做声明      

它的功能与while循环完全相同,只是do-while循环中的条件是在执行语句之后而不是之前计算的,即使条件永远不会满足也至少执行一次语句。例如,以下示例程序会回显您输入的任何数字,直到输入0。

     

当在循环语句本身内确定必须确定循环结束的条件时,通常使用do-while循环,就像前一种情况一样,块中的用户输入是用于确定的内容如果循环必须结束。实际上,如果您在上一个示例中从未输入值0,则可以提示您永久保留更多数字。

你也可以这样思考。如果您始终希望块中的代码至少执行一次,则可以使用do-while结构。这是你的程序中的情况,因为你总是想要显示提示,并且只能决定在你收到并处理用户输入后循环是否会继续。

答案 2 :(得分:0)

在此应用中,如果用户点击1或2,则表示他们希望看到每月或总降雨量。这意味着他们没有要求“结束计划”。该代码假定如果用户选择1或2,则应继续使用该应用程序。如果他们选择了其他任何东西(例如。3,就像菜单上所说的那样)那么条件choice == 1 || choice == 2将评估为false并且循环终止,导致应用程序关闭。

答案 3 :(得分:0)

基本上这里的do ... while循环只要选择为1或2就会不断重复自我。

在'do'之后,提示用户输入他们的选择,1 2或3.如果他们选择1或2,则调用他们各自的功能。然后循环重复。如果他们选择3,则循环不会重复,因此程序结束。

希望这有帮助!