H2330819027


私信TA

用户名:dotcpp0701405

访问量:8228

签 名:

指向函数指针数组的指针int(*(*p[4]))(int int)

等  级
排  名 127
经  验 7445
参赛次数 1
文章发表 79
年  龄 18
在职情况 学生
学  校 Hzu university
专  业 软件工程

  自我简介:

解题思路:

注意事项:

参考代码:

方法1:使用冒泡排序

#include // 冒泡排序函数
void bubbleSort(int arr[], int n) {
    int temp;
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - 1 - i; j++) {
            if (arr[j] < arr[j + 1]) { // 按从大到小排序,如果前一个元素小于后一个元素,则交换它们
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

int main() {
    int arr[10];

    // 从用户输入读取10个整数并存储在数组中
    for (int i = 0; i < 10; i++) {
        scanf("%d", &arr[i]);
    }

    // 使用冒泡排序将数组按从大到小排序
    bubbleSort(arr, 10);

    // 打印排序后的数组
    for (int i = 0; i < 10; i++) {
        printf("%d ", arr[i]);
    }
    
    printf("\n");

    return 0;
}


方法2:使用选择排序

#include // 选择排序函数
void selectionSort(int arr[], int n) {
    int temp;
    for (int i = 0; i < n - 1; i++) {
        int maxIndex = i; // 假定当前未排序部分的第一个元素是最大的
        for (int j = i + 1; j < n; j++) {
            if (arr[j] > arr[maxIndex]) { // 找到更大的元素
                maxIndex = j;
            }
        }
        // 将最大的元素与未排序部分的第一个元素交换
        temp = arr[i];
        arr[i] = arr[maxIndex];
        arr[maxIndex] = temp;
    }
}

int main() {
    int arr[10];

    // 从用户输入读取10个整数并存储在数组中
    for (int i = 0; i < 10; i++) {
        scanf("%d", &arr[i]);
    }

    // 使用选择排序将数组按从大到小排序
    selectionSort(arr, 10);

    // 打印排序后的数组
    for (int i = 0; i < 10; i++) {
        printf("%d ", arr[i]);
    }
    
    printf("\n");

    return 0;
}


方法3:使用qsort快速排序函数

qsort 函数是C标准库中用于进行快速排序的函数,它允许你对一个数组中的元素进行排序。以下是 qsort 函数的基本用法:

void qsort(void *base, size_t numElements, size_t sizeOfElement, int (*comparator)(const void *, const void *));

下面是各个参数的解释:


base:指向要排序的数组的起始地址的指针。

numElements:数组中的元素数量。

sizeOfElement:每个元素的大小(以字节为单位)。

comparator:比较函数的指针,用于确定元素的相对顺序。

比较函数 comparator 接受两个 const void * 类型的指针参数,这两个指针分别指向数组中的两个元素。比较函数返回一个整数值,用于表示这两个元素的相对顺序。根据返回值的不同,qsort 函数会按升序或降序对数组中的元素进行排序。


如果比较函数返回负值,表示第一个元素应该排在第二个元素之前。

如果比较函数返回正值,表示第一个元素应该排在第二个元素之后。

如果比较函数返回零,表示两个元素相等,它们的相对位置不变。

#include #include // 比较函数,用于qsort排序
int compare(const void *a, const void *b) {
    int num1 = *(int*)a; // 将a转换为int指针,然后获取值
    int num2 = *(int*)b; // 将b转换为int指针,然后获取值

    if (num1 < num2) {
        return 1; // 如果num1小于num2,返回1,表示应该交换它们的位置
    } else if (num1 > num2) {
        return -1; // 如果num1大于num2,返回-1,表示不需要交换它们的位置
    } else {
        return 0; // 如果num1等于num2,返回0,表示它们相等
    }
}

int main() {
    int arr[10];

    // 从用户输入读取10个整数并存储在数组中
    for (int i = 0; i < 10; i++) {
        scanf("%d", &arr[i]);
    }

    // 使用qsort对数组进行排序,使用自定义的compare函数进行比较
    qsort(arr, 10, sizeof(arr[0]), compare);

    // 打印排序后的数组
    for (int i = 0; i < 10; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}


 

0.0分

2 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区