问题描述】输入 10 个数,按绝对值从大到小排序后输出。(要求用指针做)C语言
时间: 2023-11-27 20:49:14 浏览: 242
可以使用冒泡排序法来实现这个功能,具体步骤如下:
1. 从键盘输入 10 个数,存储在数组中
2. 定义一个指针数组,把每个元素的地址赋给指针数组
3. 使用冒泡排序法按照绝对值从大到小排序,每次比较时用指针指向的元素的绝对值进行比较
4. 输出排序后的结果
下面是实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
void sort(int *arr[], int n);
int main()
{
int i, n = 10;
int arr[10];
int *p[10];
printf("请输入10个数:\n");
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
p[i] = &arr[i];
}
sort(p, n);
printf("排序后的结果为:\n");
for (i = 0; i < n; i++)
{
printf("%d ", *p[i]);
}
return 0;
}
void sort(int *arr[], int n)
{
int i, j;
int *temp;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if (abs(*arr[j]) < abs(*arr[j + 1]))
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
在这个代码中,我们定义了一个 `sort` 函数,这个函数接收一个指针数组 `arr` 和数组长度 `n` 作为参数。在函数内部,我们使用冒泡排序法按照绝对值从大到小排序,每次比较时用指针指向的元素的绝对值进行比较。最后,在主函数中,我们首先输入 10 个数,并将每个元素的地址赋给指针数组;然后调用 `sort` 函数进行排序,最后输出排序后的结果。
阅读全文