byeapple 2021-11-15 18:39 采纳率: 100%
浏览 38
已结题

这个c语言程序哪里错了?为什么查找不了?

#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;
}

  • 写回答

2条回答 默认 最新

  • 关注

    你题目是什么?
    你题目的解答代码如下:

    #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;
    }
    

    img

    如有帮助,望采纳!谢谢!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月23日
  • 已采纳回答 11月15日
  • 修改了问题 11月15日
  • 创建了问题 11月15日

悬赏问题

  • ¥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