首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
N个有序整数数列已放在一维数组中,给定下列程序中,函数fun()的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,则返回其下标值:反之,则返回-1。 折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high
N个有序整数数列已放在一维数组中,给定下列程序中,函数fun()的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,则返回其下标值:反之,则返回-1。 折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high
admin
2013-06-12
47
问题
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
);
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");
}
选项
答案
(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]两个条件段的结果不一样,所以要分开考虑。
转载请注明原文地址:https://kaotiyun.com/show/erJp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
若有以下的说明和语句,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是______。 int t[3][3], *pt[3], k; for(k=0; k<3 k++) pt[k]=&t[k][0]
有以下程序 void fun(int *a,int i,int j) { int t; if (i<j) { t=a[j]; a[i]=a[j]; a[j]=t; i++; j--; fun(a,i,j); } } main() { int x[]={2,
以下叙述中,错误的是______。
评价排序算法优劣的主要标准是______和______。
给定程序MODI1.C中函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据赋0~m-1的值。#include<Stdio.h>#include<conio.h>#include<stdlib.h>typed
给定程序MODI1.C中函数fun的功能是:求出字符串中最后一次出现的子符串的地址,通过函数值返回,在主函数中输入从此地址开始的字符串;若未找到,则函数值为MULL。例如,当字符串中的内容为:"abcdabfcdx",t中的内容为:"ab"时,输出结果应
给定的程序中,fun函数的功能是:将s所指字符串中除了下标为偶数,同时ASCH值为偶数的字符除外,其余的全部删除;串中剩余字符所形成的一个新串放在t所指的数组中。如:若s所指字符串中的内容为:”desktop12345",t所指字符串中的内容为:"dtp2
一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用______。
以下程序中,fun()函数的功能是求3行4列二维数组每行元素中的最大值,请填空。voidfun(int,int,int(*)[4],int*);main(){inta[3][4]={{12,41,36,28},{19,33
有如下程序main(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];prin
随机试题
一个人确立自己的目标,并自觉地调节自己的行为,克服困难,努力去实现目标的心理品质是()
下颌下腺导管开口于
试简述胆红素在入休内的转运和排泄。
挚痛的临床意义是()
市场有狭义和广义之分,就广义而言,市场的含义是()
合同的变更,仅仅涉及()。
薪酬设计的原则不包括()。
赫尔巴特指出:“我想不到有任何无教学的教育,正如在相反的方面,我不承认有任何无教育的教学。”这说明了教学过程具有()特点。
嵌入式系统使用的存储器有多种类型,按照其存取特性可分为随机存取存储器和只读存储器,它们通常都用三个大写英文字母表示,即【57】和【58】。
ProfessorRobinson:Alargemeteoriteimpactcraterinacertainregionwasthoughttobethecluetoexplainingthemassextinc
最新回复
(
0
)