#include<stdio.h>
void order (int a[]);
void order (int a[])
{
int i,j,k,max,t;
for(i=0;i<15;i++)
{
max=i;
for(j=i+1;j<=14;j++)
{
if(a[max]<a[j])
max=j;
}
if(max!=i)
{
t=a[max];
a[max]=a[i];
a[i]=t;
}
}
}
int search(int a[],int x)
{
int low,high,mid;
low=0;
high=14;
while(low<=high)
{
mid=(low+high)/2;
if(x>a[mid])
low=mid+1;
else if(x<a[mid])
high=mid-1;
else
return mid;
}
return -1;
}
int main(void)
{
int j,x,count;
int a[15]={21,34,52,15,64,75,29,43,2,47,5,1,0,11,13};
order(a);
for(count=0;count<=14;count++)
{
printf("a[%d]=",count);
printf("%d\n",a[count]);
}
scanf("%d",&x);
j=search(a,x);
if(j==-1)
printf("没有可查询的x");
else printf("%d",j);
return 0;
}
这个c语言程序哪里错了?为什么查找不了?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CSDN专家-天际的海浪 2021-11-15 18:42关注
你题目是什么?
你题目的解答代码如下:#include <stdio.h> void order(int a[]); void order(int a[]) { int i, j, k, max, t; for (i = 0; i < 15; i++) { max = i; for (j = i + 1; j <= 14; j++) { if (a[max] < a[j]) max = j; } if (max != i) { t = a[max]; a[max] = a[i]; a[i] = t; } } } int search(int a[], int x) { int low, high, mid; low = 0; high = 14; while (low <= high) { mid = (low + high) / 2; if (x < a[mid]) // > 改成 < low = mid + 1; else if (x > a[mid]) // < 改成 > high = mid - 1; else return mid; } return -1; } int main(void) { int j, x, count; int a[15] = {21, 34, 52, 15, 64, 75, 29, 43, 2, 47, 5, 1, 0, 11, 13}; order(a); for (count = 0; count <= 14; count++) { printf("a[%d]=", count); printf("%d\n", a[count]); } scanf("%d", &x); j = search(a, x); if (j == -1) printf("没有可查询的x"); else printf("%d", j); return 0; }
如有帮助,望采纳!谢谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?
- ¥15 c++头文件不能识别CDialog