C语言实现密码检查
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
这道题目并不算难实现时可能会写出一些bug需要耐心去调试。有两种方法首先这些题目要求可以频繁使用字符串的库函数这里不介绍这些库函数我的方法是直接比较阿斯克码值的大小进行删选频繁使用if语句。代码如下
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char arr[101] = { 0 };
int n = 0;
scanf("%d", &n); //输入要检查的密码的个数
getchar();
for (int i = 0; i < n; i++)
{
int a = 0;
int b = 0;
int c = 0;
int flag = 0;
scanf("%s", arr);
getchar(); //吸收回车键
for (int j = 0; j < strlen(arr); j++)
{
if (strlen(arr) < 8) //4. 密码长度至少为8
{
flag = 1;
printf("NO\n");
break;
}
if ((arr[0] > '0') && (arr[0] < '9')) //2.密码不能以数字开头
{
flag = 1;
printf("NO\n");
break;
}
if (!(((arr[j] >= '0') && (arr[j] <= '9')) || ((arr[j] >= 'A') && (arr[j] <= 'Z')) || ((arr[j] >= 'a') && (arr[j] <= 'z')))) //1.密码只能由大写字母小写字母数字构成
{
flag = 1;
printf("NO\n");
break;
}
if ((arr[j] > '0') && (arr[j] < '9'))
{
a = 1;
}
if ((arr[j] > 'A') && (arr[j] < 'Z'))
{
b = 1;
}
if ((arr[j] > 'a') && (arr[j] < 'z'))
{
c = 1;
}
if ((j == strlen(arr) - 1) && (a + b + c < 2)) //3. 密码中至少出现大写字母小写字母和数字这三种字符类型中的两种
{
flag = 1;
printf("NO\n");
break;
}
}
if (flag == 0)
{
printf("YES\n");
}
}
system("pause");
return 0;
}