又来一个问题:任意输入一个一维数组进行排序(注意是输入的数组哦,不是已排好的),再向数组中插入一个元素
问了好多人都是用固定数组
程序代码:
#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;
}
