密码是否符合要求
时间限制: 20 Sec 内存限制: 128 MB题目描述
随着网络信息化应用的不断推进,信息系统网络安全问题越来越被重视。在网络和系统安全领域中,密码这种方式是其中最普遍的认证方式。对于系统安全来说,使用复杂的密码是网络密码安全措施最简单有效的手段。某系统规定用户的密码长度和复杂度必须满足下条件。
1、 密码由英文大小写字母、数字及特殊符号组成。其中特殊符号只能是:
@ # $ % ^ & * + / = ! ? - _ ( )
2、至少8个字符,最长20个字符。
3、密码必须包含下列类型中的任意3类:1)大写字母; 2)小写字母; 3)数字; 4)特殊字符。
请编写一段程序,用于验证密码是否符合要求。
输入
字符串一行或多行,每行一个密码,如My#Password
输出
字符串一行或多行,对应密码是否符合要求,true或false
样例输入
This8Password
Pass123
Pass123
样例输出
true
false
false
提示
ok
地区
公共
难度
1级
点击(此处)折叠或打开
- #include<stdio.h>
- #include<string.h>
- #include<ctype.h>
-
- char str[20][21]={0};
- int i=0,n;
-
- //检查是否是特殊字符
- int vaSpeStr(char ch){
- if(ch=='@'||ch=='#'||ch=='$'||ch=='%'||ch=='^'||ch=='&'||ch=='*'||ch=='+'||ch=='/'||ch=='='||ch=='!'||ch=='?'||ch=='-'||ch=='_'||ch=='('||ch==')')
- return 1;
- else return 0;
- }
-
- //检查长度是否满足要求
-
- int valen(char *str){
- size_t len = strlen(str);
- if(len>=8&&len<=20)
- return 1;
- else
- return 0;
- }
-
- int vaLegal(char *str){ //字符是否合法
- for(int i=0;i<=21;i++){
- int n1=isalnum(str[i]);
- int n2=vaSpeStr(str[i]);
- if(n1!=0||n2!=0)
- return 1;
- else return 0;
- }
- }
-
-
- //判断是否包括下列类型中的任意3类:1)大写字母isupper; 2)小写字母islower; 3)数字; 4)特殊字符。
- int vaType(char str[]){
- int upperNum=0; //计数器要放到方法里面来,不能做全局变量,否则在输入第二行数据后计数器未清零,会导致字符串不在判断 任意3类
- int lowerNum=0;
- int digitNum=0;
- int SpestrNum=0;
- for(int i=0;i<20;i++){
- int n1= isupper(str[i]);
- int n2= islower(str[i]);
- int n3= isdigit(str[i]);
- int n4= vaSpeStr(str[i]);
-
- if(n1!=0)
- upperNum++;
- else if(n2!=0)
- lowerNum++;
- else if(n3!=0)
- digitNum++;
- else if(n4!=0)
- SpestrNum++;
- }
-
- if(upperNum!=0&&lowerNum!=0&&digitNum!=0)
- return 1;
- else if(upperNum!=0&&lowerNum!=0&&SpestrNum!=0)
- return 1;
- else if(upperNum!=0&&digitNum!=0&&SpestrNum!=0)
- return 1;
- else if(lowerNum!=0&&digitNum!=0&&SpestrNum!=0)
- return 1;
- else return 0;
- }
-
- int main(){
- char judge;
- gets(str[i]);
-
- while((judge = *str[i]) != '0') {
- gets(str[++i]);
- n = i;
- }
- for(i=0;i<n;i++) {
- int n1= valen(str[i]);
- int n2= vaType(str[i]);
- int n3= vaLegal(str[i]);
- if(n1==0||n2==0||n3==0)
- puts("false");
- else
- puts("ture");
- }
- return 0;
- }
相关热门文章
给主人留下些什么吧!~~
评论热议