当前位置: 首页 > 计算机 > 问题详情
问题

N个有序整数数列已放在一维数组中 给定下列程序中 函数fun()的功能是:利用折半查找算法查找整数m

N个有序整数数列已放在一维数组中,给定下列程序中,函数fun()的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,则返回其下标值:反之,则返回-1。

折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下次查找范围落在中间位置之前的元素中。直到low>high,查找结束。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

include <stdio.h>

define N 10

/*************found*********************/

void fun(int a[],int m)

{ int low--0,high=N-l,mid;

while (low<=high)

{ mid=(low+high)/2;

if(m<a[mid])

high=mid-1;

/*************found*********************/

else if(m>=a [mid])

low=mid+1;

else return(mid);

}

return(-1);

}

main ()

{ int i,a[N]={-3,4,7,9,13,24,67,89,100,180},k,m;

printf ("a数组中的数据如下: ");

for(i=0;i<N;i++) printf("%d",a[i]);

printf ("Enter m: "); scanf ("%d", &m);

k=fun (a,m);

if (k>=0) printf ("m=%d, index=%d\n",m, k);

else printf("Not be found!\n");

}

发布时间:2024-05-06
参考答案

正确答案:(1)错误:void fun(int a[]int m) 正确:int fun(int a[]int m)(2)错误:else if(m>=a[mid]) 正确:else if(m>a[mid])
(1)错误:void fun(int a[],int m) 正确:int fun(int a[],int m)(2)错误:else if(m>=a[mid]) 正确:else if(m>a[mid]) 解析:fun (int a[],int m)函数的返回值为int类型,所以定义函数时,函数的返回类型不能是void,而是int类型。
else if(m>=a[mid]中的m>a[mid]与m=a[mid]两个条件段的结果不一样,所以要分开考虑。

相关问题
  • 某机器字长为n 最高位是符号位 其定点整数的最大值为()。 A

    某机器字长为n,最高位是符号位,其定点整数的最大值为()。A 2n-1 B 2n-1 -1 C 2n D 以上都不对请帮忙给出正确答案和分析,谢谢!

    答案解析
  • 某机器字长为n 最高位是符号位 其定点整数的最大值为()。 A

    某机器字长为n,最高位是符号位,其定点整数的最大值为()。A 2n-1B 2n-1-1C 2nD 2n-1请帮忙给出正确答案和分析,谢谢!

    答案解析
  • 在数据库处理过程中 执行语句S=int(50*rnd)后 S的值是()。

    在数据库处理过程中,执行语句S=int(50*rnd)后,S的值是()。A [0,49]的随机整数B [0,50]的随机整数C [1,49]的随机整数D [1,50]的随机整数请帮忙给出

    答案解析
  • 机器字长确定后 ()运算过程中不可能发生溢出。 A. 定点正整

    机器字长确定后,()运算过程中不可能发生溢出。A 定点正整数 X 与定点正整数 Y 相加B 定点负整数 X 与定点负整数 Y 相加C 定点负整数 X

    答案解析
  • 6位无符号二进制数能表示的最大十进制整数是A.64B.63C.32D.31

    6位无符号二进制数能表示的最大十进制整数是A 64B 63C 32D 31请帮忙给出正确答案和分析,谢谢!

    答案解析
  • 从键盘上接受一位整数并存入内存变量X 正确的操作为()。A.WAIT

    从键盘上接受一位整数并存入内存变量X,正确的操作为()。A WAIT TO XB ACCEPT TO XC INPUT TO XD STORE TO X

    答案解析
  • 试题3如果删除一个非零无符号二进制偶整数后的2个0 则此数的值

    试题3如果删除一个非零无符号二进制偶整数后的2个0,则此数的值为原数的()。A.4倍B.2倍C.1 2D.1 4

    答案解析
  • 试题1下列程序的功能是:找出所有100以内(含100)满足i i+4 i

    试题1下列程序的功能是:找出所有100以内(含100)满足i,i+4,i+10都是素数的整数i(i+10也在100以内)的个数cnt以及这些i之和sum。请编写函数countvalue()

    答案解析
  • 试题2本程序中 函数fun的功能是计算整数n的阶乘。程序中存在若

    试题2本程序中,函数fun的功能是计算整数n的阶乘。程序中存在若干错误,请找出并改正。(注意:不改动程序的结构,不得增行或删行。) include <stdio h

    答案解析
  • 若对二进制整数x和y的各位进行异或运算后的结果为全0 则说明(1

    若对二进制整数x和y的各位进行异或运算后的结果为全0,则说明(10)。(10)A x>yB x<yC x=yD x =-y请帮忙给出正确答案和分析,谢谢!

    答案解析

最新问题

Copyright © 2016-2023 114题库网(114158.com)All Rights Reserved.  免责声明 豫ICP备19007809号-5