【问题标题】:Error in counter variable?计数器变量错误?
【发布时间】:2012-09-17 14:19:09
【问题描述】:

我有一个关于此编码中的故障的快速问题。

当我运行这个程序并进入这个循环时(通过输入 1 作为数字),一切都很顺利,除了即使我在循环体中输入了++generalcounter1;,它似乎没有添加每次循环播放时这个变量都有一个。当变量 == 10 时,它永远不会运行它应该运行的消息。

请帮帮我,我很沮丧!非常感谢您的建议!

抱歉,如果不清楚,我是这个网站的新手,也是编程新手。

while (number == 1){
 int addend1;
 int addend2;
 int sum;
 int answer1;
 int generalcounter1 = 0;
 int reply1;

 ++generalcounter1;

 addend1 = 1 + rand() % 50;
 addend2 = 1 + rand() % 50;

 sum = (addend1 + addend2);

 cout << "\nWhat is " << addend1 << " plus " << addend2 << "? ";
 cin >> answer1;

 if (answer1 == sum){
     reply1 = winstatement(); 
 }          
 else{
     reply1 = losestatement();
 }

 if (generalcounter1 == 10){

     if (rightanswers >= 8){
        cout << "\nCongratulations, you are ready to go to the next level!\n" << endl;
     }
     else{
        cout << "\nPlease ask your teacher for extra help.\n" << endl;
     }  
  }   
}

【问题讨论】:

  • 您应该真的尝试正确格式化您的代码,就像 Bob 编辑的那样。我永远不会接触格式那么差的代码。
  • 我猜这行无论如何都不会输出,因为 rightanswers 变量没有在其他地方声明:cout

标签: c++ pearson


【解决方案1】:

您在循环的每次迭代中声明一个新的generalcounter1,将其递增,并在迭代结束时将其销毁。将声明移到循环之外,每次只增加一个,而不是每次增加一个新的,在它增加两次之前就被销毁。

int generalcounter1 = 0;
while (number == 1) { 
    //loop body
}

【讨论】:

  • 非常感谢!我现在感觉自己像个白痴。我会尽快改变这一点!
  • @user1691432,我记得做这个确切的问题。无论是书还是我的老师都宣称制作了一个倒计时的计时器,这样你就有了回答它的时间限制。太糟糕了,没有标准的方法来做到这一点。
  • @SethCarnegie,那是在我发现 C++11 之前的一段时间,但我说的是非阻塞输入函数。我想我用过kbhit,但我能找到的最接近的说法是_getch 在某种程度上是ISO。
  • @user1691432 如果此答案回答了您的问题,请单击其左上角的复选标记将此问题标记为已回答。
  • @chris 哦,对不起,我的对话不同步。是的,很糟糕,我们没有非阻塞 IO,希望它会被添加。
猜你喜欢
  • 2019-03-10
  • 2018-05-28
  • 1970-01-01
  • 2019-04-19
  • 2021-08-24
  • 2014-11-15
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多