密码是否符合要求

 密码是否符合要求

时间限制:  20 Sec   内存限制:  128 MB

题目描述

    
    随着网络信息化应用的不断推进,信息系统网络安全问题越来越被重视。在网络和系统安全领域中,密码这种方式是其中最普遍的认证方式。对于系统安全来说,使用复杂的密码是网络密码安全措施最简单有效的手段。某系统规定用户的密码长度和复杂度必须满足下条件。
1、 密码由英文大小写字母、数字及特殊符号组成。其中特殊符号只能是:
@ # $ % ^ & * + / = ! ? - _ ( )
2、至少8个字符,最长20个字符。
3、密码必须包含下列类型中的任意3类:1)大写字母; 2)小写字母; 3)数字; 4)特殊字符。
请编写一段程序,用于验证密码是否符合要求。

输入

    字符串一行或多行,每行一个密码,如My#Password

输出

    字符串一行或多行,对应密码是否符合要求,true或false

样例输入

This8Password
Pass123

样例输出

true
false

提示

ok

地区

公共

难度

1级


点击(此处)折叠或打开

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<ctype.h>

  4. char str[20][21]={0};
  5. int i=0,n;

  6. //检查是否是特殊字符
  7. int vaSpeStr(char ch){
  8.     if(ch=='@'||ch=='#'||ch=='$'||ch=='%'||ch=='^'||ch=='&'||ch=='*'||ch=='+'||ch=='/'||ch=='='||ch=='!'||ch=='?'||ch=='-'||ch=='_'||ch=='('||ch==')')
  9.         return 1;
  10.     else return 0;
  11. }

  12. //检查长度是否满足要求

  13. int valen(char *str){    
  14.     size_t len = strlen(str);
  15.     if(len>=8&&len<=20)
  16.         return 1;
  17.     else
  18.         return 0;
  19. }

  20. int vaLegal(char *str){            //字符是否合法
  21.     for(int i=0;i<=21;i++){
  22.         int n1=isalnum(str[i]);
  23.         int n2=vaSpeStr(str[i]);
  24.         if(n1!=0||n2!=0)
  25.             return 1;
  26.         else return 0;
  27.     }
  28. }


  29. //判断是否包括下列类型中的任意3类:1)大写字母isupper; 2)小写字母islower; 3)数字; 4)特殊字符。
  30. int vaType(char str[]){
  31.     int upperNum=0;            //计数器要放到方法里面来,不能做全局变量,否则在输入第二行数据后计数器未清零,会导致字符串不在判断 任意3类
  32.     int lowerNum=0;
  33.     int digitNum=0;    
  34.     int SpestrNum=0;
  35.     for(int i=0;i<20;i++){
  36.         int n1= isupper(str[i]);
  37.         int n2= islower(str[i]);
  38.         int n3= isdigit(str[i]);
  39.         int n4= vaSpeStr(str[i]);
  40.     
  41.     if(n1!=0)
  42.             upperNum++;
  43.     else if(n2!=0)
  44.             lowerNum++;
  45.     else if(n3!=0)
  46.             digitNum++;
  47.     else if(n4!=0)
  48.             SpestrNum++;
  49.     }
  50.                 
  51.     if(upperNum!=0&&lowerNum!=0&&digitNum!=0)
  52.         return 1;
  53.     else if(upperNum!=0&&lowerNum!=0&&SpestrNum!=0)
  54.         return 1;
  55.     else if(upperNum!=0&&digitNum!=0&&SpestrNum!=0)
  56.         return 1;
  57.     else if(lowerNum!=0&&digitNum!=0&&SpestrNum!=0)
  58.         return 1;
  59.     else return 0;                
  60. }

  61. int main(){
  62.     char judge;
  63.     gets(str[i]);
  64.     
  65.     while((judge = *str[i]) != '0') {
  66.      gets(str[++i]);                
  67.           n = i;
  68.     }
  69.     for(i=0;i<n;i++) {                
  70.         int n1= valen(str[i]);
  71.         int n2= vaType(str[i]);
  72.         int n3= vaLegal(str[i]);
  73.         if(n1==0||n2==0||n3==0)
  74.             puts("false");
  75.         else
  76.             puts("ture");
  77.     }
  78.     return 0;
  79. }





<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(730) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值