马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
int main()
{
int n,status;
printf("请输入一个1~7之间的整数(输入0退出程序):");
status = scanf("%d",&n);
while(1 != status)
{
printf("输入不合法!请重新输入:");
status = scanf("%d",&n);
}
loop1:switch(n)
{
case 1:printf("Monday\n");break;
case 2:printf("Tuesday\n");break;
case 3:printf("Wensday\n");break;
case 4:printf("Thursday\n");break;
case 5:printf("Friday\n");break;
case 6:printf("Saturday\n");break;
case 7:printf("Sunday\n");break;
default:
printf("输入的数字不在1~7之间!请重新输入(输入0退出程序):");
scanf("%d",&n);
goto loop1;
if(0 == n)
{
break;
}
}
return 0;
}
while循环的想法是,如果输入的是非整型数据的话就重新输入。但是我输入一个字母的话while就陷入一个无限循环,不停的执行while里的printf()函数,而且while里的scanf()函数也不会执行。
但是如果我修改一下代码:
status = scanf("%d",&n);
while(1 == status)
{
status = scanf("%d",&n);
}
在这里面如果我输入的是一个整型的数据,程序可以进入while而且还会执行while里的scanf()函数。如果我输入一个非整型数据,while不执行。
这是为什么呢?有没有大手解释一下原因 |