爱学习的猫 发表于 2018-5-7 18:03:09

程序运行输入数字回车没有结果为什么

如图

BngThea 发表于 2018-5-7 18:18:39

while循环中没有更新high的值

爱学习的猫 发表于 2018-5-7 18:50:51

BngThea 发表于 2018-5-7 18:18
while循环中没有更新high的值

额,我刚更新了一下还是这样

BFSDT 发表于 2018-5-7 18:51:23

本帖最后由 BFSDT 于 2018-5-7 19:18 编辑

else if (n < a){
    high = mid -1;
}


之前那个有误,这个应该可以

爱学习的猫 发表于 2018-5-7 19:15:41

BFSDT 发表于 2018-5-7 18:51


{:10_266:}我刚看到您的回复可高兴了,可是为啥还是那个样子

BFSDT 发表于 2018-5-7 19:25:41

爱学习的猫 发表于 2018-5-7 19:15
我刚看到您的回复可高兴了,可是为啥还是那个样子

之前那个写错了,现在修改过的应该能用了,修改相应的地方就可以了

爱学习的猫 发表于 2018-5-7 19:38:02

BFSDT 发表于 2018-5-7 19:25
之前那个写错了,现在修改过的应该能用了,修改相应的地方就可以了

十分抱歉,您再看一下呗,我运行了还是那个样子
int main(){
        static int a={-12,0,6,16,23,56,80,100,110,115};//static是静态变量
        int n,low,mid,high,found;//一个分号算一行
        low=0;
        high=M-1;
        found=0;
        printf("Input a number to be searched:\n");
        scanf("%d",&n);

        while(low<=high){
                mid=(low+high)/2;
                if(n==a){
                        found=1;
                        break;
                }
                else if (n < a){
                        high = mid -1;
                }
                else
                        high=mid+1;
        }
        if(found==1){
                printf("The index of %d is%d",n,mid);
        }else
                printf("There is not %d",n);
}

BFSDT 发表于 2018-5-7 20:02:55

                else if (n < a){
                        high = mid -1;
                }
                else
                        low=mid+1;
else那里不用改,用你原来那个就好了

魔法虫虫 发表于 2018-5-7 20:44:42

楼上正解,但那句 else if ( n < a ) 换成 else if ( n < mid )

爱学习的猫 发表于 2018-5-8 10:48:07

BngThea 发表于 2018-5-7 18:18
while循环中没有更新high的值

谢谢
页: [1]
查看完整版本: 程序运行输入数字回车没有结果为什么