[问题描述]输入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 [样例说明][评分标准]
时间: 2023-08-18 20:12:06 浏览: 48
下面是使用指针实现按绝对值大小排序的C++代码:
```c++
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
void absSort(float *a, int n)
{
for(int i=0; i<n-1; i++)
{
for(int j=i+1; j<n; j++)
{
if(abs(a[i]) < abs(a[j]))
{
float temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
int main()
{
float a[10];
for(int i=0; i<10; i++)
{
cin >> a[i];
}
absSort(a, 10);
for(int i=0; i<10; i++)
{
if(i == 9)
printf("%.2f\n", a[i]);
else
printf("%.2f,", a[i]);
}
return 0;
}
```
首先,我们定义了一个absSort函数,该函数接受一个float类型的指针a和数组的长度n作为参数。在该函数中,我们使用了冒泡排序的思想,将数组中的元素按照绝对值从大到小排序。
在主函数中,我们首先定义了一个大小为10的float类型数组a,并通过循环输入了10个实数。接着,我们调用absSort函数对数组a进行排序。最后,我们再次循环数组a,并按照题目要求输出每个数的小数点后两位有效数字。
注:这里使用了printf函数来输出浮点数,这是因为cout输出浮点数的时候会有精度损失。