C++程序,帮忙改改错...拜托...

来源:百度知道 编辑:UC知道 时间:2024/06/06 00:03:31
#include<stdio.h>
int new(int a[],int b[],int c[],int m,int n)
{int i,j,k;
for(i=0,j=0,k=0;i<m||j<n;)
{if(a[i]<=b[j])
{c[k]=a[i];
i=i+1;k=k+1;}
else
{c[k]=b[j];
j=j+1;k=k+1;}
}
if(i==m)
for(;j<n;j++,k++)
c[k]=b[j];
else
for(;i<m;i++,k++)
c[k]=a[i];
return c[k];
}

void main()
{
int new(int a[],int b[],int c[],int m,int n);
int a[5],b[5],c[10];
int m,n,t;
int i,j,k;
printf("input 5 munbers:\n");
for(m=0;m<5;m++)
scanf("%d",&a[m]);
printf("\n");
printf("input 5 numbers:\n");
for(n=0;n<5;n++)
scanf("%d",&b[n]);
printf("\n");
new(a,b,c,5,5);
printf("the sorted numbers:\n");
for(t=0;t<10;t++)
printf("%d",c[t]);

我明白了。
你想把两个数组中的数合在一起,排序输出,但是有了一个问题就是,数组a,b中的数并不是有序的啊。所以,你应先写一个排序函数,先使数组a,b有序后,再合并排序。

void new(int a[],int b[],int c[],int m,int n)
{
int i,j;
for(i=0;i<m;i++){
c[i]=a[i];
}
for(;i<n+m;i++){
c[i]=b[i-m];
}
for(i=0;i<n+m;i++){
for(j=i+1;j<n+m;j++){
if(c[i]>c[j]){
int k=c[j];
c[j]=c[i];
c[i]=k;
}
}
}
}
new函数给你改了一下,不知是不是你想要的结果

如果目的是把a[],b[]两个数组中所有元素,在一起重新排序结果保存到c[]当中;的确有问题。
可以参考“数据结构”教材里的“插入排序”、“快速排序”

你这段程序到底想写什么?表达什么内容。

new这中词也敢用