跪求大神帮新手看看我做C语言排序问题哪里错了?题目大概是:a、b数组分别降序、升序之后,在不设置C数组

条件下,给a、b数组冒泡升序排序,以下是小弟的做法,但老是显示语法错误,请指教,谢谢!!!!
#include<stdio.h>
int main()
{
void sortAnB2C(int a[],int asize,int b[],int bsize,int c[],int csize);
int a[8]={8,3,1,5,4,9,-1,10},b[3]={6,3,2},c[11];
sortAnB2C(a,8,b,3,c,11);
return 0;
}
void sortAnB2C(int a[],int asize,int b[],int bsize,int c[],int csize)
{
int i,j,k,t,l;
for(i=0;i<asize-1;i++)
{k=i;
for(j=i+1;j<asize;j++)
if(a[j]>a[k])k=j;
t=a[k];a[k]=a[i];a[i]=t;
}
for(i=0;i<asize;i++)
printf("%2d",a[i]);printf("\n");
for(i=0;i<bsize-1;i++)
for(j=0;j<bsize-1-i;j++)
{if(b[i]>b[i+1]){t=b[i];b[i]=b[i+1];b[i+1]=t;}
for(j=0;j<bsize;j++)
printf("%2d",b[j]);printf("\n");
for(j=0,l=0;j<asize+bsize-1;j++)
for(i=0;i<asize+bsize-1-j;i++)
{
if(i<7)
{
if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}
}
if(i==7)
{
if(a[i]>b[l]){t=a[i];a[i]=b[l];b[l]=t;}
}
if(i>7)
{
if(b[l]>b[l+1]){t=b[l];b[l]=b[l+1];b[l+1]=t;l++;}
}
}
for(i=0;i<asize;i++)printf("%2d",a[j]);printf("\n");
for(j=0;j<bszie;j++)printf("%2d",b[j]);printf("\n");
for(i=0,j=0;i<csize;i++)
{
if(i<8)c[i]=a[i];
if(i>=8){c[i]=b[j];j++}
}
printf("%2d",c[j]);
}
要求输出5次结果,a数组的降序、b数组的升序,在没有第三个数组c的情况下冒泡a、b数组的升序,最后把a、b数组合并成c数组。

第1个回答  2013-04-25
//这个是改好的可以运行至于对不对就是你程序思想的问题了,少了个右括号

#include<stdio.h>
int sortAnB2C(int a[],int asize,int b[],int bsize,int c[],int csize);
int main()
{
int a[8]={8,3,1,5,4,9,-1,10},b[3]={6,3,2},c[11];
sortAnB2C(a,8,b,3,c,11);
return 0;
}
int sortAnB2C(int a[],int asize,int b[],int bsize,int c[],int csize)
{
int i,j,k,t,l;
for(i=0;i<asize-1;i++)
{
k=i;
for(j=i+1;j<asize;j++)
if(a[j]>a[k])k=j;
t=a[k];a[k]=a[i];a[i]=t;
}
for(i=0;i<asize;i++)printf("%2d",a[i]);printf("\n");
for(i=0;i<bsize-1;i++)
for(j=0;j<bsize-1-i;j++)
{
if(b[i]>b[i+1]){t=b[i];b[i]=b[i+1];b[i+1]=t;}
for(j=0;j<bsize;j++)printf("%2d",b[j]);printf("\n");
for(j=0,l=0;j<asize+bsize-1;j++)
for(i=0;i<asize+bsize-1-j;i++)
{
if(i<7)
{
if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}
}
if(i==7)
{
if(a[i]>b[l]){t=a[i];a[i]=b[l];b[l]=t;}
}
if(i>7)
{
if(b[l]>b[l+1]){t=b[l];b[l]=b[l+1];b[l+1]=t;l++;}
}
}
for(i=0;i<asize;i++)printf("%2d",a[j]);printf("\n");
for(j=0;j<bsize;j++)printf("%2d",b[j]);printf("\n");
for(i=0,j=0;i<csize;i++)
{
if(i<8)c[i]=a[i];
if(i>=8){c[i]=b[j];j++;}
}
printf("%2d",c[j]);
}
return 0;
}追问

大神谢谢您的回答,按时间顺序给了第一个热心大神,嗯,少了}括号,程序有待改善,谢谢指导

第2个回答  2013-04-25
for(j=0;j<bszie;j++)printf("%2d",b[j]);printf("\n");
==>
for(j=0;j<bsize;j++)printf("%2d",b[j]);printf("\n");

if(i>=8){c[i]=b[j];j++}
==>
if(i>=8){c[i]=b[j];j++;}

==> 最后面还欠缺一个大括号: }追问

最后补充了一个}还是出现syntax error

追答

仅仅编译通过,在VS2005上:


#include<stdio.h>
int main()
{
void sortAnB2C(int a[],int asize,int b[],int bsize,int c[],int csize);
int a[8]={8,3,1,5,4,9,-1,10},b[3]={6,3,2},c[11];
sortAnB2C(a,8,b,3,c,11);
return 0;
}
void sortAnB2C(int a[],int asize,int b[],int bsize,int c[],int csize)
{
int i,j,k,t,l;
for(i=0;i<asize-1;i++)
{k=i;
for(j=i+1;j<asize;j++)
if(a[j]>a[k])k=j;
t=a[k];a[k]=a[i];a[i]=t;
}
for(i=0;i<asize;i++)
printf("%2d",a[i]);printf("\n");
for(i=0;i<bsize-1;i++)
for(j=0;j<bsize-1-i;j++)
{if(b[i]>b[i+1]){t=b[i];b[i]=b[i+1];b[i+1]=t;}
for(j=0;j<bsize;j++)
printf("%2d",b[j]);printf("\n");
for(j=0,l=0;j<asize+bsize-1;j++)
for(i=0;i<asize+bsize-1-j;i++)
{
if(i<7)
{
if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}
}
if(i==7)
{
if(a[i]>b[l]){t=a[i];a[i]=b[l];b[l]=t;}
}
if(i>7)
{
if(b[l]>b[l+1]){t=b[l];b[l]=b[l+1];b[l+1]=t;l++;}
}
}
for(i=0;i<asize;i++)printf("%2d",a[j]);printf("\n");
for(j=0;j<bsize;j++)printf("%2d",b[j]);printf("\n");
for(i=0,j=0;i<csize;i++)
{
if(i<8)c[i]=a[i];
if(i>=8){c[i]=b[j];j++;}
}
printf("%2d",c[j]);
}
}

本回答被提问者采纳
相似回答