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 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?