首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
N个有序整数数列已放在一维数组中,给定下列程序中,函数fun()的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,则返回其下标值:反之,则返回-1。 折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high
N个有序整数数列已放在一维数组中,给定下列程序中,函数fun()的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,则返回其下标值:反之,则返回-1。 折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high
admin
2013-06-12
42
问题
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://www.kaotiyun.com/show/erJp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
以下程序的输出结果是______。 main() { int i, x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1]; for(i=0;i<4;i+=2)printf("%d",p[i]); }
有以下程序 #include <stdio.h> main() { int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL; *q=*(p+5); printf("%d %d\n",*p,*q); } 程序运
若从键盘输入34,则以下程序输出的结果是______。#include<stdio.h>main(){inta;scanf("%d",&a);if(a>30)printf("%d",a);
执行以下程序后,输出’*’号的个数是______。#include<stdio.h>main(){inti,j;for(i=1;i<6;i++)for(j=2;j<=i;j++)putch
fread(buf,32,2,fp)的功能是______。
对于长度为8的顺序存储结构的有序表,若采用二分查找法查找,在等概率的情况下的平均查找长度为______的值除以8。
一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用______。
下列程序是处理C盘根目录下的a.txt文件,统计该文件中字符的个数。请填空,使程序完整。#include<stdio.h>main(){FILE*fp;charch;longnum=0;if
以下程序的功能是进行位运算。 main() { unsigned char a,b; a=7^3;b=-4&3; printf("%d %d\n",a,b); } 程序运行后的输出结果是______.
函数min()的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空#include<stdio.h>structnode{intdata;structn
随机试题
慢性阻塞性肺病最常见的原因是()
患儿男,58天。34周早产,出生体重2100g,生后用婴儿奶粉喂养,食欲佳,目前检查血红蛋白100g/L,红细胞数2.8×1012/L,诊断为生理性贫血。护士对家长进行用药指导中错误的一项是
被告人吴某,男,33岁,个体工商户。2004年11月与其隔壁开杂货店的张某、田某夫妇发生纠纷,将张某头部颅骨打伤,因抢救无效死亡;田某受轻微伤。在侦查阶段,田某委托诉讼代理人向公安机关提出赔偿要求,经调解,由吴某一次性付给田某人民币5万元。人民检察院对吴某
企业发生解散、被依法撤销、被依法宣告破产等情形之一的,应自该情形发生之日起30E内办理( )。
根据公司法律制度的规定,股份有限公司采取募集方式设立的,认股人缴纳出资后,有权要求返还出资的情形有()。
甲公司是一家汽车制造公司,经营状况良好。在董事长的提议下,战略管理人员利用SWOT模型对本公司的内部环境进行了分析。分析报告显示,汽车销售环节的利润率非常高,于是董事长决定在当地成立自己的销售专卖店。根据以上资料分析,该公司采取的战略是()。
“智如泉源,行可以为仪表者,人之师也。”(《韩诗外传》)这句话告诉我们,教师()。(2012年上半年中学真题)
400,(),
根据下面的材料,回答下列题。2014年1—5月,我国软件和信息技术服务业实现软件业务收入约13254亿元,同比增长20.9%,比去年同期回落3.3个百分点。其中,软件产品完成收入4141亿元,信息系统集成服务完成收入2649.3亿元,信息技术咨询
天安门事件
最新回复
(
0
)