我认为上面的代码在这里没有必要,只是以防万一:
#include <iostream>
#include <stdlib.h>
#include <cmath>
using namespace std;
struct ANKETA1
{
int age;
char gender;
string education;
};
struct ANKETA2
{
char address[55];
int numberOfAdultsInFamily;
};
struct ANKETA
{
ANKETA1 firstAnketa;
ANKETA2 secondAnketa;
};
int main(){
int N;
cout<<"Number of ankets: ";
cin>>N;
cout<<endl;
ANKETA ankets[N];
}
我写的代码:
for(int i = 0; i<N; i++){
cout<<"Anketa #"<<i+1<<endl;
do{
cout<<"Enter your gender ( M - Male, F - Female ) : ";
cin>>ankets[i].firstAnketa.gender;
if(ankets[i].firstAnketa.gender != 'F' || ankets[i].firstAnketa.gender != 'M'){
cout<<"Enter M or F accordingly to your gender"<<endl;}}
while(ankets[i].firstAnketa.gender !='M' && ankets[i].firstAnketa.gender != 'F');
...
我希望这个程序像这样工作:
若用户输入"F"或"M",一切都应该正常,程序将转到下面。但若用户输入了另一封信,程序应该要求他再次输入。
但是这个程序
如果我输入'M'或'F',程序仍然打印:
"根据您的性别输入M或F">
只有在这条消息传到下面之后。
您的OR||
应该是AND&&
。
if(ankets[i].firstAnketa.gender != 'F' || ankets[i].firstAnketa.gender != 'M')
应该是
if(ankets[i].firstAnketa.gender != 'F' && ankets[i].firstAnketa.gender != 'M')
while
循环中的if
检查将始终是您编写的true
。