...个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个...
发布网友
发布时间:2024-10-24 09:33
我来回答
共5个回答
热心网友
时间:2024-11-09 18:21
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("<格式化字符串>",<参量表>)。
3、格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
4、作用:在c语言中产生格式化输出的函数(定义在stdio.h中),其向终端(显示器、控制台等)输出字符。
热心网友
时间:2024-11-09 18:23
#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;
}
热心网友
时间:2024-11-09 18:22
#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);//找到了
}
热心网友
时间:2024-11-09 18:26
这个不就是数组吗,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); /*输出这个数是数组中的第几个元素*/
}
热心网友
时间:2024-11-09 18:19
//稍稍改了一点
#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;
}