鱼C论坛

 找回密码
 立即注册
查看: 1609|回复: 2

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

[复制链接]
发表于 2015-3-8 18:06:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

void main()
{
        static int a[M] = {-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[0]||n>a[M-1]);
#endif
        while(scanf("%d",&n)!=1)
        {
                printf("illegal input!!\nplease input again!!\n");
                getchar();
        }
    while(low <= high)
    {
        mid = (low+high)/2;
        if(n == a[mid])
        {
            found = 1;     
            break;
        } /*找到,结束循环*/            
        else if(n > a[mid])
            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吗?
在线等~~



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-8 20:45:51 | 显示全部楼层
scanf函数的返回值表示正确输入了几个变量,所以
while(scanf("%d",&n)!=1)就是说,当没有正确读入一个整数的时候就进入循环体{},循环中是错误处理,而正确正确读入一个整数的时候,scanf返回值是1,直接退出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-8 21:04:27 | 显示全部楼层
非常感谢你热心地回答。但是我是想问scanf函数并没在while以外出现,那么,程序接受你输入的数据呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 17:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表