c语言,连接2个数组的方法???

#include<stdio.h>#defineN100voidmain(){inti=0,j=0,x,c[N],tem;inta[4]={0,1,2,3},b[2]={... #include<stdio.h>
#define N 100
void main()
{
int i=0,j=0,x,c[N],tem;
int a[4]={0,1,2,3},b[2]={5,6};
for(x=0;x<6;x++)//对2个数组进行连接。成为一个数组
{
if(x=4){c[x]=b[j];j++;}
else {c[x]=a[i];
i++;}
}
for(x=0;x<6;x++)//连接后的数组为c[x]
printf("%d ",c[x]);
for(i=0;i<6,i++)//用起泡法对数组进行从大到小的排列
for(j=5;j>i;j--)
{
if(a[j]>a[j-1])
{
tem=a[j];
a[j]=a[j-1];
a[j-1]=tem;
}
}
for(x=0;x<6;x++)//最后排序后的结果为
printf("%d ",c[x]);
}
编译没错误,逻辑上错了吧!!!应该是在2个数组连接 的那个部分,麻烦帮忙看下
展开
 我来答
tattackor
推荐于2018-02-28 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:895万
展开全部
  1. 首先你不能直接用静态数组连接,因为你无法控制编译器如何分配内存,事实上分配在堆上的数组是由操作系统分配的,因此你不能指望两个数组是连续排列的,所以连接数组只能重新分配一个能包容两个数组元素的新数组,并将两个数组的元素复制过去,然后释放掉原先的数组。

  2. 用动态数组实现以下核心代码:

    int * Link(int *a,int lenA,int *b,int lenB) {
        int *p=new[lenA+lenB];//新建一个数组,数组大小为两数组总和
        int *pp=p;//运算指针
        //复制数组不要自己使用循环,那样效率很低,应该采用库函数中的memcpy。
        memcpy(pp,a,lenA*sizeof(int));//将数组a复制到新建内存首地址
        memcpy(pp+lenA,b,lenB*sizeof(int));//将数组b复制到前数组尾部
        //如果需要,释放数组a和b,当然如果是静态分配的数组,下面两句可注释掉
        delete []a;
        delete []b;
        return p;
    }


    其中sizeof(int)取整型类型的字节宽度,当然你可以直接写4,但是不同编译器不同操作系统int类型的字节宽度可能不同,养成使用sizeof取类型宽度可以使你的代码具有很好的兼容性,减少意外。
    复制后指向会改变,我们还需要将p返回给调用者,因此不可以直接使用p进行复制,需要建一个指针pp,复制p的值,利用pp复制数组。
    pp+lenA可以让pp指向复制后的数组a的尾部,在后面的位置复制b数组。

百度网友061c77f
推荐于2017-12-15 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:185
采纳率:0%
帮助的人:124万
展开全部
连接两个数组有点问题,for(x=0;x<6;x++) 数组长度怎么确定array.length 不能用6来表示
可以写个方法,将两数组合并成一个数组
也可以用API函数 copymemory
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shuozhan89
2011-05-12 · TA获得超过179个赞
知道答主
回答量:307
采纳率:0%
帮助的人:0
展开全部
void strcat(char str1,char str2) { int i,j; for(i=0;str1[i]!需要用到连接字符串函数!比如说C语言的就是strcat(字符数组1,字符数组2);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
uestcyile
2011-05-12 · 超过13用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:35万
展开全部
把第九行if(x=4)改为if(x>=4);另外,你的冒泡法逻辑有问题,此外应该把a[]改为c[]。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-05-12
展开全部
if(x=4)改为if(x<2)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式