我初学的C,怎么的就死循环了

来源:百度知道 编辑:UC知道 时间:2024/06/23 01:40:41
#include "stdio.h"
void main()
{ int i,f=1,a,b,c,d,e;
long m;
while(f==1)
{ for(i=1;i<=50;i++)
printf("-");
printf("\n");
printf("please input number (0--99999):");
scanf("%ld",&m);
for(i=1;i<=50;i++)
printf("-");
printf("\n");
printf("m=%ld\n",m);
if(m>=0&&m<=99999)
{ if((a=(int)(m/10000))>=1)
{printf("the long is 5\n");
for(i=1;i<=50;i++)
printf("-");
printf("\n");
b=(int)((m-10000*a)/1000);
c=(int)((m-10000*a-1000*b)/100);
d=(int)((m-10000*a-1000*b-100*c)/10);
e=(int)(m-10000*a-1000*b-100*c-1

else
{
printf("your number is mistake!\n");
printf("if you want to continue, please input 1 + enter.\n");
printf("if you want to exie this program,please enter 0 + enter.\n");
scanf("%d",&f);
if(f==0) break;
}
}
for(i=1;i<=50;i++)
printf("-");
printf("\n");
printf("if you want to continue, please input 1 + enter.\n");
printf("if you want to exie this program,please enter 0 + enter.\n");
scanf("%d",&f);getchar();//在这个地方加一个getchar();就可以了。
输入字母出现了死循环是因为输入字母后,f 被设为 1,无论什么字母都为 1 。缓存在有输入的那个字母,所以后面的scanf();都接收了缓存的字母了,接收时没有操作刷新缓存,缓存中的字母一直影响着scanf()所以就出现死循环了。

运行了一遍,了解了一下你大概想要实现的内容,应该不用写这么多的,本该比这个简单的多。但你写的太复杂了。有点不太想看,比较乱。