c语言~~~~~跪求高手帮忙~~

来源:百度知道 编辑:UC知道 时间:2024/05/31 19:25:02
编写一个函数,要求这个函数能够在一个有序的数组中间插入用户从键盘键入的一个新的数,要求插入后的数组任然有序,并编写主程序完成对该函数的调用,要求该程序能实现任意个数的插入,任意个由用户通过键盘输入数字确定,每次插入一个数。(提示:首先主程序需要调用排序函数对用户从键盘上键入的数据进行排序,然后再
调用插入函数,可以结合动态内存管理函 数的使用)

#include <stdio.h>
#include <stdio.h>
void inseart(int a[], int n, int x)
{
int i, pos;
for (i=0;(i<n)&&(x>a[i]);i++)
{
}
pos=i;
for (i=n-1;i>=pos;i--)
{
a[i+1]=a[i];

}
a[pos]= x;
}
main()
{
int *a, x, i, n;

printf("请输入元素个数:");
scanf("%d", &n);
a=(int *) malloc((n+1)*sizeof (int));
printf("请输入元素:\n");
for (i=0;i<n;i++)
{
scanf("%d",a);
}
printf("请输入插入的元素x:");

scanf("%d",&x);
inseart (*a, n, x);

printf("输出插入%d后的数组元素:", x);
for (i=0;i<n+1;i++)
{
printf("%-5d",a);

}

#include <stdio.h>
#include <malloc.h>

/* 排序数组元素 */
void asort(int *a, int s)
{
int i, j, k, t;

for (i = 0; i < s-1; ++i)
{
k = i;

for (j = i + 1; j < s; ++j)
{
/* <降序, >升序 */
if (a[k] > a[j])
{
k = j;
}
}

if (k != i)
{
t = a[i];
a[i] = a[k];
a[k] = t;
}
}
}

void inseart(int *a, int n, int x)
{
int i, pos;
for (i=0;(i<n)&&(x>a[i]);i++);

pos=i;
for (i=n-1;i>=pos;i--)
{
a[i+1]=a[i];

}
a[pos]= x;
}

void main()
{
int *a, x, i, n;

printf("请输入元素个数:");
scanf("%d", &n);
a=(int *) malloc((n+1)*sizeof (int));
printf("请输入元素:\n");
for (i=0;i<n;i++)
{
scanf("%d",a+i);