用C语言如何判断一个字符串中所含的字符

给定一个字符串,如何判断它是否至少包括如下三姐字符里的两组中的字符:(0宇母;(2) 数字;(3)持殊字符:,,,$,%,,8,*。若是输出Y,否则输出n

这个你可以用三个变量记录每一种的个数

#include <stdio.h>

int main() {
    char str[100];
    int a = 0, b = 0, c = 0;
    
    printf("请输入一个字符串:");
    fgets(str, sizeof(str), stdin);
    
    // 统计字符个数
    for (int i = 0; str[i] != '\0'; i++) {
        if ('A'<=str[i] && str[i] <= 'Z')
            a++;
        else if ('a'<=str[i] && str[i] <= 'z')
            a++;
        else if ('0'<=str[i] && str[i] <= '9')
            b++;
        else
            c++;
    }
    
    if ((a != 0 && b != 0) || (a != 0 && c != 0) || (b != 0 && c != 0))
        printf("Y");
    else
        printf("N");
    
    return 0;
}

声明一个字符数组来存储字符串,例如:char str[100];
使用scanf或gets函数从用户输入中获取字符串,例如:scanf("%s", str);
声明三个布尔型变量来表示三个字符是否出现,例如:bool hasAlpha = false, hasDigit = false, hasSpecial = false;
使用for循环遍历字符串中的每个字符,例如:for (int i = 0; str[i] != '\0'; i++)
在循环中,使用条件语句判断字符的类型,并将对应的布尔变量置为true,例如:

if (isalpha(str[i])) {
    hasAlpha = true;
} else if (isdigit(str[i])) {
    hasDigit = true;
} else if (str[i] == ',' || str[i] == '$' || str[i] == '%' || str[i] == '&' || str[i] == '*' || str[i] == '@') {
    hasSpecial = true;
}

最后,使用条件语句判断三个布尔变量的值,如果至少有两个为true,则输出"Y",否则输出"n",例如:

if (hasAlpha + hasDigit + hasSpecial >= 2) {
    printf("Y\n");
} else {
    printf("n\n");
}

这样就可以判断一个字符串是否至少包括指定的字符,并输出相应的结果。