程序如下:第一个容错不知怎么回事,只要错一次就直接结束了程序;第二次容错只能容错一次,然后输入正确的返回菜单,再输入字母就不能容错了。请问一下这是怎么回事,我想了好久还是想不懂,最好能帮我改下,实现容错功能。
void main()
{
Menu();
int n,flag,ret;
char a;
EMP emp[N];
do
{
printf("请选择你需要操作的步骤(1--9):\n");
if(!scanf("%d",&n))
{
printf("\n您输入有误,请重新选择!\n");
fflush(stdin); flag = 0;
}
if(n>=1 && n<=9) /*判断输入数字的合法性*/
{
flag = 1;break;
}
break;
}while(flag == 0);
while(flag == 1)
{
switch(n)
{
(中间略)
}
getchar();printf("\n");
do
{
printf("是否继续进行,返回菜单(y/Y or n/N):\n");
ret = scanf(" %c",&a);
if(a=='y' || a=='Y')
{
flag = 1;
system("cls");
Menu();
do
{
printf("请选择你需要操作的步骤(1--9):\n");
ret = scanf("%d",&n);
if(n>=1 && n<=9) /*判断输入数字的合法性*/
{
flag = 1; break;
}
if(ret != 1)
{
flag = 0;printf("\n您输入有误,请重新输入!\n\n");fflush(stdin);
}
}while(flag == 0);
}
else if(a=='n' || a=='N')
{
exit(0); break;
}
else
{
flag = 0;printf("您的输入有误!请重新输入!\n"); fflush(stdin);
}
}while(flag == 0);
}
}