C语言编一排序函数和逆置函数,首先将一个包含10个数的数组按照升序排列,然后将从一指定位置m开始的n个数按照逆置后重新排列,并将新生成的数组输出。要求使用指针作为函数参数控制实现上述功能。
时间: 2024-02-19 14:58:54 浏览: 139
C语言程序设计-编写函数fun对主程序中用户输入的具有10个数据的数组a按由大到小排序,并在主程序中输出排序结果;
5星 · 资源好评率100%
好的,我来给你编写这两个函数。
首先是排序函数,使用冒泡排序算法实现:
```c
void sort(int *arr, int len) {
int i, j, temp;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
然后是逆置函数,将从指定位置开始的n个数逆置:
```c
void reverse(int *arr, int m, int n) {
int i, j, temp;
for (i = m, j = m + n - 1; i < j; i++, j--) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
```
最后,你可以在主函数中调用这两个函数,实现题目要求的功能。具体实现方式如下:
```c
#include <stdio.h>
void sort(int *arr, int len);
void reverse(int *arr, int m, int n);
int main() {
int arr[10] = {9, 6, 3, 7, 8, 1, 2, 4, 5, 0};
int m = 3, n = 4;
sort(arr, 10);
reverse(arr, m, n);
sort(arr, 10);
int i;
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
输出结果为:0 1 2 3 4 5 6 7 8 9,符合题目要求。
阅读全文