C语言实现,注意多个输入输出的处理
// 输入格式:while(scanf("%s",str)!=EOF)
// 变量初始化都要在whil循环里面,因为对每次读到的数据都要重新开始计算!!!一定不能放在外面,会导致自测用例通过,但提交调试不通过,即导致不支持多次输入并计算其对应结果
链接:https://www.nowcoder.com/questionTerminal/52d382c2a7164767bca2064c1c9d5361?answerType=1&f=discussion
来源:牛客网
#include <stdio.h> #include <string.h>int main() { char str[10000]; while(scanf("%s",str)!=EOF){ // 变量初始化都要在whil循环里面,因为对每次读到的数据都要重新开始计算!!!一定不能放在外面,会导致自测用例通过,但提交调试不通过,即导致不支持多次输入并计算其对应结果 int len=0; int sscore=0; int i; int flag_l = 0; int flag_b = 0; int num=0; int sym=0;
len=strlen(str); // printf("len=%d\n",len); if(len<=4){ sscore += 5; // printf("len<=4,sscore=%d\n",sscore); } else if(len>=5 && len<=7) { sscore += 10; // printf("len>=5,sscore=%d\n",sscore); } else{ sscore += 25; // printf("len>7,sscore=%d\n",sscore); } for(i=0;i<len;i++){ // printf("str[%d]=%c\n",i,str[i]); if(flag_b!=1 && (str[i]>='A' && str[i]<='Z')){ flag_b = 1; } if(flag_l!=1 && (str[i]>='a' && str[i]<='z')){ flag_l = 1; } if(str[i]>='0' && str[i]<='9'){ num++; // printf("num=%d\n",num); } if((str[i]>=0x21&&str[i]<=0x2F) ||(str[i]>=0x3A&&str[i]<=0x40) || (str[i]>=0x5B&&str[i]<=0x60) || (str[i]>=0x7B&&str[i]<=0x7E)){ sym++; // printf("sys=%d\n",sym); } } if(flag_l==1 && flag_b==1){ sscore += 20; // printf("l=b=1,score=%d\n",sscore); }else if((flag_l==1 && flag_b==0) ||(flag_l==0 && flag_b==1)){ sscore += 10; // printf("sym==0,score=%d\n",sscore); } if(num==1){ sscore += 10; // printf("num==1,score=%d\n",sscore); }else if(num>1){ sscore += 20; // printf("num>1,score=%d\n",sscore); } if(sym==1){ sscore += 10; // printf("sym==1,score=%d\n",sscore); }else if(sym>1){ sscore += 25; // printf("sym>1,score=%d\n",sscore); } if(num!=0 && flag_l!=0 && flag_b!=0 && sym!=0){ sscore+=5; // printf("+5,score=%d\n",sscore); }else if(num!=0 && sym!=0 && (flag_l==1 || flag_b==1)){ sscore+=3; // printf("+3,score=%d\n",sscore); }else if(num!=0 && (flag_l==1 || flag_b==1)){ sscore+=2; // printf("+2,score=%d\n",sscore); } // printf("flag_l=%d,flag_b=%d,num=%d,sym=%d,sscore=%d\n",flag_l,flag_b,num,sym,sscore); if(sscore>=90){ printf("VERY_SECURE\n"); }else if(sscore>=80){ printf("SECURE\n"); }else if(sscore>=70){ printf("VERY_STRONG\n"); }else if(sscore>=60){ printf("STRONG\n"); }else if(sscore >=50){ printf("AVERAGE\n"); }else if(sscore>=25){ printf("WEAK\n"); }else{ printf("VERY_WEAK\n"); } } return 0; }