求助:这段代码编译通过,在输出上存在问题吗?
//这段代码编译通过,在输出上存在问题吗?
#include <stdio.h>
#include <stdlib.h>
typedef struct{
float *elem;
int length;
int listsize;
}sqlist;
void initlist(sqlist *la)
{la-> elem=(float*)malloc(100*sizeof(float));
if(!la-> elem) exit(-1);
la-> length=0;la-> listsize=100;
return;
}
void fuzhi(sqlist *la)
{float x;
int i,n;
printf( "pllease input how much emplete: ");
scanf( "%d ",&n);
for(i=0;i <n;i++)
{scanf( "%f ",&x); la-> elem[i]=x;}
la-> length=n;return;
}
void aa(sqlist *la,sqlist *lb,sqlist *lc)
{float *pa,*pb,*pc,*pa_last,*pb_last;
pa=la-> elem;pb=lb-> elem;
lc-> listsize=lc-> length=la-> length+lb-> length;
pc=lc-> elem=(float*)malloc(lc-> listsize*sizeof(float));
if(!lc-> elem) exit(-2);
pa_last=la-> elem+la-> length-1;
pb_last=lb-> elem+lb-> length-1;
while(pa <=pa_last&&pb <=pb_last)
if(*pa <=*pb) *pc++=*pa++;
else *pc++=*pb++;
while(pc <=pa_last) *pc++=*pa++;
while(pc <=pb_last) *pc++=*pa++;
}
void shuchu(sqlist *lb)
{int i;
for(i=0;i <lb-> length;i++)
printf( "%4.2f\n ", lb-> elem[i]);
}
main()
{sqlist a,b,c;
sqlist *la=&a,*lb=&b,*lc=&c;
initlist(la);initlist(lb);
fuzhi(la);fuzhi(lb);
aa(la,lb,lc);
shuchu(lc);
}
[解决办法]
while(pa <= pa_last && pb <= pb_last)
if(*pa <= *pb)
*pc++ = *pa++;
else
*pc++ = *pb++;
while(pc <= pa_last)
*pc++ = *pa++;
while(pc <= pb_last)
*pc++ =* pa++;
________________________________________________________________________
while(pa <=pa_last && pb <=pb_last)
{
if(*pa <= *pb)
*pc++ = *pa++;
else
*pc++ = *pb++;
}
while(pa <= pa_last)
*pc++ = *pa++;
while(pb <= pb_last)
*pc++ = *pb++;