首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

scanf应用的一个有关问题

2012-02-19 
scanf应用的一个问题问题是这样的写一个程序根据数字大与85输出好小于60坏大于60通过其他运行正常,但是如

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 ");}
}

热点排行