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日

悬赏问题

  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
  • ¥15 前端echarts坐标轴问题