题目:编写一个函数,传入密码,判断密码复杂程度(判断密码是否包含大写、小写、数字)
解题思路:
我们设定若包含大写、小写、数字其中一类为简单,包含两类为中等,三类为复杂,暂时不考虑其他字符的出现。
我们预先设定密码为:Maobing520
① 主函数中定义一个字符串str存放密码。
② 定义函数 int key (char *p) ,其中 *p 所传入的参数是密码(字符串),返回值可以设为int型,复杂返回3,中等返回2,简单返回1。
③ 主函数中根据函数返回值分别打印不同的结果语句。
④ 我们可以增设一个提示,如果密码过于简单,为了防止被盗,必须提醒用户改一个稍微复杂的新密码。此处可以用到do...while循环语句直到密码不再简单为止。
运行代码:
#include#include int key(char *p) { int i=0,j=0,k=0,count=0; //i,j,k分别对应是否有小写/大写/数字 while(*p) { if(*p>='a'&&*p<='z') i=1; //说明存在小写 else if(*p>='A'&&*p<='Z') j=1; //说明存在大写 else if(*p>='0'&&*p<='9') k=1; //说明存在数字 p++; } count=i+j+k; //根据加成 得知 1——简单 2——中等 3——复杂 return count; } int main(){ char str[81]; printf("please enter password(A-Z or a-z or 0-9):n"); gets(str); int a; //函数返回值赋给a a=key(str); if (a==1) //此处判断为密码简单的情况,需重新输入稍微复杂的密码 { do{ printf("neasy!!please enter new password:"); gets(str); a=key(str); if(a==2) printf("nmiddle"); if(a==3) printf("nhard"); }while(a==1); //此处使用do...while语句,作用是若密码还是简单则继续重新输入密码 } else if(a==2) printf("nmiddle"); else printf("nhard"); return 0; }
运行结果:
以上为密码过于简单所触发的结果。
以上为输入预先设定的密码所得到的结果。



