输入 10 个数,按绝对值从大到小排序后输出。(要求用指针做) 【输入形式】输入10个float实数 【输出形式】以小数点后两位有效数字输出从大到小数列! 【样例输入】11.3 -24.1 31.6 -41 57.6 -68.1 72.5 -89.7 96.8 -100.3 【样例输出】 -100.30,96.80,-89.70,75.50,-68.10,57.60,-41.00,31.60,-24.10,11.30用c来做
时间: 2023-11-27 18:50:36 浏览: 92
下面是使用指针实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 10
void sort(float *arr, int n);
int main()
{
float nums[N];
// 输入10个实数
printf("请输入10个实数:\n");
for (int i = 0; i < N; i++)
{
scanf("%f", &nums[i]);
}
// 按绝对值从大到小排序
sort(nums, N);
// 输出排序结果
printf("排序结果:\n");
for (int i = 0; i < N; i++)
{
printf("%.2f ", nums[i]);
}
printf("\n");
return 0;
}
void sort(float *arr, int n)
{
for (int i = 0; i < n - 1; i++)
{
for (int j = i + 1; j < n; j++)
{
if (fabs(arr[i]) < fabs(arr[j]))
{
float temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
```
我们定义了 `sort` 函数来实现排序,该函数接受一个指向数组首元素的指针和数组元素个数。在排序过程中,我们使用了 `fabs` 函数来获得实数的绝对值。最后,我们输出排序结果,保留两位小数。
阅读全文