void insert(int *arr, int n, int x) {
int *p = arr + n - 1;
while (p >= arr && *p > x) {
*(p + 1) = *p;
p--;
}
*(p + 1) = x;
}
arr是已排序的整数数组,n是数组中元素的个数,x是要插入的整数
修改如下,供参考:
#include <stdio.h>
#include <stdlib.h>
int insert(int *a, int n, int x)
{
int *p;
if (n == 10) return n; //当插入数据到数组大小上限,不再插入操作
for (p = a + n - 1; p >= a; p--){
if (*p > x)
*(p + 1) = *p;
else
break;
}
*(p + 1) = x;
n++;
return n;
}
int main()
{
int a[10] = {1,3,5,7,9}, *p = a, n = 5, x, i;
scanf("%d", &x);
n = insert(p, n, x);
for (i = 0; i < n; i++)
printf("%d ", p[i]);
printf("\n");
return 0;
}