利用malloc函数实现动态数组创建和销毁,并实现一组n个数据的排序功能,其中n为一个由用户输入指定的整数。
时间: 2023-07-15 14:11:26 浏览: 89
数据结构之数组Array实例详解
下面是一个示例程序,用于实现动态数组的创建和销毁,以及排序功能:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, i, j, temp;
int *arr; //声明动态数组指针
printf("请输入要创建的动态数组大小:");
scanf("%d", &n);
//使用malloc函数动态分配内存空间
arr = (int *)malloc(n * sizeof(int));
//判断是否成功分配内存空间
if (arr == NULL) {
printf("内存分配失败!");
exit(1);
}
printf("请输入%d个整数:\n", n);
//读入数据到动态数组中
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
//排序
for (i = 0; i < n - 1; i++) {
for (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;
}
}
}
printf("排序后的结果为:\n");
//输出排序后的结果
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
//释放动态分配的内存空间
free(arr);
return 0;
}
```
以上程序中,首先通过 `scanf()` 函数读入用户输入的动态数组大小 `n`,然后使用 `malloc()` 函数动态分配内存空间,并将指针赋值给 `arr`,如果分配失败,则调用 `exit()` 函数退出程序。之后通过 `for` 循环读入用户输入的数据到动态数组中,然后使用冒泡排序算法对数据进行排序。最后再使用 `for` 循环输出排序后的结果,并使用 `free()` 函数释放动态分配的内存空间。
阅读全文