Famiglistimo_Tea 2021-12-28 14:43 采纳率: 50%
浏览 37
已结题

实现search()函数实现查找有序数组中是否包含某个元素,如果包含打印出该数组元素下标,如果不包含,则打印“数组中无该元素”。 并在主函数中完成调用。

#include <stdio.h>
void print(int arr[],int n){
……(打印数组)
printf("\n");
}
void reverse(int arr[],int n){
int left = 0;
int right = n-1;
……(实现数组转置)
}
void sort(int arr[],int n){
int i =0,j=0;
int tmp=0;
……(实现冒泡排序过程)
}
int search(int arr[],int n,int key){ //key为要查找的元素
int index = -1;
……(具体查找过程实现)
return index; //(函数返回值)
}
int main()
{
int sz=0;
sz = ……(计算数组长度)
print(arr,sz);
……(调用转置函数reverse)
…… (调用打印函数print)
……(调用冒泡排序函数sort)
……(调用打印函数print)
printf("请输入一个数值: ");
……从键盘接收输入一个数值
……(调用查找函数search在数组中查找从键盘输入的值)
if( …判断条件… ){
printf("数组中无该元素\n");
}else{
…… 打印找到的数组下标
}
return 0;
}

  • 写回答

1条回答 默认 最新

  • -Undefined_ 2021-12-28 14:54
    关注
    #include <stdio.h>
    void print(int arr[], int n) {
        int i;
        for(i = 0; i < n; i++) {
            printf("%d ", arr[i]);
        }
        printf("\n");
    }
    void reverse(int arr[], int n) {
        int left = 0;
        int right = n - 1;
        int t;
        for(; left < right; left++, right--) {
            t = arr[left];
            arr[left] = arr[right];
            arr[right] = t;
        }
    }
    void sort(int arr[], int n) {
        int i = 0, j = 0;
        int tmp = 0;
        for(i = 0; i < n - 1; i++) {
            for(j = 0; j < n - i - 1; j++) {
                if(arr[j] > arr[j + 1]) {
                    tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;
                }
            }
        }
    }
    int search(int arr[], int n, int k) {
        int i;
        for(i = 0; i < n; i++) {
            if(arr[i] == k) {
                return i;
            }
        }
        return -1;
    }
    int main() {
        int sz = 0, k;
        int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        sz = sizeof(arr) / sizeof(arr[0]);
        printf("原数组:\n");
        print(arr, sz);
        reverse(arr, sz);
        printf("逆置后数组:\n");
        print(arr, sz);
        sort(arr, sz);
        printf("排序后数组:\n");
        print(arr, sz);
        printf("输入你要查询的元素:\n");
        scanf("%d", &k);
        int p = search(arr, sz, k);
        if(p==-1){
            printf("数组中无该元素\n");
        }else{
            printf("%d",p);
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月5日
  • 已采纳回答 12月28日
  • 创建了问题 12月28日

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)