当前位置: 代码迷 >> C语言 >> scanf语句
  详细解决方案

scanf语句

热度:584   发布时间:2006-03-05 13:15:00.0
那为什么我在win-tc下运行时是死循环,该不会是编译器的问题吧,
----------------解决方案--------------------------------------------------------

please input a odd number.
4
please input a odd number.
2
please input a odd number.
6
please input a odd number.
21
please input a odd number.
22
please input a odd number.
23
please input a odd number.
0
please input a odd number.
6
please input a odd number.
7


Terminated with return code 0
Press any key to continue ...

什么题啊!无论奇数 偶数,一律拍死!

[此贴子已经被作者于2006-3-5 13:55:03编辑过]


----------------解决方案--------------------------------------------------------
while((scanf("%d",&n)==1)&&((n>15)||(n<3)||(n%2==0)));

n不能是 3 到 15 之间的奇数?其他的数随便?
lz的题目也够 另类的

----------------解决方案--------------------------------------------------------

我想楼主的程序目的并不是这样吧!我说怎么觉得怪怪的,谢谢楼上的提点


----------------解决方案--------------------------------------------------------
在scanf下面加一句话

while((c=getchar())!='\n' && c!=EOF); /*这条语句负责清空缓冲区里的垃圾*/

当然前面要定义一下

char c;



#include<stdio.h>
#include<conio.h>
int main()
{
int n;
do
{
printf("please input a odd number.\n");
scanf("%d",&n);
while((c=getchar())!='\n' && c!=EOF); /*这条语句负责清空缓冲区里的垃圾*/
}while((n>15)||(n<3)||(n%2==0));
getch();
return 0;
}

[此贴子已经被作者于2006-3-5 17:02:14编辑过]


----------------解决方案--------------------------------------------------------
以下是引用mwjpiero在2006-3-4 17:31:00的发言:
#include <stdio.h>
int main()
{
int n;
do
{
printf("please input a odd number.\n");
}while((scanf("%d",&n)==1)&&((n>15)||(n<3)||(n%2==0)));
getch();

return 0;
}
按照自己的要求再完善一下吧

我的不是死循环,输入非数字的时候就会退出了
scanf("%d", $n)==1这句话的作用应该知道吧
----------------解决方案--------------------------------------------------------

  相关解决方案