很多网站初始密码都是“123456”,为保障账号安全,第一次登录会强制修改密码为加强密码,已知某网站加强密码需要同时满足以下规定:长度为6-16;必须同时包含大写字母、小写字符、数字和特殊符号;首位必须为大写字母。 请你编写一个程序,判断用户设置的密码是否为加强密码。 输入格式: 输入第一行为一个整数T(1<=T<=20),代表测试数据的组数,随后T行,每行都是由小写字母、大写字母、数字、特殊符号组成的一串字符s,长度不超过20,特殊符号有且仅有@、#、$、%、^、&、*。 输出格式: 输出每行字符串是否为加强密码,是,输出“Yes”,不是,输出“No”,每组输出占一行。 用c语言完成
时间: 2024-03-10 16:48:10 浏览: 24
```c
#include <stdio.h>
#include <string.h>
int check_password(char* s) {
int len = strlen(s);
if (len < 6 || len > 16) {
return 0;
}
if (s[0] < 'A' || s[0] > 'Z') {
return 0;
}
int has_upper = 0, has_lower = 0, has_digit = 0, has_special = 0;
for (int i = 0; i < len; i++) {
if (s[i] >= 'A' && s[i] <= 'Z') {
has_upper = 1;
} else if (s[i] >= 'a' && s[i] <= 'z') {
has_lower = 1;
} else if (s[i] >= '0' && s[i] <= '9') {
has_digit = 1;
} else if (s[i] == '@' || s[i] == '#' || s[i] == '$' || s[i] == '%' || s[i] == '^' || s[i] == '&' || s[i] == '*') {
has_special = 1;
}
}
if (has_upper && has_lower && has_digit && has_special) {
return 1;
} else {
return 0;
}
}
int main() {
int t;
scanf("%d", &t);
while (t--) {
char s[21];
scanf("%s", s);
if (check_password(s)) {
printf("Yes\n");
} else {
printf("No\n");
}
}
return 0;
}
```