如何使用嵌套的 if 语句检查字符数组

how to check char array with nested if statement?

本文关键字:检查 字符 数组 语句 if 何使用 嵌套      更新时间:2023-10-16

正如您可能能够告诉我的那样,我试图引入一个计数器来表示某个字符串中有多少辅音,但输出始终为 50,除非涉及空格。

int main(){
char input[50];
int total = 0;
cout << "Enter a string of no more than 50 charactersn";
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;}

根据维基百科,逗号运算符定义如下

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

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

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

它将包括所有情况。

正如每个人都清楚地解释的那样,您需要使用 && 运算符来确保检查所有条件。

    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;

关于使用的",";该程序可能会提供更多见解以及共享的WIKI:

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

输出:否 1