又来一个问题:任意输入一个一维数组进行排序(注意是输入的数组哦,不是已排好的),再向数组中插入一个元素
问了好多人都是用固定数组
#include <stdio.h> #include <stdlib.h> void prt_arr(int *p, int i) { int j; for(j = 0; j < i; j++) { printf("%d ", *(p + j)); } } void sort_arr(int *p, int i) { int j, k, t = 0; i--; for(j = 0; j < i; j++) { for(k = 0; k < (i - j); k++) { if(*(p + k) > *(p + k + 1)) { t = *(p + k); *(p + k) = *(p + k + 1); *(p + k + 1) = t; } } } } int add_num(int *p, int i) { i++; p = realloc(p, i * (sizeof(int))); if(p != NULL) { scanf("%d", p + i - 1); } else { printf("ERROR REALLOC!\n"); exit(1); } return i; } int main(void) { int i = 0 , num, *parr_num = malloc(1 * sizeof(int)); if(parr_num != NULL) { while(scanf("%d", &num) > 0) { *(parr_num + i) = num; parr_num = realloc(parr_num, (i + 2) * (sizeof(int))); if(parr_num != NULL) { i++; } else { printf("ERROR REALLOC!\n"); exit(1); } } } else { printf("ERROR MALLOC!\n"); exit(1); } printf("数组长为: %d\n", i); if(i > 0) { prt_arr(parr_num, i); printf("\n"); sort_arr(parr_num, i); prt_arr(parr_num, i); printf("\n"); } fflush(stdin); i = add_num(parr_num, i); sort_arr(parr_num, i); prt_arr(parr_num, i); printf("\n"); free(parr_num); return 0; }