描述: 输入一组≥0的整数,① 从大到小排序后输出; ② 若排序后有连续整数,只输出连续数中最大和最小的两个数 (注意:输入的所有整数应各不相同,即:不用考虑两个整数相同的情况)。 输入:从键盘输入,一组≥0的整数,不考虑非法输入。 输出:排序后数据,各个整数之间可以以逗号(",")分隔。用C++语言书写
时间: 2024-03-09 07:48:23 浏览: 101
以下是使用C++语言实现的代码,可以实现输入一组整数,从大到小排序后输出,并且对于连续的整数只输出最大和最小的两个数:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> nums;
int num;
while (cin >> num) {
nums.push_back(num);
}
sort(nums.rbegin(), nums.rend()); // 从大到小排序
vector<int> result;
int start = 0;
for (int i = 1; i < nums.size(); i++) {
if (nums[i] + 1 != nums[i-1]) { // 不连续
if (start == i-1) { // 只有一个数
result.push_back(nums[start]);
} else { // 连续的数
result.push_back(nums[start]);
result.push_back(nums[i-1]);
}
start = i;
}
}
if (start == nums.size()-1) { // 只有一个数
result.push_back(nums[start]);
} else { // 连续的数
result.push_back(nums[start]);
result.push_back(nums[nums.size()-1]);
}
for (int i = 0; i < result.size(); i++) {
cout << result[i];
if (i < result.size()-1) {
cout << ",";
}
}
cout << endl;
return 0;
}
```
需要注意的是,上述代码中使用了vector来存储输入的整数,使用sort函数将其从大到小排序,然后遍历数组,对于连续的整数只输出最大和最小的两个数,最后按照要求输出排序后的结果,整数之间用逗号隔开。
阅读全文