函数insert()
的功能是在一维数组 a 中将 x 插入到下标为 i(i>=0) 的元素前,如果 i>= 元素个数,则x插入到末尾。元素个数存放在指针 n 所指向的变量中,插入后元素个数加1。
#include <stdio.h>
void insert(int a[ ], int *n, int x, int i)
{
int j;
if (i<*n)
{
for (j = *n-1; j>=i; j--)
{
a[j+1]= a[j];
}
}
else{
i = *n;
}
a[i]= x;
(*n)++;
}
int main()
{
int a[100], x, i, n;
scanf("%d", &n);
for(i = 0; i < n; i++){
scanf("%d", &a[i]);
}
scanf("%d%d", &x, &i);
insert(a, &n, x, i);
for(i = 0; i < n; i++){
printf("%d " , a[i]);
}
printf("\n");
return 0;
}
上述代码实现了一个函数 `insert()`,该函数用于将元素 `x` 插入到数组 `a` 的下标为 `i` 的元素的位置之前。如果 `i` 大于等于元素个数,则 `x` 将插入到数组末尾。元素个数存放在指针 `n` 所指向的变量中,并且在插入完成后,元素个数加1。
在 `insert()` 函数中,首先定义了变量 `j` 用于循环的索引。接下来,通过条件判断 `i<n`,判断 `i` 是否小于元素个数。如果小于,则需要将 `i` 之后的元素都向后移动一个位置,为 `x` 腾出插入位置。循环部分使用递减的方式遍历数组 `a`,并将当前位置的元素移动到下一个位置上。移动完成后,数组 `a[i]` 的位置就空出来了。
如果 `i>=n`,即 `i` 大于等于元素个数,那么需要将 `x` 插入到数组的末尾。在这种情况下,将 `i` 的值设为元素个数 `n`,表示将 `x` 插入到末尾的位置。
接下来,将 `x` 的值赋给 `a[i]`,实现了元素的插入。
最后,通过 `(*n)++` 将元素个数加1,表示插入后的元素个数。
在 `main()` 函数中,首先定义了数组 `a` 和其他变量。读取并存储了元素个数 `n` 和数组 `a` 的元素。然后,读取并存储了要插入的元素 `x` 和插入的位置 `i`。接着,调用 `insert()` 函数将 `x` 插入到 `a` 中的指定位置。最后,通过循环打印数组 `a` 中的每个元素。