如何使用嵌套的if语句检查char数组?

时间:2015-04-16 04:50:21

标签: c++ if-statement

你可能会告诉我试图引入一个计数器来确定某个字符串中有多少辅音,但输出总是50,除非涉及到空格。

int main(){
char input[50];
int total = 0;
cout << "Enter a string of no more than 50 characters\n";
cin.getline(input,50);

for(int n = 0; n<50;n++){
    if(input[n]!='a',input[n]!='A',input[n]!='e',input[n]!='E',input[n]!='i',input[n]!='I',input[n]!='o',input[n]!='O',input[n]!='u',input[n]!='U',input[n]!=' ')
    total++;}

cout << total << endl;}

2 个答案:

答案 0 :(得分:3)

根据wikipedia,逗号运算符定义如下

  

在C和C ++编程语言中,使用逗号运算符   (由标记表示)是一个二进制运算符,用于计算它   第一个操作数并丢弃结果,然后计算第二个操作数   操作数并返回此值(和类型)。

在您的情况下,您应该使用逻辑AND(&amp;&amp;)而不是逗号操作。 更有效率,您可以像这样重写代码

char c = tolower(input[n]);
if (c >= 'a' && c <= 'z' && c != 'a' && c != 'e' && c != 'i' && c != 'o' && c !='u')
    total++;

它将包括所有案例。

答案 1 :(得分:1)

正如每个人都清楚解释的那样,你需要使用&amp;&amp;操作员确保检查所有条件。

    if(input[n]!='a' && input[n]!='A' && input[n]!='e' && input[n]!='E' && input[n]!='i' && input[n]!='I' && input[n]!='o' && input[n]!='O' && input[n]!='u' && input[n]!='U' && input[n]!=' '){
    total++;
}

避免多次检查的一项建议: 将字符提取为转换为大写或小写的变量。

char c = input[n] | 32;

关于&#39;,&#39;用过的;此计划可能会提供更多见解以及WIKI共享:

void main(){
    int a=-1;
    if(++a,a, a++){ // Works like "||"
       printf("Yes %d",a); 
    }else {
       printf("NO %d", a);
    } 
}
  

输出:NO 1