合并数组问题,大家帮忙!

xlbdan 2007-03-20 12:50:27
将两个升序数组合并为一个新的升序数组如下:
为什么我的合并之后最后一位输出是个-1234234之类的数?
我实在找不出错误,大家帮忙啊!!
谢谢!

#include<iostream.h>
#include <string.h>

void main()
{
int a[3]={1,4,5};
int b[3]={0,2,3};
int c[6];

int i,j,k,size;
i=j=k=0;
size=6;
while(i<3 && j<3)
{
if(a[i]<b[j])
{
c[k++]=a[i++];
}
if(a[i]>b[j])
{
c[k++]=b[j++];
}
if(a[i]==b[j])
{
c[k++]=b[j++];
i++;
size--;
}

}
if(i==3)
{
for(;j<3;j++)
c[k++]=b[j++];
}
else if(j==3)
{
for(;i<3;i++)
c[k++]=a[i++];
}

for(k=0 ;k<size; k++)
cout<<c[k]<<" ";
cout<<endl;
}
...全文
166 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wghwgh311 2011-08-01
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <string.h>

void main()
{
int a[3] = {1,3,5};
int b[3] = {0,2,6};
int c[6] ;
int i,j,k,size;
i=j=k=0;
size=6;
while (i<3&&j<3)
{
if(a[i]<b[j])
{
c[k++] = a[i++];
size--;
}
if(a[i]>b[j])
{
c[k++] = b[j++];
size--;
}
if(a[i]==b[j])
{
c[k++] = a[i++];
c[k++] = b[j++];
size -=2;
}
}
if(size != 0)
{
if(i==3)
{
for(int index = j;j<3;)
{
c[k++]=b[j++];
size --;
}
}
if(j==3)
{
for(int index = i;i<3;)
{
c[k++]=a[i++];
size--;
}
}
}
if(size!=0)
{
cout<<size<<" Error!"<<endl;
}
for(int index=0;index<6;index++)
cout<<index<<"------"<<c[index]<<endl;

}


VC6.0 测试通过
www_adintr_com 2007-03-20
  • 打赏
  • 举报
回复
if(i==3)
{
while(j<3)
c[k++]=b[j++];
}
else if(j==3)
{
while(i<3)
c[k++]=a[i++];
}

这个地方你加了两次, for 中加了一次,赋值的时候又加了一次
todototry 2007-03-20
  • 打赏
  • 举报
回复
okokok
xlbdan 2007-03-20
  • 打赏
  • 举报
回复
我的天,这失误,丢人,给分.
pass86 2007-03-20
  • 打赏
  • 举报
回复
JF
orc1984 2007-03-20
  • 打赏
  • 举报
回复
ls正解

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧