题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
#include <stdio.h> #include <string.h> char str[302]; int main() { int grade=0,lower=0,upper=0,digia=0,symbol=0,count=0; gets(str); int len = strlen(str); if(len<=4) { grade+=5; } else if(len>=8) { grade+=25; } else { grade +=10; } for(int i=0;i<len;i++) { if(str[i]>='a'&&str[i]<='z') { lower++; } else if (str[i]>='A'&&str[i]<='Z') { upper++; } else if(str[i]>='0'&&str[i]<='9'){ digia++; } else if(str[i]>='!'&&str[i]<='/'){ symbol++; } else if(str[i]>=':'&&str[i]<='@') { symbol++; } else if(str[i]>='['&&str[i]<='`') { symbol++; } else if(str[i]>='{'&&str[i]<='~'){ symbol++; } } if((lower==0&&upper!=0)||(lower!=0&&upper==0)) { grade+=10; } else if(lower!=0&&upper!=0) { grade+=20; } if(digia>1) { grade+=20; } else { if(digia==1) { grade+=10; } } if(symbol>1) { grade+=25; } else { if(symbol==1) { grade+=10; } } if(digia!=0&&upper!=0&&lower!=0&&symbol!=0) { count=5; } else if(digia!=0&&(upper!=0||lower!=0)&&symbol!=0) { count=3; }else if(digia!=0&&(upper!=0||lower!=0)) { count=2; } grade+=count; if(grade>=90) { printf("VERY_SECURE"); } else if(grade>=80&&grade<=90) { printf("SECURE"); }else if(grade>=70&&grade<=80) { printf("VERY_STRONG"); }else if(grade>=60&&grade<=70) { printf("STRONG"); }else if(grade>=50&&grade<=60) { printf("AVERAGE"); } else if(grade>=25&&grade<=50) { printf("WEAK"); }else if(grade>=0&&grade<=25) { printf("VERY_WEAK"); } // printf("%d",grade); return 0; }
使用if完成,值得注意的是检查字符串的元素种类时,if应该先检查元素最多的情况,不然会执行错误