题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
#include <stdio.h> #include <string.h> void judge1(int*map,int*flag) { for(int i='A';i<='Z';i++) { if(map[i]) { (*flag)++; break; } } for(int i='a';i<='z';i++) { if(map[i]) { (*flag)++; break; } } } void judge2(int*map,int*flag) { for(int i='0';i<='9';i++) { if(map[i]) { (*flag)+=map[i]; if((*flag)==2) return; } } } void judge3(int*map,int*flag) { for(int i='!';i<='/';i++) { if(map[i]) { (*flag)+=map[i]; if((*flag)==2) return; } } for(int i=':';i<='@';i++) { if(map[i]) { (*flag)+=map[i]; if((*flag)==2) return; } } for(int i='[';i<='`';i++) { if(map[i]) { (*flag)+=map[i]; if((*flag)==2) return; } } for(int i='{';i<='~';i++) { if(map[i]) { (*flag)+=map[i]; if((*flag)==2) return; } } } int main() { char* arr[7]={"VERY_SECURE","SECURE","VERY_STRONG","STRONG","AVERAGE","WEAK","VERY_WEAK"}; char s[301]={0}; int score=0; fgets(s,100,stdin); int len=strlen(s)-1; if(len<=4) score=5; else if(len<=7&&len>=5) score=10; else score=25; int map[127]={0}; for(int i=0;i<len;i++) { map[s[i]]++; } int flag1=0;int flag2=0;int flag3=0; judge1(map,&flag1); judge2(map,&flag2); judge3(map,&flag3); if(flag1||flag2||flag3) { if(flag3<2) { score=score+flag1*10+flag2*10+flag3*10; if(flag1&&flag2&&flag3==0) score+=2; else if(flag1==1&&flag2&&flag3) score+=3; else if(flag1==2&&flag2&&flag3) score+=5; } else { score=score+flag1*10+flag2*10+25; if(flag1==1&&flag2&&flag3) score+=3; else if(flag1==2&&flag2&&flag3) score+=5; } } if(score>=90) printf("%s",arr[0]); else if(score<90&&score>=80) printf("%s",arr[1]); else if(score<80&&score>=70) printf("%s",arr[2]); else if(score<70&&score>=60) printf("%s",arr[3]); else if(score<60&&score>=50) printf("%s",arr[4]); else if(score<50&&score>=25) printf("%s",arr[5]); else printf("%s",arr[6]); return 0; }