输入一个整数n(1<n≤10)和n个有序整数(从大到小的顺序),今输入一个数x,要求按原来排序的规c语言题

输入一个整数n(1<n≤10)和n个有序整数(从大到小的顺序),今输入一个数x,要求按原来的排序的规律将它插入有序数组中,若原来序列中已有x,则将原序列中的x删除。
输入输出示例:
第一次运行
Inputn: 5
Input5 integers: 3 5 6 7 9
Inputx:8
Output:3 5 6 7 8 9
第二次运行
Inputn:4
Input 4integers:1 4 6 8
Inputx:4
Output: 1 6 8

把题目部分翻译一下:

输入一个整数n,表示接下来会输入n个有序整数(从大到小的顺序)。
然后输入一个数x,要求按原来排序的规则将它插入到这个有序序列中。
最后输出这个新的有序序列。

这里提供一个 C++ 的示例代码来解决这个问题:

#include <iostream>
using namespace std;

int main() {
const int MAX_N = 10;
int n, a[MAX_N], x;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
cin >> x;

int pos = n; // pos 表示要插入的位置
for (int i = 0; i < n; i++) {
if (x >= a[i]) { // 注意题目中是“从大到小”的顺序,所以这里是“大于等于”
pos = i;
break;
}
}

// 把 x 插入到 a 中
for (int i = n; i > pos; i--) {
a[i] = a[i - 1];
}
a[pos] = x;
n++; // 序列长度增加 1

// 输出新的序列
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;

return 0;
}

这个代码中,我们用一个数组 a 来存储这个有序序列,用一个变量 x 来存储要插入的数,用变量 pos 来表示要插入的位置。
首先读入这个有序序列和要插入的数,然后遍历这个序列,找到第一个比 x 小的位置,即为要插入的位置。接着把 x 插入到 a 中,并把序列长度加 1,最后输出新的序列。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜