输入10个数,将其从大到小排序(利用指针实现)。
时间: 2024-03-14 08:46:25 浏览: 51
好的,可以使用指针来实现排序。下面是一个示例代码:
```c
#include <stdio.h>
#define MAXSIZE 10
void sort_desc(int *arr, int size);
int main() {
int arr[MAXSIZE];
int i;
printf("请输入%d个整数:\n", MAXSIZE);
for (i = 0; i < MAXSIZE; ++i) {
scanf("%d", &arr[i]);
}
sort_desc(arr, MAXSIZE);
printf("从大到小排序结果为:\n");
for (i = 0; i < MAXSIZE; ++i) {
printf("%d ", *(arr + i));
}
printf("\n");
return 0;
}
void sort_desc(int *arr, int size) {
int i, j, temp;
for (i = 0; i < size - 1; ++i) {
for (j = i + 1; j < size; ++j) {
if (*(arr + i) < *(arr + j)) {
temp = *(arr + i);
*(arr + i) = *(arr + j);
*(arr + j) = temp;
}
}
}
}
```
首先,在 `main` 函数中,我们定义了一个长度为 `MAXSIZE` 的整型数组 `arr`,并通过循环的方式从标准输入中读取用户输入的10个整数。
接下来,我们调用 `sort_desc` 函数来将数组进行从大到小排列。该函数使用了两层循环来实现排序,外层循环从数组的第一个元素开始,内层循环从外层循环的下一个元素开始,如果内层循环中的元素比外层循环中的元素大,则交换它们的值。
最后,我们再次循环输出已排序的数组元素。注意在输出时,我们使用了指针的方式来访问数组元素,即 `*(arr + i)` 的形式。