#include <stdio.h> #include <stdlib.h> int main() { int n; while (scanf("%d", &n) != EOF) { // 注意 while 处理多个 case int* p = malloc(sizeof(int) * (n + 1)); if (p == NULL) { perror("main"); return 1; } int i; //输入数据 for (i = 0; i < n; i++) { scanf("%d", &p[i]); } int ret; scanf("\n%d", &ret); int tmp = ret; //操作,外循环用来比较 for (i = 0; i < n; i++) { //若插入的输小于某个数,那么将这个数插在前面,即将当前位置依次往后移动一个 if (ret < p[i]) { tmp = p[i]; //暂存p[i] p[i] = ret; //交换 ret = tmp; //用当时的p[i]去跟后面的比较,虽然都能通过 } } //将取出的ret与原来数组中的最后一位进行比较,肯定是会大于,然后将这个数放到数组的末尾 if (ret > p[n - 1]) { p[n] = ret; } for (i = 0; i <= n; i++) { printf("%d ", p[i]); } free(p); p = NULL; } return 0; }