我已经用C ++进行编码了整整几天,所以请像我小时候一样跟我说话。有了这种方式,
我制定了一个简短的算法,询问一组问题(要回答0表示否,回答1表示是)并将用户的答案存储为整数。只要用户仅输入整数(或者在一种情况下为无空格的字符串),一切都会按预期进行。
但是,如果输入与变量类型不匹配,则程序会立即输出此无限循环,该无限循环将在程序稍后出现。该循环应该打印一个问题,等待输入,然后再次询问答案是否不是“ 1”,但是在失败状态下,它只会打印问题而没有结束。我看不出任何先前的问题与之相关的原因。如果这是一个线索,它不会在随后的问题上发生。
这是我的代码的精简版,希望所有重要信息完整无缺:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int answer1;
string answer1C;
int answer2;
int answer2B;
int score;
score = 0;
cout << "Question 1" << endl;
cin >> answer1;
if (answer1 == 1)
{
++score;
//some other questions go here
cout << "Question 1C" << endl;
cin >> answer1C;
if (answer1C.size() == 6)
{
++score;
}
}
cout << "Question 2" << endl;
cin >> answer2;
if (answer2 == 0)
{
cout << "Question 2B" << endl;
cin >> answer2B;
if (answer2B == 0)
{
--score;
}
while (answer2B != 1) //Here is the infinite loop.
{
cout << "Question 2B" << endl;
cin >> answer2B;
}
}
cout << "Question 3" << endl;
//and so on
return 0;
}
我希望它接受 any 输入,并且仅在碰巧符合指定条件时才执行后续步骤:例如,在问题1.2中,它仅 如果答案是长度为6的字符串,则奖励一个分数,否则不做任何事;或问题2.1,它对不是'1'的任何输入重复该问题,然后继续输入。
但是无论如何,我都需要它在失败时做其他事情。请帮助我弄清楚为什么会这样。谢谢。