#include<stdio.h>
#include<stdlib.h>
int main()
{
int n = 0;
int i = 0;
int index = 0;
int insert_num = 0;
int *pNumber = NULL;
int *pNewArray = NULL;
int *insert_new = NULL;
printf("Input array size:\n");
scanf("%d", &n);
pNumber = (int*)calloc(n, sizeof(int));
if(pNumber == NULL)
{
printf("Not enough memory\n");
exit(0);
}
//输入插入前已按升序排序的数组元素提示信息
printf("Input array:\n");
for(i = 0; i < n; i++)
{
scanf("%d", pNumber+i);
}
//输入待插入的元素x提示信息:
printf("Input x:\n");
printf("how many?\n");
scanf("%d", &insert_num);
insert_new = (int*)calloc(insert_num, sizeof(int));
printf(" new num:");//输入新插入的数
for(i=0;i<insert_num;i++)
scanf("%d",insert_new+i);
//用realloc()新分配一块内存,用于存储原数组和新插入的值
pNewArray = (int*)realloc(pNumber, (n+insert_num)*sizeof(int));
if(pNewArray == NULL)
{
printf("Not enough memory\n");
exit(0);
}
//free(pNumber);
//输出新分配的内存空间的值,查看是否实现了复制
for(i = 0; i < n+insert_num; i++)
{
printf("%4d", pNewArray[i]);
}
printf("\n");
//待插入位置及后面的所有数据依次向后移1位
/*for(i = n; i > index; i--)
{
*(pNewArray+i) = pNewArray[i-1];
}*/
//*(pNewArray + index) = insert_data;
printf("After insert\n");
for(i = 0; i < insert_num; i++)
{
*(pNewArray + n+i) = insert_new[i];
}
for(i = 0; i < n+insert_num; i++)
{
printf("%4d", *(pNewArray+i));
}
free(pNewArray);
free(insert_new);
return 0;
}