[试题]

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

}

参考答案与解析:

相关试题

请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,

[主观题]请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p到n-1(p≤n-1)的数组元素平移到数组的前面。例如,一维数组中的原始内容为1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15,p的值为6。移动后,一维数组中的内容应为7,8,9,10, 11,12,13,14,15,1, 2, 3, 4, 5, 6。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:i

  • 查看答案
  • 请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,

    [主观题]请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p~n-1(p<n-1)的数组元素平移到数组的前面。例如,一维数组中的原始内容为1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, P的值为6。移动后,一维数组的内容应为7, 8, 9, 10, 11, 12, 13, 14, 15, 1, 2, 3, 4, 5, 6。[注意] 部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fu

  • 查看答案
  • 下列给定程序中,函数fun的功能是:把形参a所指数组中的最小值放在元素a[o]中

    [主观题]下列给定程序中,函数fun的功能是:把形参a所指数组中的最小值放在元素a[o]中,接着把a_所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3],以此类推。例如,若a所指数组中的数据最初排列为:9、1…4 2 3、6、5、8、7;则按规则移动后,数据排列为:1、9.2、8:3、7、4、6、5。形参13.中存放a所指数组中数据的个数。规定fum函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。请在程序的下划线处填人

  • 查看答案
  • 请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p~n-1(p<n-1)的数组元素平移到数组的前面。<br />  例如,一维数组中的原始

    [问答题]请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p~n-1(p

  • 查看答案
  • 给定程序MODII.C中,函数fun的功能是判断整数n是否是”完数”。当一个数的

    [试题]给定程序MODII.C中,函数fun的功能是判断整数n是否是”完数”。当一个数的因子之和恰好等于这个数本身时,就称这个数为”完数”。例如:6的因子包括1、2、3,而6=1+2+3,所以6是完数。如果是完数,函数返回值为1,否则函数返回值为0。数组a中存放的是找到的因子,变量k中存放的是因子的个数。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:

  • 查看答案
  • 下列给定程序中,函数fun()的功能是:用选择法对数组中的n个元素按从小到大的顺

    [试题]下列给定程序中,函数fun()的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。请改正程序中的错误,使它能得到正确结果。[注意] 不要改动main函数,不得增行或删行,也不得更改程序的结构。[试题源程序]include<stdio.h>define N 20void fun(int a[], int n){int i, j, t, p;for(j=0; j<n-1; j++){/***********found***********/p=jfor(i=j; i<n; i++)if(a[

  • 查看答案
  • 怎样编写一个程序,把一个有序整数数组放到二叉树中?

    [主观题]怎样编写一个程序,把一个有序整数数组放到二叉树中?

  • 查看答案
  • 给定程序中,函数fun的功能是:利用指针数组对形参ss所指字符串数组中的字符串按

    [主观题]给定程序中,函数fun的功能是:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中共有N个字符串,且串长小于M。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!

  • 查看答案
  • 下列给定程序中,函数proc()的功能是:传人一个整数n,计算如下公式的值。 t

    [试题]下列给定程序中,函数proc()的功能是:传人一个整数n,计算如下公式的值。 t=1/2-1/3-…-1/n 例如,若输入3,则应输出0.166667。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:

  • 查看答案
  • 下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1

    [主观题]下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、…… 例如,若给n输入7,则该项的斐波拉契数值为13。 请改正程序中的错误,使它能得出正确结果。 注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构。

  • 查看答案