如何正确地检查变量char中包含的字母

  • 本文关键字:包含 char 变量 正确地 c++
  • 更新时间 :
  • 英文 :


我认为上面的代码在这里没有必要,只是以防万一:

#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

最新更新