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
#include
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;iif(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;
}

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

应该是因为奖励部分那里错了,根据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


#include <stdio.h>
#include <ctype.h>

int main()
{
    // 定义变量
    char password[100];  // 密码
    int length = 0;  // 密码长度
    int score = 0;  // 密码评分
    int num_letter = 0;  // 密码中字母的数量
    int num_digit = 0;  // 密码中数字的数量
    int num_symbol = 0;  // 密码中符号的数量
    int has_lower = 0;  // 密码中是否包含小写字母
    int has_upper = 0;  // 密码中是否包含大写字母

    // 输入密码
    printf("请输入密码:");
    scanf("%s", password);

    // 计算密码长度
    for (int i = 0; password[i] != '\0'; i++)
    {
        length++;
    }

    // 评分:密码长度
    if (length <= 4)
    {
        score += 5;
    }
    else if (length >= 5 && length <= 7)
    {
        score += 10;
    }
    else
    {
        score += 25;
    }

    // 评分:字母
    for (int i = 0; password[i] != '\0'; i++)
    {
        if (isalpha(password[i]))
        {
            num_letter++;
            if (islower(password[i]))
            {
                has_lower = 1;
            }
            else
            {
                has_upper = 1;
            }
        }
    }
    if (num_letter == 0)
    {
        score += 0;
    }
    else if (has_lower == 0 || has_upper == 0)
    {
        score += 10;
    }
    else
    {
        score += 20;
    }

    // 评分:数字
    for (int i = 0; password[i] != '\0'; i++)
    {
        if (isdigit(password[i]))
        {
            num_digit++;
        }
    }
    if (num_digit == 0)
    {
        score += 0;
    }
    else if (num_digit == 1)
    {
        score += 10;
    }
    else
    {
        score += 20;
    }

    // 评分:符号
    for (int i = 0; password[i] != '\0'; i++)
    {
        if (!isalnum(password[i]))
        {
            num_symbol++;
        }
    }
    if (num_symbol == 0)
    {
        score += 0;
    }
    else if (num_symbol == 1)
    {
        score += 10;
    }
    else
    {
        score += 25;
    }

    // 评分:奖励
    if (num_letter > 0 && num_digit > 0 && num_symbol == 0)
    {
        score += 2;
    }
    else if (num_letter > 0 && num_digit > 0 && num_symbol > 0)
    {
        score += 3;
    }
    else if (num_letter > 0 && num_digit > 0 && num_symbol > 0 && has_lower == 1 && has_upper == 1)
    {
        score += 5;
    }

    // 输出结果
    if (score >= 90)
    {
        printf("VERY_SECURE");
    }
    else if (score >= 80)
    {
        printf("SECURE");
    }
    else if (score >= 70)
    {
        printf("VERY_STRONG");
    }
    else if (score >= 60)
    {
        printf("STRONG");
    }
    else if (score >= 50)
    {
        printf("AVERAGE");
    }
    else if (score >= 25)
    {
        printf("WEAK");
    }
    else
    {
        printf("VERY_WEAK");
    }

    return 0;
}