yaozheng1990517 发表于 2015-3-8 18:06:01

C语言新手小白一枚,求教各位鱼油~

在小甲鱼的C语言教程数组章节09最后的一个程序:#define M 10
#include<stdio.h>

void main()
{
        static int a = {-12,0,6,16,23,56,80,100,110,115};
        int n, low, mid, high, found;

        low=0;   
        high=M-1;   
        found=0;
        printf("Input a number to be searched:\n");
#if(0)
        do
        {
                scanf("%d", &n);
                getcher();
        }while(n<a||n>a);
#endif
        while(scanf("%d",&n)!=1)
        {
                printf("illegal input!!\nplease input again!!\n");
                getchar();
        }
    while(low <= high)
    {
      mid = (low+high)/2;
      if(n == a)
      {
            found = 1;   
            break;
      } /*找到,结束循环*/          
      else if(n > a)
            low=mid+1;
      else
            high=mid-1;
    }
    if(found == 1)
      printf("The index of %d is %d\n",n,mid);
    else
      printf("There is not%d\n",n);
}

上面标红的那段,我想问一下scanf函数在while语句中,作为一个判断条件,那程序是如何判断输入的呢?getchar吗?
在线等~~



仰望天上的光 发表于 2015-3-8 20:45:51

scanf函数的返回值表示正确输入了几个变量,所以
while(scanf("%d",&n)!=1)就是说,当没有正确读入一个整数的时候就进入循环体{},循环中是错误处理,而正确正确读入一个整数的时候,scanf返回值是1,直接退出循环

yaozheng1990517 发表于 2015-3-8 21:04:27

非常感谢你热心地回答。但是我是想问scanf函数并没在while以外出现,那么,程序接受你输入的数据呢?
页: [1]
查看完整版本: C语言新手小白一枚,求教各位鱼油~