首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为什么这样会死循环?逻辑没有有关问题吖~

2013-01-07 
为什么这样会死循环?逻辑没有问题吖~~~~~~~~~//37.任意给定一个月份数,输出是哪个季节。//(12、1、2月是冬季,

为什么这样会死循环?逻辑没有问题吖~~~~~~~~~

//37.任意给定一个月份数,输出是哪个季节。
//(12、1、2月是冬季,3、4、5月是春季,6、7、8月是夏季,9、10、11月是秋季)

#include <stdio.h>
void main()
{

int a;

do
{
printf("请输入月份数:");
scanf("%d",&a);

switch (a)
{
case 12:
case 1:
case 2:printf("冬季\n");break;
case 3:
case 4:
case 5:printf("春季\n");break;
case 6:
case 7:
case 8:printf("夏季\n");break;
case 9:
case 10:
case 11:printf("秋季\n");break;
default :printf("输入错误,请重新输入\n");
}
}
while ((a!=1)&&(a!=2)&&(a!=3)&&(a!=4)&&(a!=5)&&(a!=6)&&(a!=7)&&(a!=8)&&(a!=9)&&(a!=10)&&(a!=11)&&(a!=12));
}


执行,输入的时候不要输入数字,随便输入一个字母,然后就拼命输出
"请输入月份数:输入错误,请重新输入\n"

怎么回事?CPU飙的高高的。
[解决办法]
它不接受非数字的数据,这样,你的字符一直在输入缓冲区中,而你的scanf需要重缓冲区中读取数据,每次得到的是字符,继续从缓冲区读。。。。。。,就恶性循环了!

热点排行
Bad Request.