读书人

scanf应用的一个有关问题

发布时间: 2012-02-19 19:43:38 作者: rapoo

scanf应用的一个问题
问题是这样的 写一个程序 根据数字大与85输出好 小于60坏 大于60通过
其他运行正常,但是如果输入的一个数不是数值型的,不管是什么字符,结果显示输入的都是31292
#include "stdio.h "
main()
{
int a,b; /*如果这里给a赋值为0 那么输入其他的都是0 */
printf( "输入1个数 ");
scanf( "%d ",&a);
printf( "%d\n ",a); /*显示a为31292,请问这是什么原因??*/
if(a> 85)
b=2;
else if(a <60)
b=1;
else
b=3;
printf( "%d ",b);
switch(b)
{
case 1:printf( "bad ");break;
case 2:printf( "good "); break;
case 3:printf( "pass ");break;
default:printf( "error ");}
}

[解决办法]
//就这题而言
#include "stdio.h "
main()
{
int a = -1,b; //初始化a为-1
printf( "输入1个数 ");

while(scanf( "%d ",&a)!=EOF&&a==-1) getchar();
//只要a为-1就知道输入的不是整数,当然不能输入-1,然后用getchar()将缓冲区的字符接收
//用循环判断直到输入的是整数为止
printf( "%d\n ",a);
if(a> 85)
b=2;
else if(a <60)
b=1;
else
b=3;
printf( "%d ",b);
switch(b)
{
case 1:printf( "bad ");break;
case 2:printf( "good "); break;
case 3:printf( "pass ");break;
default:printf( "error ");}
}

读书人网 >C语言

热点推荐