/*#include <stdio.h> int main() { int n = 0; scanf("%d", &n); int arr[n + 1]; for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } //输入要插入的数 scanf("%d", &arr[n]); //直接排序 //就变成有序数列了 for (int i = 0; i < n; i++)//n 个数 ,排 n - 1 趟,因为n - 1个数 排好位置了,最后一个数自然就排好位置了 { for (int j = 0; j < n + 1 - i - 1; j++)//每一趟排 n + 1 - i - 1 次 { //升序 if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } //输出 for (int i = 0; i < n + 1; i++) { printf("%d ", arr[i]); } } //总结:全部输入到数组中 ,最后直接排序,就是有序数列了 */ #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #define NUM 51 int main() { int n = 0;//数组中数字的个数 while (~scanf("%d", &n)) { int arr[NUM] = { 0 }; //输入数组中的元素 for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } int insert = 0; //输入要插入的数 scanf("%d", &insert); //开始插入 //思路: //从大数开始比较,发现了 比要插入的数小的数就插入,否则大数往后移 int i = 0; for (i = n - 1; i >= 0; i--) { if (arr[i] > insert) { arr[i + 1] = arr[i];//大数向后移 } else if (arr[i] < insert) { arr[i + 1] = insert;//发现了比要插入的数小的数就在其后 插入 ,保持升序 break; } } if (i < 0)//数组中没有比要插入的数小的数。此时,要插入的数就只能放入首端。 { arr[0] = insert; } //打印 for (int j = 0; j < n + 1; j++) { printf("%d ", arr[j]); } } return 0; }