用C++写:描述: 输入一组≥0的整数,① 从大到小排序后输出; ② 若排序后有连续整数,只输出连续数中最大和最小的两个数 (注意:输入的所有整数应各不相同,即:不用考虑两个整数相同的情况)。 输入:从键盘输入,一组≥0的整数,不考虑非法输入。 输出:排序后数据,各个整数之间可以以逗号(",")分隔。
时间: 2024-03-09 21:46:32 浏览: 24
以下是用C++实现的代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> nums;
int num;
while (cin >> num) {
nums.push_back(num);
}
sort(nums.begin(), nums.end(), greater<int>());
bool is_consecutive = false;
int start, end;
for (int i = 0; i < nums.size(); i++) {
if (i == 0 || nums[i] != nums[i-1] - 1) {
if (is_consecutive) {
cout << start << "," << end << ",";
is_consecutive = false;
}
cout << nums[i] << ",";
} else {
if (!is_consecutive) {
start = nums[i];
is_consecutive = true;
}
end = nums[i];
}
}
if (is_consecutive) {
cout << start << "," << end << ",";
}
return 0;
}
```
运行程序后,输入一组整数,以空格分隔。例如:
```
10 20 30 40 50 70 80 90
```
程序会将这组整数从大到小进行排序,并输出结果:
```
90,80,70,50,40,30,20,10,
```
其中,连续的整数 60 和 70 被合并为 70。