注意循环体内对ch2[]的修改,若第一次输入密码长度大于第二次输入密码长度,strcmp(ch1,ch2)的返回值可能不是程序希望的意图,即第一次输入123456,第二次输入hello,那么ch2[]里的字符串便是hello6而不是输入的hello。此外,外层的do-while循环每次执行的时候,请对i重新初始化为0,否则可能存在数组访问越界问题,并且与程序意图不符合。
如果用do while 先执行循环体,然后判断循环条件,是否成立,你这样写不对。
一个简单的问题不用写那么复杂额,试试下面的:
#include
#include
#include
int main()
{
int a=0;
char c[20];
do{
printf("请输入密码,按enter键结束:\n");
scanf("%s",c);
if(strcmp(c,"hello")!=0){
a++;
printf("密码错误\n");
}
else{
printf("密码正确\n");
break;
}
}while(a<3);
if(a<3)
printf("OK.\n");
return 0;
}
else
{ printf("密码正确\n");
break;}// 呵呵,这两句应当是在大括号里,按我写的改过来试一下