编程:有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个

编程:有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。谢谢... 编程:有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。谢谢 展开
 我来答
问明6E
高粉答主

2019-06-29 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:13.1万
展开全部

include <stdio.h>

int main()

{

int n[15] = {99, 97, 87, 76, 65, 63, 59, 58, 51, 43, 32, 31, 28, 15, 6};

int num, low, high, mid;

for (low=0, high=14, printf("Please enter number: "), scanf("%d", &num); low<=high;){

mid=(low+high)/2;

if (num>n[mid]) high=mid-1;

else if (num<n[mid]) low=mid+1;

else{

printf("%d is No.%d number!\n", num, mid+1);

break;

}

}

if (num!=n[mid]) printf("No match!\n");

return 0;

}

扩展资料:

printf()函数用法:

1、printf()函数格式化输出函数,一般用于向标准输出设备按规定格式输出信息。

2、printf()函数的调用格式为:printf("&lt;格式化字符串&gt;",&lt;参量表&gt;)。

3、格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

4、作用:在c语言中产生格式化输出的函数(定义在stdio.h中),其向终端(显示器、控制台等)输出字符。

匿名用户
2011-03-19
展开全部
#include<stdio.h>
void main()
{
int a[16],i,t,j;
printf("please input 15 numbers :\n");
for(j=1;j<16;j++)
scanf("%d",&a[j]);
printf("\n");
for(j=1;j<16;j++)
for(i=j+1;i<16;i++)
if (a[j]<a[i])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
puts("Please input the number to be found");
scanf("%d",&t);
putchar('\n');
i=1;
j=15;
//i,j表示在在数组a的第i个到第j个元素的范围内查找t
while (i<j)//i==j表明t只有可能是数组a的第i个元素
{
if (t<=a[(i+j)/2]) j=(i+j)/2;//此时t在第i个到第(i+j)/2个元素的范围内
else i=(i+j)/2+1;//此时t在第(i+j)/2+1个到第j个元素的范围内
}
if (a[i]!=t) puts("No such element!");//没找到
else printf("%d is element %d of the array.\n",t,i);//找到了
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d3e418b2c
2007-05-30 · TA获得超过2195个赞
知道大有可为答主
回答量:1361
采纳率:0%
帮助的人:1705万
展开全部
这个不就是数组吗,a[15]
#include<stdio.h>
main()
{
int i,num,a[15];
for(i=0;i<15;i++)scanf("%d",&a[i]); /*先输入这数组的15个数*/
scanf("%d",&num); /*然后输入一个数*/
for(i=0;i<15;i++)if(a[i]==num)break;
printf("ta shi di %d ge shu.",i+1); /*输出这个数是数组中的第几个元素*/
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mr_shj
2015-04-22 · TA获得超过2682个赞
知道大有可为答主
回答量:1665
采纳率:94%
帮助的人:1392万
展开全部
#include<stdio.h>

void main()
{
int a[15]={15,14,13,12,11,10,9,8,7,5,4,3,2,1,0};
int M=0,m=14,n=19,k; /*由于有15个数,最大下标为m=15-1=14 */
scanf("%d",&n);
if (a[M]<n || a[m]>n)
printf("找不到这个数\n");
else
while((a[M]>n) && (a[m]<n)){
/* printf("%d,%d\n",M,m);*/
k=(M+m)/2;
if (a[k]==n) {printf("a[%d]=%d",k,n);break;}
if (m-M<=1) {printf("找不到\n");break;}
if (a[k]>n) M=k; else m=k;
}
return;
}
更多追问追答
追问
怎么定义这15个数呢
M,n的值又是怎么回事
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mr_shj
2015-05-25 · TA获得超过2682个赞
知道大有可为答主
回答量:1665
采纳率:94%
帮助的人:1392万
展开全部
//稍稍改了一点
#include <stdio.h>
int main()
{
int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
int l=0,h=14,x,m;
printf("输入数字:");
scanf("%d",&x);
while(l<h)
{
m=(l+h)/2;
if(x==a[m]) break;
if(x>a[m])
h=m;
else
l=m;
if ((l==h) && x!=a[h]) {
printf("无此数");
return 0;
}
}
printf("是第%d个元素",m+1);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式