hdu2043密码(C语言)

hdu2043密码

“你最可爱”,我说时来不及思索,而思索之后,还是这样说—— 普希金

题目链接: WXD.

这题主要是判断符合条件的总数是否大于3,还有密码长度的问题。首先至少要符合外面两个大条件,接下来至少符合三个小条件,总之还是得多关注细节问题,调试找bug,冲冲冲。

Alt

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main()
{
     
    char str[51];
    int M;   
    scanf("%d",&M);
    getchar();
    while (M--)
    {
     
        int cnt=0,flag1=0,flag2=0,flag3=0,flag4=0;
            /*
                flag做中间变量,判断输入的密码符合条件是否成立 
                若成立则给它赋值1,以免下次循环再执行if条件
            */
        scanf("%s",str);
        int len=strlen(str);
        if(!(len>=8&&len<=16)) {
     
            printf("NO\n");
            continue;  //不符合长度的跳过次循环
        }       
            for (int i = 0; i < len; i++){
     
                if(cnt<3) {
        
                    /*
                        strchr(str,'~')用于对字符串中的单个字符进行查找 
                        返回字符 c 第一次在字符串 s 中出现的位置
                    */      
                    if((strchr(str,'~')||strchr(str,'!')||strchr(str,'@')||strchr(str,'#')||strchr(str,'%')||strchr(str,'$')||strchr(str,'^')) &&flag1==0) {
     
                        flag1=1;
                        //printf("!\n");
                    } 
                    else if(str[i]>='0' && str[i]<='9' && flag2==0) {
     
                        flag2=1;
                        //printf("00\n");
                    }
                    else if(str[i]>='A'&&str[i]<='Z'&& flag3==0) {
     
                        flag3=1;
                        //printf("AA\n");
                    }
                    else if(str[i]>='a'&&str[i]<='z'&& flag4==0) {
                            
                        flag4=1;
                        //printf("aa\n");
                    }                           
                }             
        }   
            /*
                安全密码要至少符合三个条件,则cnt至少为3输出YES 
            */
            cnt=flag1+flag2+flag3+flag4;   
            if(cnt>=3)  printf("YES\n");
            else printf("NO\n");
            
            cnt=0;            
    }
    return 0;
}
**好了,该洗洗睡了兄弟萌******

你可能感兴趣的:(hduOJ刷题,c++,c语言,算法)