贺州学院ivy


私信TA

用户名:Livy

访问量:22606

签 名:

好好学习,天天向上,汝何秀?

等  级
排  名 135
经  验 7530
参赛次数 5
文章发表 25
年  龄 0
在职情况 学生
学  校 贺州学院
专  业 软件工程

  自我简介:

假猪套天下第一

解题思路:

题目要求:

(1).密码长度大于等于8,且不要超过16。 

(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。 
这四个字符类别分别为: 
1.大写字母:A,B,C...Z; 
2.小写字母:a,b,c...z; 
3.数字:0,1,2...9; 
4.特殊符号:~,!,@,#,$,%,^; 
给你一个密码,你的任务就是判断它是不是一个安全的密码。






这里不需要用到数组,用一个字符变量即可,节省空间提高效率

char ch;


//x  代表包含大写字母    y  代表包含小写字母
 //z  代表包含数字        k  代表包含特殊字符
 
 int  x = 0, y = 0, z = 0, k = 0;

 
当当前字符符合那四个条件中的一个,相应的条件变量x,y,z,k就会等于 1,表示包含当输入换行符结束输入,也就是要判断yes或no了
最后判断  x+y+z+k的和是不是大于等于3,即x+y+z+k>=3
只要>=3,就说明是一定满足包含三个或者四个条件的


也还要判断密码位数是否符合条件就可以了




注意事项:



参考代码:



#include<iostream>

using namespace std;

//判断当前字符是不是符合第四个条件,即判断当前字符是不是特殊符号,是就返回1,否则返回0

int f(char a){

    if (a == '~' || a == '!' || a == '@' || a == '#' || a == '$' || a == '%' || a == '^'){

    return 1;

    }

    else{

     return 0;

    }

}



int main(){

     int n;//输入多少个字符串的个数

  

    while ((scanf("%d", &n))!= EOF){

       getchar();//吃掉输入数字按下回车的字符,否则如输入3,按下回车后,到下面输入ch的时候,ch接收的就是‘\n’了,就相当于 ch='\n';

       for (int i = 1; i <= n; i++){

            char ch; //用于判断的字符

            int sum = 0;//计算字符的个数,输入一个就+1

            

            //x  代表包含大写字母    y  代表包含小写字母

            //z  代表包含数字        k  代表包含特殊字符

            int  x = 0, y = 0, z = 0, k = 0;


             //依次输入每一个字符,直至遇到换行符就结束输入

            while ((ch = getchar()) != '\n'){ 

                    sum++;//每输入一个字符,密码为数就+1

                //判断是否包含那四个条件

                 if ((ch >= 'a'&&ch <= 'z')){

                          x = 1;

                 }

                 else if ((ch >= 'A'&&ch <= 'Z')){

                          y = 1;

                 }

                 else if ((ch >= '0'&&ch <= '9')){

                           z = 1;

                 }

                 else if (f(ch)){

                           k = 1;

                 }

            }

       //最后判断密码位数和是否包含3个或者四个条件

       if (sum>=8&&sum<=16&&x + y + z + k >= 3){

           cout << "YES\n";

       }

       else{

           cout << "NO\n";

       }

     }

  }

return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »