使用c++写代码 Problem Description 输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。 Input 输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。 Output 对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行。 Sample Input 3 3 -4 2 4 0 1 2 -3 0 Sample Output -4 3 2 -3 2 1 0
时间: 2024-03-10 11:44:19 浏览: 116
好的,这是一个简单的排序问题,我们可以使用 STL 中的 sort 函数来完成排序。下面是代码实现:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
using namespace std;
bool cmp(int a, int b) {
return abs(a) > abs(b);
}
int main() {
int n;
while (cin >> n && n != 0) {
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
sort(nums.begin(), nums.end(), cmp);
for (int i = 0; i < n; i++) {
cout << nums[i] << " ";
}
cout << endl;
}
return 0;
}
```
我们定义了一个 cmp 函数作为 sort 的比较函数,用来按照绝对值从大到小排序。然后每次读入 n 个整数,存储在一个 vector 中,并使用 sort 函数进行排序,最后输出排序后的结果即可。
阅读全文