#include <stdio.h> //不定义N+1的数组,直接比较,按顺序打印,若比插入的值小,先打印,否则打印插入的值 int main() { int N; int i=0; int num=0; int j=0; //打印插入值的标志 scanf("%d",&N); int arr[N]; for (i=0;i<N;i++) { scanf("%d",&arr[i]); //先存原来的有序序列 } scanf("%d",&num); //输入一个需要插入的值 for (i=0;i<N; i++) { if (arr[i]<num) { printf("%d ",arr[i]); //如果数组内的值小,就打印 } else if (arr[i]>num) { printf("%d ",num); //如果插入的值小,就打印,并定义一个已经打印的标志 j=1; break; //打印插入值之后,跳出循环,否则会一直打印插入值 } } for (; i<N; i++) //循环打印有序数组的剩余值 { printf("%d ",arr[i]); } if (j==0) //观测标志,若没打印,说明插入的值比原来数组内的都大,补打印一个要插入的值 { printf("%d ",num); } return 0; }