出于某种奇怪的原因,我无法摆脱要求输入答案的循环,任何帮助都会很棒:
#include <iostream>
using namespace std;
int main(){
const int TEST=20;
char crctAnswrs[TEST]={'B', 'D', 'A', 'A', 'C',
'A', 'B', 'A', 'C', 'D',
'B', 'C', 'D', 'A', 'D',
'C', 'C', 'B', 'D', 'A'};
char stdntAnswer[TEST];
for(int index=0; index<TEST; index++){
do{
cout<<"Please enter the answer for question #"<<(index+1)<<": ";
cin.ignore();
char input;
cin.get(input);
stdntAnswer[index]=input;
if(stdntAnswer[index]!='A' && stdntAnswer[index]!='B' &&
stdntAnswer[index]!='C' && stdntAnswer[index]!='D'){
cout<<"Please enter A, B, C, or D as an answer."<<endl;
}
}while(stdntAnswer[index]!='A' && stdntAnswer[index]!='B' &&
stdntAnswer[index]!='C' && stdntAnswer[index]!='D');
}
}
编辑:更改了条件,我在此示例中输入错误。现在每个条件都有 != 问题是一样的,它不能跳出循环。我认为如果其中一个条件为假,则整个条件集为假,从而导致它跳出循环......但是,它仍然循环并且如果我输入 A,B 仍然会显示验证消息、C 或 D.... 是 cin.get() 吗?我不想使用 getline() 因为这不是本书要求做的。