题目描述
用于密码的英文字符被分为四种:(1)字母(2)数字(3)英文标点符号(4)其他所有英文字符。
其中,标点符号包括: ?!.,'";:`_-()[]/*
现在用户输入一行字符作为密码,程序判断其强度。规则为:(1)密码长度小于8为弱密码,判定为"weak";(2)密码长度大于等于8,且只包含一种字符也为弱密码;(3)密码长度大于等于8,且包含两种字符为中等密码,判定为"medium";(3)密码长度大于等于8,且包含三种字符为强密码,判定为"good";(4)密码长度大于等于8,且包含四种字符为极强密码,判定为"excellent"
输入格式
一行英文字符串,长度小于128,作为要判定的密码
输出格式
密码的强度等级
#include <stdio.h>
#include <math.h>
#include <string.h>
const char *punctuation="?!.,'\";:`_-()[]/*"; //这个重要
int num(char str[130])
{
int i;
int len=strlen(str);
int a=0,b=0,c=0,d=0;
for(i=0;i<len;i++)
{
char ch=str[i];
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
{
a=1;
}else if(str[i]>='0'&&str[i]<='9')
{
b=1;
}else if(strchr(punctuation,ch)!=NULL) //这个重要
{
c=1;
}else{
d=1;
}
}
int sum=a+b+c+d;
return sum;
}
int main()
{
char str[130];
gets(str);
int len=strlen(str);
if(len<8)
{
printf("weak");
}else{
int end=num(str);
if(end==1)
{
printf("weak");
}
if(end==2)
{
printf("medium");
}
if(end==3)
{
printf("good");
}
if(end==4)
{
printf("excellent");
}
}
return 0;
}