c语言问题 朋友们帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/24 12:19:59
两个有序数组合并,合并之后仍然有序。程序是可以运行的 不过输入东西后马上就错误终止。
#include"stdio.h"
#include"iostream.h"
#include"string.h"
struct han{
int *data;
int length;
}list[3]; //构造
void mergelist(){ //合并函数
int i=1,j=1,k=0;
while((i<=list[0].length)&&(j<=list[1].length)){
int receiver,receiver1;
receiver=list[0].data[i-1];
receiver1=list[1].data[i-1];
if(receiver<=receiver1){list[2].data[k]=receiver;i++;k++;}
else{list[2].data[k]=receiver1;j++;k++;}
}
while(i<=list[0].length){
list[2].data[k+1]=list[0].data[i];
}
while(j<=list[1].length){
list[2].data[k+1]=list[0].data[j];
}
} //mergelist
void print(){ //输出结果
cout<<"结果是:\n";
for(int num=0;num<=list[2].length;num++)
cout<<list[2].data[num]<<" ";
}
void main(){
int n=0,m=0;
cout

1)
struct han{
int *data;
int length;
}list[3]; //构造
构造是错的 int *data是一个指针,不是数组

2)
receiver=list[0].data[i-1];
receiver1=list[1].data[i-1];
是不是应该改成
receiver=list[0].data[i-1];
receiver1=list[1].data[j-1];啊???

3)
while(getchar()){
list[1].data[m]=getchar();
m++;
}这是个死循环…………不可以这么输入…………