C语言编程题,求解答!(要求写出详细注释)

有15个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。输入输出示例为:输入-12-... 有15个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。输入输出示例为:

输入-12 -8 12 24 45 46 56 58 68 78
输入要查找的数据 58
输出 58的下标为7
输入要查找的数据 21
输出 无此数
展开
 我来答
小瓜瓜的大店
2015-07-05 · 生命似一部小说,其价值在于贡献而不在短长
小瓜瓜的大店
采纳数:16 获赞数:57

向TA提问 私信TA
展开全部
#include<stdio.h>
void main()
{
int in[15],ins,i,k=14,j=0;
printf("请按照从小到大的顺序输入15个数\n");
for(i=0;i<15;i++) scanf("%d",&in[i]);
printf("请输入要查找的数:");
scanf("%d",&ins);
i=(j+k)/2;
while(j<=k)
{
if(in[i]>ins)
k=i-1;
else
if(in[i]<ins)
j=i+1;
else break;
i=(j+k)/2;
}
printf("你查找的是其中的第%d个数。",i+1);/*i是他的存储的顺序数,i+1才是他在输入数组中的位置数*/
}
百度网友ae58d71
推荐于2016-05-17 · TA获得超过350个赞
知道小有建树答主
回答量:371
采纳率:100%
帮助的人:255万
展开全部
#include<stdio.h>
int main()
{
int i,n,a[10],left,right,middle;
printf("请输入数组数据: ");//当前数组长度为10
for(i=0;i<10;i++)
scanf("%d",&a[i]);
left=0;right=9;
printf("输入要查找的数: ");
scanf("%d",&n);
while(left<=right){
middle=(left+right)/2;
if(a[middle]==n)
{
printf("%d的下标为:%d\n",a[middle],middle);
break;
}
else if(n>a[middle])
left=middle+1;
else
right=middle-1;
}
if(left>right)
printf("无此数\n");
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式