解题思路:
1.从输入字符开始做起。

2.一个一个字符判断是不是满足要求。

3.结果的判断与输出。

一步一步分析就行,本题还是比较简单的

参考代码:

#include"stdio.h"
#include"string.h"
int main()
{
    int lengh,d,result[100]={0},check1,check2,check3,check4,check5,i,j;//分别为密码长度,结果,检查判断所用变量
    char a[100]={0};                          //存用户输入几个密码
    scanf("%d",&d);
    getchar();                                      //吃回车
    for(i=0;i<d;i++)
    {
        check1=0,check2=0,check3=0,check4=0;//注意一定要初始化
        gets(a);                             //用户输入密码
        lengh=strlen(a);
        if(lengh<8&&lengh<=16)                   //长度小于8,就直接判断wie不合格密码,直接开始检查下一行密码
            continue;
        for(j=0;j<lengh;j++)         //一个一个判断是否合格
        {
            if(a[j]>='A'&&a[j]<='Z')
                check1=1;
            else if(a[j]>='a'&&a[j]<='z')
                check2=1;
            else if(a[j]>='0'&&a[j]<='9')
                check3=1;
            else if(a[j]=='!'||a[j]=='~'||a[j]=='@'||a[j]=='#'||a[j]=='$'||a[j]=='%'||a[j]=='^')
                check4=1;
            else check5=1;//不是满足要求的字符,密码不合格
            
        }
        if((check1+check2+check3+check4)>=3&&check5!=1)
        {
            result[i]=1;//存结果
        }
    }
    for(i=0;i<d;i++)
    {
        if(result[i]==1)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

看看大家还有什么不懂的,请在下方评论区留言

点赞(14)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 3 条评论

还有个地方 6年前 回复TA
写出了状态机的感觉
saitama 6年前 回复TA
哈哈 吃空格那个我还以为一定要定义一个字符然后ch=getcahr();嘞
创世纪 7年前 回复TA
你这check5没定义啊