为什么这两个会不一样呀??
#define Maxsize 100
#include <stdio.h>
#include <stdlib.h>
struct sqlist
{
int dat[Maxsize];
int size;
};
void merge_sqlist(sqlist la, sqlist lb, sqlist *lc )
{
int i=0,j=0,k=0;
while((i<la.size)&&(j<lb.size))
{
if(la.dat[i]<=lb.dat[j])
{
lc->dat[k]=la.dat[i];
lc->size++;
i++;
k++;
if(la.dat[i-1]==lb.dat[j])
j++;
}
else
{
lc->dat[k]=lb.dat[j];
lc->size++;
j++;
k++;
}
}
while(i<la.size)
{
lc->dat[k]=la.dat[i];
lc->size++;
i++;
k++;
}
while(j<lb.size)
{
lc->dat[k]=lb.dat[j];
lc->size++;
j++;
k++;
}
}
void printlist(struct sqlist *l)
{
int i;
for (i=0;i<l->size;i++)
printf("%-4d",l->dat[i]);
printf("\n");
}
void main()
{
struct sqlist lista,listb,listc;
int i=0;
char c;
lista.size=listb.size=listc.size=0;
printf("请输入第一个升序数组,以回车结束\n");
while(1)
{
scanf("%d",&lista.dat[i]);
lista.size++;
scanf("%c",&c);
if(c=='\n')
break;
i++;
}
printf("请输入第二个升序数组,以回车结束\n");
i=0;
while(1)
{
scanf("%d",&listb.dat[i]);
listb.size++;
scanf("%c",&c);
if(c=='\n')
break;
i++;
}
printf("合并后的数组为:\n");
merge_sqlist(lista,listb,&listc);
printlist(&listc);
}
下面用C++::::
#define Maxsize 50
#include <iostream>
#include <iomanip>
using namespace std;
struct sqlist {
int dat[Maxsize];
int size;
};
void merge_sqlist(sqlist la, sqlist lb, sqlist *lc ) {
int i=0,j=0,k=0;
while((i<la.size)&&(j<lb.size)) {
if(la.dat[i]<=lb.dat[j]) {
lc->dat[k]=la.dat[i];
lc->size++;
i++;
k++;
if(la.dat[i-1]==lb.dat[j])
j++;
}
else {
lc->dat[k]=lb.dat[j];
lc->size++;
j++;
k++;
}
}
while(i<la.size) {
lc->dat[k]=la.dat[i];
lc->size++;
i++;
k++;
}
while(j<lb.size) {
lc->dat[k]=lb.dat[j];
lc->size++;
j++;
k++;
}
}
void printlist(struct sqlist *l) {
int i;
for (i=0;i<l->size;i++)
cout<<setw(4)<<l->dat[i];
cout<<endl;
}
void main() {
struct sqlist lista,listb,listc;
int i=0;
char c;
lista.size=listb.size=listc.size=0;
cout<<"请输入第一个升序数组,以回车结束:"<<endl;
while(1) {
cin>>lista.dat[i];
lista.size++;
cin>>c;
if(c=='\n')
break;
i++;
}
cout<<"请输入第二个升序数组,以回车结束:"<<endl;
i=0;
while(1) {
cin>>listb.dat[i];
listb.size++;
cin>>c;
if(c=='\n')
break;
i++;
}
cout<<"合并后的数组为:"<<endl;
merge_sqlist(lista,listb,&listc);
printlist(&listc);
}