|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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不执行。
这是为什么呢?有没有大手解释一下原因 |
|