C语言 一维整型数组的输入输出,排序和归并函数 急急急~~~

编写一维整型数组的输入输出函数arrayio,排序函
数 sort以及将两个递增的整型数组归并成一个递增
数组的函数merger。在主函数中,先调用arrayio函
数,从键盘输入两个长度分别为5和10的一维整型
数组a和b各元,接着调用sort函数,分别对数组a和
b各元按升序排序,然后调用 merger 函数,把数组
a和b 归并成递增数组c,最后再调用 arrayio 函数,
输出数组c各元。各函数的原型如下:
⑴ void arrayio( int a[ ], int n, char io );
功能是:根据io的值为'i'或'o',对长度为n的a数
组进行相应的输入或输出操作。
⑵ void sort( int a[ ], int n);
功能是:对长度为n的a数组按升序排序。
⑶ void merger(int a[ ], int n, int b[ ], int m, int c[ ]);
功能是:把长度分别为n和m的递增数组 a和b 归
并成长度为n+m的递增数组c。所谓“归并”就
是把数组a和b中的数有序地存入数组c,而不是
无序地存入c后再对c重新排序。

你没有规定sort()用什么排序方式,我用的冒泡。
没有什么注释先道个歉。
不知道你要这个程序是做什么的,计算机专业还是随便玩玩,如果是专业的这种基础算法一定要掌握。

#include<stdio.h>

void arrayio(int a[], int n,char io);
void sort(int a[],int n);
void merger(int a[], int n, int b[], int m, int c[]);

int main()
{
int a[5],b[10],c[15];

printf("Input Array a[5]:\n");
arrayio(a,5,'i');
printf("Input Array b[10]:\n");
arrayio(b,10,'i');
sort(a,5);
sort(b,10);
merger(a,5,b,10,c);
printf("Output Array c[15]:\n");
arrayio(c,15,'o');

//system("PAUSE");
return 0;
}

void arrayio(int a[], int n,char io)
{
int i;

switch(io)
{
case 'i':
for(i=0;i<n;++i) scanf("%d",&a[i]);
break;
case 'o':
for(i=0;i<n;++i) printf("%d ",a[i]);
printf("\n");
break;
default:
printf("Wrong parameter.\n");
}
}

void sort(int a[],int n)
{
int i,j,temp;
//Bubble
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}

void merger(int a[], int n, int b[], int m, int c[])
{
int i,j,k;

i=j=0;
for(k=0;k<m+n;k++)
{
if(i<n && j<m)
{
if(a[i]>b[j])
{
c[k]=b[j];
j++;
}
else
{
c[k]=a[i];
i++;
}
}
else if(i==n)
{
for(;j<m;j++)
{
c[k]=b[j];
k++;
}
}
else //j==m
{
for(;i<n;i++)
{
c[k]=a[i];
k++;
}
}
}
}

输入输出:
Input Array a[5]:
9 1 4 2 5
Input Array b[10]:
8 3 6 4 7 2 9 8 5 3 4
Output Array c[15]:
1 2 2 3 3 4 4 5 5 6 7 8 8 9 9
温馨提示:答案为网友推荐,仅供参考
相似回答