只用C语言的分支和循环编写一个密码校验程序
时间: 2024-10-12 15:16:11 浏览: 25
c语言分支和循环语句笔记.txt
当然可以。下面是一个简单的密码校验程序示例,它只使用C语言的基本控制结构如if-else分支和for循环。这个程序会检查输入的密码是否满足长度要求,并包含大小写字母、数字和特殊字符。
```c
#include <stdio.h>
#include <ctype.h>
#define PASSWORD_LENGTH 8 // 密码最小长度
#define ALLOWED_CHARS "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()" // 允许的字符集
int main() {
char password[PASSWORD_LENGTH + 1]; // 包含结束符'\0'
int i, has_uppercase = 0, has_lowercase = 0, has_digit = 0, has_special_char = 0;
printf("请输入密码: ");
fgets(password, PASSWORD_LENGTH + 1, stdin); // 读取用户输入并包括结束符
password[strlen(password) - 1] = '\0'; // 删除可能存在的换行符
for (i = 0; i < strlen(password); i++) {
if (isupper(password[i])) { // 检查大写字母
has_uppercase = 1;
} else if (islower(password[i])) { // 检查小写字母
has_lowercase = 1;
} else if (isdigit(password[i])) { // 检查数字
has_digit = 1;
} else if (strchr(ALLOWED_CHARS, password[i]) != NULL) { // 检查特殊字符
has_special_char = 1;
}
}
// 分支判断密码是否有效
if (strlen(password) >= PASSWORD_LENGTH && has_uppercase && has_lowercase && has_digit && has_special_char) {
printf("密码有效。\n");
} else {
printf("密码无效。请确保密码至少 %d 位长,包含大写字母、小写字母、数字和特殊字符。\n", PASSWORD_LENGTH);
}
return 0;
}
阅读全文