余skr 2022-12-26 19:41 采纳率: 92.3%
浏览 35
已结题

c语言求密码等级partial accepted

我的代码如下,PAC是因为this's0909在这里判断的是VERY_STRONG,而我是STRONG
题目如下
一、密码长度:
5 分: 小于等于4 个字符
10 分: 5 到7 字符
25 分: 大于等于8 个字符

二、字母:
0 分: 没有字母
10 分: 全都是小(大)写字母
20 分: 大小写混合字母

三、数字:
0 分: 没有数字
10 分: 1 个数字
20 分: 大于1 个数字

四、符号:
0 分: 没有符号
10 分: 1 个符号
25 分: 大于1 个符号

五、奖励:
2 分: 字母和数字
3 分: 字母、数字和符号
5 分: 大小写字母、数字和符号

最后的评分标准:
大于等于90: VERY_SECURE
大于等于80: SECURE
大于等于70: VERY_STRONG
大于等于 60: STRONG
大于等于 50: AVERAGE
大于等于 25: WEAK
大于等于0: VERY_WEAK


#include<stdio.h>
#include<string.h>
int main(){
    int n,fen=0,i,z=0,Z=0,sh=0,f=0,j=0;
    char s[10005];
    scanf("%s",s);
    n=strlen(s);
    if(n<=4) fen+=5;
    else if(n>=5&&n<=7) fen+=10;
    else if(n>=8) fen+=25;
    for(i=0;i<n;i++){
        if(s[i]>='a'&&s[i]<='z') z++;
        else if(s[i]>='A'&&s[i]<='Z') Z++;
        else if(s[i]>='0'&&s[i]<='9') sh++;
        else f++;
    }
    if((z!=0&&Z==0)||(z==0&&Z!=0)) fen+=10;
    else if(z!=0&&Z!=0) fen+=20;
    if(sh==1) fen+=10;
    else if(sh>1) fen+=20;
    if(f==1) fen+=10;
    else if(f>1) fen+=25;
    if(f==0&&sh!=0&&(z!=0||Z!=0)) fen+=2;
    else if(f!=0&&sh!=0&&z!=0&&Z==0) fen+=3;
    else if(f!=0&&sh!=0&&z==0&&Z!=0) fen+=3;
    else if(f!=0&&sh!=0&&z!=0&&Z!=0) fen+=5;
    if(fen>=0&&fen<25) printf("VERY_WEAK\n");
    else if(fen>=25&&fen<50) printf("WEAK\n");
    else if(fen>=50&&fen<60) printf("AVERAGE\n");
    else if(fen>=60&&fen<70) printf("STRONG\n");
    else if(fen>=70&&fen<80) printf("VERY_STRONG\n");
    else if(fen>=80&&fen<90) printf("SECURE\n");
    else if(fen>=90) printf("VERY_SECURE\n");
    return 0;
}

请大家帮我看看为什么,谢谢了

  • 写回答

2条回答 默认 最新

  • a5156520 2022-12-26 20:12
    关注

    应该是因为奖励部分那里错了,根据this's0909是VERY_STRONG,则分数必须大于等于70,通过计算,发现奖励部分如果满足条件需要重复计算才能大于等于70分,所以把奖励部分的判断修改下即可,修改如下:

     
    #include<stdio.h>
    #include<string.h>
    int main(){
        int n,fen=0,i,z=0,Z=0,sh=0,f=0,j=0;
        char s[10005];
        scanf("%s",s);
        n=strlen(s);
        if(n<=4) fen+=5;
        else if(n>=5&&n<=7) fen+=10;
        else if(n>=8) fen+=25;
        for(i=0;i<n;i++){
            if(s[i]>='a'&&s[i]<='z') z++;
            else if(s[i]>='A'&&s[i]<='Z') Z++;
            else if(s[i]>='0'&&s[i]<='9') sh++;
            else f++;
        }
        if((z!=0&&Z==0)||(z==0&&Z!=0)) fen+=10;
        else if(z!=0&&Z!=0) fen+=20;
        if(sh==1) fen+=10;
        else if(sh>1) fen+=20;
        if(f==1) fen+=10;
        else if(f>1) fen+=25;
          //奖励 
        if(sh!=0&&(z!=0||Z!=0)) fen+=2;
        if(f!=0&&sh!=0&&(z!=0||Z!=0)) fen+=3;
        if(f!=0&&sh!=0&z!=0&&Z!=0) fen+=5;
      //  printf("fen=%d\n",fen);
         
        if(fen>=0&&fen<25) printf("VERY_WEAK\n");
        else if(fen>=25&&fen<50) printf("WEAK\n");
        else if(fen>=50&&fen<60) printf("AVERAGE\n");
        else if(fen>=60&&fen<70) printf("STRONG\n");
        else if(fen>=70&&fen<80) printf("VERY_STRONG\n");
        else if(fen>=80&&fen<90) printf("SECURE\n");
        else if(fen>=90) printf("VERY_SECURE\n");
        return 0;
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月3日
  • 已采纳回答 12月26日
  • 创建了问题 12月26日

悬赏问题

  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?