C语言 遇到的问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 07:15:44
题目是:归并问题,将两个线性表数据(非递减排列)归并到一新线性表(非递减)。 我做的代码如下,但是我遇到了一个问题:我的函数产生的数组数据无法返回给主函数,我知道用指针能解决这个问题,但是我……,希望有谁能帮我把代码修改一下,并做说明,谢谢!
ain()
{
int a[256],b[256];
int i,j,k;
printf("pelase enter NO.1 set of data:") ;
scanf("%d",&i);
for(k=1;k<=i;k++)
scanf("%d",&a[k]);
printf("\n");

printf("pelase enter NO.2 set of data:") ;
scanf("%d",&j);
for(k=1;k<=j;k++);
scanf("%d",&b[k]);

}

int lager(int a[],int b[])
{
int c[256];
int i,j,k=1;
for (i=1;i<=256;i++)
{
if(a[i]<b[i]) {

c[k]=a[i];k++;

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

#include <stdio.h>

int lager(int a[],int alen, int b[], int blen,int c[],int clen)
{
//alen是数组a中需要排序的元素的个数
//blen是数组b中需要排序的元素的个数
//clen是数组c的长度,需要考虑alen+blen超出clen的情况
//返回排序后,数组c的元素个数
}

#define N 256

void main()
{
int a[N],b[N],c[N];
int alen,blen,clen,k;

printf("pelase enter NO.1 set of data:") ;
scanf("%d",&alen);
for(k=0;k<alen;k++)
{
scanf("%d",&a[k]);
}
printf("pelase enter NO.2 set of data:") ;
scanf("%d",&blen);
for(k=0;k<blen;k++);
{
scanf("%d",&b[k]);
}

clen=lager(a,alen,b,blen,c,N);
for(k=0;k<clen;k++);
{
printf("%d ",c[k]);
}
printf("\n");
}

数组作为参数传递的时候,实际上传递的就是数组首元素的地址。
要实现你所说功能,我认为只需要将c数组的定义从lager函数中搬到main函数里
之后调用lager函数时,将c[]作为参数一并