今天,小雅兰来做一道题
这道题只需要将字符串从头到尾的每种字符(大写字符、小写字符、数字、其他字符)分别统计出来之后,然后逐个判断是否符合条件即可。而条件的判断包括有:
- 长度不小于8
- 不能以数字开头
- 只能包括字母和数字
- 大小写和字符必须具备两种以上
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int n = 0; while (scanf("%d", &n) != EOF) { int i = 0; for (i = 0; i < n; i++) { char password[101] = { 0 }; int upper = 0; int lower = 0; int digit = 0; int other = 0; scanf("%s", password);//捕捉输入的密码 if (strlen(password) < 8)//密码长度小于8 { printf("NO\n"); continue; } if (password[0] >= '0' && password[0] <= '9') { //密码以数字开头 printf("NO\n"); continue; } char* ptr = password; while (*ptr != '\0') { if (*ptr >= 'a' && *ptr <= 'z') { lower++; } else if (*ptr >= 'A' && *ptr <= 'Z') { upper++; } else if (*ptr >= '0' && *ptr <= '9') { digit++; } else { other++; } ptr++; } if (other > 0) { //有其他字符 //题目要求:密码只能有数字和字母组成 printf("NO\n"); continue; } //题目要求:大写字符、小写字符、数字必须具有两种以上 //比较运算:真为1,假为0 if ((upper > 0) + (lower > 0) + (digit > 0) < 2) { //此代码表示密码只有一种字符 printf("NO\n"); continue; } printf("YES\n"); } } return 0; }
嘿嘿,今天内容很少噢,但还是要加油学习,加油刷题,考试不挂科!!!