题解 | #密码检查#
密码检查
https://www.nowcoder.com/practice/f2fbd8f61c564ca0b5feaa63ab42dae5
#include <stdio.h> #include <string.h> int main() { int x; char n[100] = {0}; scanf("%d", &x); while (x--) { //逻辑上没问题,因为是 多组输入、数组长度和两种字符,所以都要放循环 scanf("%s", n); int flag1 = 0, flag2 = 0, flag3 = 0; int len = strlen(n); //第一个为数字和最少长度为8 if (n[0] >= '0' && n[0] <= '9' || len < 8) { printf("NO\n"); } else { //任意两种即可 for (int i = 0; i < len; i++) { //3种情况之外 if (n[i] < 48 || n[i] >= 58 && n[i] <= 64 || n[i] >= 91 && n[i] <= 96 ||n[i] > 122) { printf("NO\n"); } else { if (n[i] >= 'a' && n[i] <= 'z') { flag1 = 1; } if (n[i] >= 'A' && n[i] <= 'Z') { flag2 = 1; } if (n[i] >= '0' && n[i] <= '9') { flag3 = 1; } } } //满足条件输出YES if ((flag1 + flag2 + flag3) >= 2) printf("YES\n"); else //测试用例不够,如果只有全是一种字符的情况,不输出 printf("NO\n"); } } return 0; }