MST
星途 面试题库

面试题:C语言数组名指针常量与动态内存分配的结合

编写一段C语言代码,首先通过动态内存分配创建一个整型数组,将数组名(作为指针常量)传递给一个函数,在该函数中利用数组名指针常量的特性,对数组中的元素进行升序排序,最后在主函数中打印排序后的数组。要求使用合适的排序算法,如冒泡排序或选择排序。
50.0万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>
#include <stdlib.h>

// 选择排序函数
void selectionSort(int *arr, int n) {
    int i, j, minIndex, temp;
    for (i = 0; i < n - 1; i++) {
        minIndex = i;
        for (j = i + 1; j < n; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }
        if (minIndex != i) {
            temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    }
}

int main() {
    int n, i;
    printf("请输入数组元素个数: ");
    scanf("%d", &n);

    // 动态内存分配创建整型数组
    int *arr = (int *)malloc(n * sizeof(int));
    if (arr == NULL) {
        printf("内存分配失败\n");
        return 1;
    }

    printf("请输入 %d 个整数:\n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    // 调用选择排序函数
    selectionSort(arr, n);

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

    // 释放动态分配的内存
    free(arr);

    return 0;
}