关于一个c语言出现死循环的问题
发布网友
发布时间:2023-09-11 13:25
我来回答
共4个回答
热心网友
时间:2024-11-24 14:29
while(1)是无限循环了,因为括号里面的值始终是1,即始终为真的,注意你这不管输入0,1,还是2都会执行到exit(),可以直接退出那个while(1)的无限循环。但输入字母或符号后,scanf ("%d",a); 就不再能接收值了,因为必须与%d所控制的形式相对。但我认为不管怎么样也会有错误提示input error 的,出现死循环可能是前面scanf接收错误导致的。
我建议改为:
while (1)
{ int a,i;
printf(" please enter a:\n");
do {i=scanf("%d",&a);getchar();if(i==0) printf("input error . \n");}
while(i==0)
switch(a)
{ case 1 : printf("you enter number is 1 .\n");
case 2 : printf("you enter number is 2 .\n");
case 0 : exit();
default: printf("input error . \n");
}
}
热心网友
时间:2024-11-24 14:30
# include <stdio.h>
# include <conio.h>
void main()
{
while (1)
{ int a ;
printf(" please enter a:\n");
scanf ("%d",&a);
getchar();
switch(a)
{ case 1 : printf("you enter number is 1 .\n");
case 2 : printf("you enter number is 2 .\n");
case 0 :return;
default : printf("input error . \n");
}
}
}
加上一个getchar,然后把scanf ("%d",a);修改了
热心网友
时间:2024-11-24 14:30
scanf("%d",a)错了,应改为:scanf("%d",&a),至于加上一个getchar,我认为就不必了,还有啊,你定义的a是整型,而你又输入字符当然不行啦.
热心网友
时间:2024-11-24 14:31
首先scanf ("%d",a);
就错了应该试scanf ("%d",&a);
也可以在switch前面加一个判断,不加应该也不错的啊!