C语言 将一组数排序,再插入一个数,再排序

长度为N的整数数组中有n个数(n<N),请编写函数实现:
(1)对其中的n个数进行从小到大排序;
(2)将一个数按照顺序插入上述数组中,使得插入后数组仍满足从小到大的顺序。
然后编写相应的主函数对这两个函数进行测试。
用函数做,只有一个主函数的勿扰
#include <stdio.h>
#define N 30

void paixu(int a[],int n);
void charu(int a[],int n,int k);

void main()

{
int i,k,a[N],n,j;

printf("请输入n:");
scanf("%d",&n);
printf("请输入%d个数:",n);
for(i = 0;i < n;i ++)
{
scanf("%d",&a[i]);
}

paixu(a,n);
printf("排序后的数字为:");
for(i = 0;i < n;i ++)
printf("%2d",a[i]);
printf("\n");

printf("请输入要插入的数:");
scanf("%d",&k);
charu(a,n,k);
printf("排序后的数字为:");
for(i = 0;i < n + 1;i ++)
printf("%2d",a[i]);
printf("\n");
}

void paixu(int a[],int n)
{
int i,j,temp;

for(j = 0;j < n - 1;j ++)
{
for(i = 0;i < n - 1 - j;i ++)
{
if(a[i] > a[i + 1])
{
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}

}
}

}

void charu(int a[],int n,int k)
{
int i,j;

//paixu(a,n);

for(i = 0;i < n;i ++)
{
if(k < a[i])
{
for(j = n;j > i ;j --)
{
a[j] = a[j - 1];
a[i] = k;
}
}
}

}

第1个回答  推荐于2017-10-09
#include <stdio.h>
main()
{
int i,a[12],t,k,m;
for(i=0;i<11;i++)
a[i]=0;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(k=1;k<11;k++)
for(i=k+1;i<11;i++)
while(a[i-1]>a[i])
{
t=a[i-1];
a[i-1]=a[i];
a[i]=t;
}
for(i=1;i<11;i++)
printf("%d ",a[i]);
printf("\nplease input a number\n");
scanf("%d",&m);
for(i=1;i<11;i++)
if(a[i]>m)
break;
for(k<=11;k>i;k--)
a[k]=a[k-1];
a[i]=m;
for(i=1;i<=11;i++)
printf("%d ",a[i]);
}
第2个回答  2010-05-24
先用冒泡排序法把原有数组排序
然后用一个insert()函数实现插入本回答被网友采纳
相似回答