一维数组的有序插入,用C语言写。

输入n个有序整数(升序)存于一维数组中,再输入一个整数x,将x插入数组合适的地方使数组仍然有序。要求自定义以下函数:
(1)功能函数int insertX(int*pa ,int n, int x):使x插入到以pa为首地址的n个有序数中仍然有序。
(2)主函数:调用上述函数完成功能,并输出插入后的结果。

以下是一个可能的实现,包括insertX函数和主函数示例:

#include <stdio.h>

int insertX(int* pa, int n, int x) {
int i, j;
// 找到插入位置
for (i = 0; i < n; i++) {
if (pa[i] > x) {
break;
}
}
// 将插入位置后的元素后移
for (j = n; j > i; j--) {
pa[j] = pa[j - 1];
}
// 插入元素
pa[i] = x;
// 返回插入后数组的长度
return n + 1;
}

int main() {
int n, x;
printf("请输入有序数列的长度n:");
scanf("%d", &n);
int a[n];
printf("请输入%d个有序整数:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
printf("请输入要插入的整数x:");
scanf("%d", &x);
n = insertX(a, n, x);
printf("插入后的有序整数为:\n");
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}

在上述代码中,我们定义了一个insertX函数来实现将一个整数x插入到一个有序数组中的功能。该函数的参数包括一个指向数组首地址的指针pa,数组的长度n,以及要插入的整数x。函数的具体实现过程如下:

    遍历数组,找到插入位置,即第一个大于x的元素的位置i;

    将插入位置后的元素后移一位;

    在插入位置处插入x;

    返回插入后数组的长度n+1。

    在主函数中,我们先输入有序数列的长度n和n个有序整数,然后输入要插入的整数x。接着调用insertX函数将x插入到数组中,并输出插入后的有序整数序列。

    需要注意的是,上述代码并没有对输入的数据进行范围检查,如果输入的数据不符合要求,程序可能会出现错误。因此,在实际使用中应该添加相应的数据检查和错误处理机制。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-03-17
以下是一个实现该功能的C语言代码:
#include <stdio.h>
int insertX(int *pa, int n, int x) {
int i, j;
// 寻找插入位置
for (i = 0; i < n; i++) {
if (pa[i] > x) {
break;
}
}
// 后移元素
for (j = n - 1; j >= i; j--) {
pa[j + 1] = pa[j];
}
// 插入元素
pa[i] = x;
// 返回新数组长度
return n + 1;
}
int main() {
int n, i, x;
int a[100];
// 输入数组元素个数和数组元素
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
// 输入要插入的元素
scanf("%d", &x);
// 调用插入函数
n = insertX(a, n, x);
// 输出结果
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}
该代码中,insertX函数接受一个指向数组头部的指针pa、数组元素个数n和要插入的元素x,返回新的数组元素个数。该函数通过遍历数组找到插入位置,然后后移数组中插入位置后面的元素,最后插入新元素。主函数调用该函数并输出结果。
第2个回答  2015-04-19
int insertX(int *pa,int n,int x)
{
int i,k;
for(i=0;i<n;i++)
if (pa[i]>x) break;
for(k=n;k>i;k--)
pa[k]=pa[k-1];
pa[i]=x;
return(0);
}
void main()
{

int a[100]={0,1,2,3,4,6,8,9,10};
int i;
insertX(a,9,5);
for(i=0;i<10;i++)
printf ("%4d",a[i]);
}追问

谢谢了

追答

在最前面加上
#include 试试

本回答被提问者采纳