为什么第二个代码给出了预期的结果而第一个却没有?

时间:2020-01-21 17:29:07

标签: c++ function c++11 command-line

使用函数时,我得到的期望结果是:-

1)命令窗口要求我每次输入一次,因此我可以根据需要多次输入“ q”,甚至可以输入“ e”退出

2)每次我按'q'分数都会降低1

在没有功能的代码中会发生以下情况:-

1)我按“ q”,分数会无限期降低

2)输入“ q”后就无法再输入“ e”之类的输入

 #include<iostream>

 using namespace std;

 int main()
{
 char h;
 cin>>h;
 int n = 10;

 do{
    system("cls");
    cout<<"score is"<<n;        
    if(h == 'q')
    {
        n=n-1;
    }

}while(h != 'e');
return 0;

}

具有功能的代码2:-

    #include<iostream>

    using namespace std;

    char input;
    int n = 10;
    bool over = false;
    void ip()
    {       
        system("cls");  
        cout<<"score is"<<n;
        cin>>input;
        switch(input)
       {
           case 'q':
           n--;
           break;

           case 'e':
           over = true;
           break;
       }
    }

    int main()
    {

        do{     
            ip();       
        }while(!over);
        return 0;
     } 

请向我解释程序如何通过函数循环,以及如何仅通过'IF'语句循环。因为函数中也有条件语句(切换语句),所以为什么函数不无限地降低分数或'n'的值呢?

1 个答案:

答案 0 :(得分:1)

我在第一个代码(没有函数)中发现了我的错误,cin>>语句应该位于do-while循环内,以便在每次循环输入后都被请求。