C语言编程题,求解答!(要求写出详细注释)
有15个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。输入输出示例为:输入-12-...
有15个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。输入输出示例为:
输入-12 -8 12 24 45 46 56 58 68 78
输入要查找的数据 58
输出 58的下标为7
输入要查找的数据 21
输出 无此数 展开
输入-12 -8 12 24 45 46 56 58 68 78
输入要查找的数据 58
输出 58的下标为7
输入要查找的数据 21
输出 无此数 展开
2个回答
展开全部
#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才是他在输入数组中的位置数*/
}
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才是他在输入数组中的位置数*/
}
展开全部
#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;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询