输入 n (n<=100) 个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。 输入描述 输入数据有多组,每组占一行,每行的第一个数字为 n ,接着是 n 个整数, n=0 表示输入数据的结束,不做处理。 输出描述 对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行。
时间: 2024-03-23 17:36:07 浏览: 302
一个控制台应用程序从键盘输入你要排序的数的个数n ,然后输入要排序的n个数,按由小到大的顺序输出
5星 · 资源好评率100%
以下是一个C++程序,用于解决这个问题:
```c++
#include <iostream>
#include <algorithm>
#include <cstdlib>
using namespace std;
bool compare(int a, int b) {
return abs(a) > abs(b);
}
int main() {
int n;
while(cin >> n && n != 0) {
int arr[n];
for(int i=0; i<n; i++) {
cin >> arr[i];
}
sort(arr, arr+n, compare);
for(int i=0; i<n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
return 0;
}
```
在上面的程序中,我们使用一个`while`循环来读取多组输入数据,每组数据的第一个数字为`n`,表示接下来有`n`个整数。我们首先定义一个长度为`n`的整数数组`arr`,并依次读取这`n`个整数。
然后,我们使用`sort`函数对整数数组进行排序,排序的方式是按照绝对值从大到小排序,因此我们定义了一个名为`compare`的比较函数,用于比较两个整数的绝对值大小。
最后,我们输出排序后的结果。
程序的输入样例和输出样例分别为:
输入样例:
```
3 2 -4 3
4 0 1 3 2
0
```
输出样例:
```
-4 3 2
3 2 1 0
```
阅读全文