用c语言:很多网站初始密码都是“123456”,为保障账号安全,第一次登录会强制修改密码为加强密码,已知某网站加强密码需要同时满足以下规定:长度为6-16;必须同时包含大写字母、小写字符、数字和特殊符号;首位必须为大写字母。 请你编写一个程序,判断用户设置的密码是否为加强密码。 输入格式: 输入第一行为一个整数T(1<=T<=20),代表测试数据的组数,随后T行,每行都是由小写字母、大写字母、数字、特殊符号组成的一串字符s,长度不超过20,特殊符号有且仅有@、#、$、%、^、&、*。 输出格式: 输出每行字符串是否为加强密码,是,输出“Yes”,不是,输出“No”,每组输出占一行。
时间: 2024-03-17 22:47:21 浏览: 123
以下是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
int is_strong_password(char* password) {
// 检查长度是否在 6-16 之间
int length = strlen(password);
if (length < 6 || length > 16) {
return 0;
}
// 检查首位是否为大写字母
if (password[0] < 'A' || password[0] > 'Z') {
return 0;
}
// 检查是否同时包含大写字母、小写字母、数字和特殊符号
int has_uppercase = 0;
int has_lowercase = 0;
int has_digit = 0;
int has_special = 0;
for (int i = 0; i < length; i++) {
char c = password[i];
if (c >= 'A' && c <= 'Z') {
has_uppercase = 1;
} else if (c >= 'a' && c <= 'z') {
has_lowercase = 1;
} else if (c >= '0' && c <= '9') {
has_digit = 1;
} else if (c == '@' || c == '#' || c == '$' || c == '%' || c == '^' || c == '&' || c == '*') {
has_special = 1;
}
}
if (!has_uppercase || !has_lowercase || !has_digit || !has_special) {
return 0;
}
return 1;
}
int main() {
int T;
scanf("%d", &T);
for (int i = 0; i < T; i++) {
char password[21];
scanf("%s", password);
if (is_strong_password(password)) {
printf("Yes\n");
} else {
printf("No\n");
}
}
return 0;
}
```
代码首先定义了一个 `is_strong_password` 函数,该函数接受一个密码字符串作为参数,返回一个整数表示该密码是否为加强密码。函数中,我们分别检查了密码的长度、首位字符、以及是否同时包含大写字母、小写字母、数字和特殊符号。如果满足以上条件,就认为该密码是加强密码,返回 1,否则返回 0。
主函数中,我们先读入测试数据的组数 T,然后对于每一组数据,读入一个密码字符串,调用 `is_strong_password` 函数进行判断,根据返回值输出结果即可。
阅读全文