问题描述
【问题描述】编写程序,向有序序列中插入一个元素。设一个大小为10的一维数组中保存了一个有9个元素的非递减有序的整数序列,从键盘输入一个整数,将该整数插入到有序序列中,插入之后序列仍保持有序。输出插入前的序列和插入后的序列。
说明:有序序列通过键盘输入得到,且输入过程通过程序控制,只能输入非递减序列,若输入过程中,某元素比前一元素小,则该元素输入视为无效,需要重新输入此元素。
【输入形式】输入非递减的9个整数,输入待插整数
【输出形式】插入前的序列和插入后的序列
【样例输入】
3 3 4 5 3 7 8 10 12 15
6
【样例输出】
Before:3 3 4 5 7 8 10 12 15
After:3 3 4 5 6 7 8 10 12 15
【样例说明】
输入有序序列过程中,第5个整数3因小于前一个整数5,为无效输入,重新输入第5个整数为7
第2行输入待插入整数为6
输出时,每个数据占4列列宽左对齐
解决方案
#include "stdio.h"
int main() {
int array[10];
int i, index = 0;
int row2;
scanf("%d", &array[0]);
for (i = 1; i < 9; i++) {
do {
scanf("%d", &array[i]);
} while (array[i] < array[i - 1]);
}
scanf("%d", &row2);
printf("Before:");
for (i = 0; i < 9; i++) {
printf("%-4d", array[i]);
}
printf("\nAfter:");
for (i = 0; i < 10; i++) {
if (row2 < array[i]) {
index = i;
break;
}
}
for (i = 9; i > index; i--) {
array[i] = array[i - 1];
}
array[index] = row2;
for (i = 0; i < 10; i++) {
printf("%-4d", array[i]);
}
return 0;
}