一个关于C语言循环输入的简单问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 05:03:27
void main()
{
int n,k=1;
while(k)
{if(scanf("%d",&n)!=0) k=0;}
printf("%d",n);
}

在VC 6.0的环境下运行,当输入字符的时候就没反应了,输入整型可以解决问题.

当在k=0后面加一个getchar()时,输入字符和整数都能正解判断,这是为什么?但是当输入字符加整数时也能正解的输出,(如输入yuy888)这是为什么?

请高手指点指点,谢谢啦...

或者给我一个可以控制只输入整数,否则将循环输入的方法?万分感谢
scanf("%d",&n);如果输入的是个字符,返回值就是0;

”当在k=0后面加一个getchar()”不对吧,你的意思是不是把scanf函数改为getchar函数.
首先说到getchar函数,它只接受一个字符,其实不管你输入任何的数字,字符,或他们的组合,它只会将第1个字符接收.例如你输入123,则gerchar函数只接收1,且这是字符1,因为它只会把接收的东西当字符看待,又字符常量是可以赋给整型变量的,是把字符的ASCLL码赋给变量. 而scanf是格式控制输入函数,当你输入的不满足他的先定要求时就出错了.

再说到你的代码,当你输入字符后,scanf("%d",&n)!=0不成立,所以就继续循环,后面就一直停留在scanf接收的阶段,所以不会有反映.

下面给出代码:
#include <stdio.h>
int main()
{
int n,k=1;
while(k)
{ if(scanf("%d",&n)!=0)
k=0;
else
printf("please input right content:");
}

printf("%d",n);
}

唯一区别就是有一行提示你输入正确内容的语句,以判别是否输入正确和正在等待输入,其实你只要再次输入整数就可以了.

%d是输出整型数据的格式
%c是输出字符数据的格式

我个人理解
%d 就是代表整形,%c代表字符串吧
getchar()可以获取输入的字符

%d是输出整型数据的格式
%c是输出字符数据的格式