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

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;
}
...全文
171 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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正解
php双色球在线机选程序V1.0(支持复式机选) 运行环境: php5.0及以上 安装方法: 上传所有文件到服务器. 本人平生也经常购买福彩双色球,本人不相信所谓的规律,我只相信运气。 所以每次选号都是直接机选。后来时间长了,我觉得福彩的那个售票系统的机 选程序不够强大,应该也不是严格意义上的机选。所以决定用php写一个机选 的程序,于是自已起草了程序的基本需求如下: 分析双色球的玩法规则: 其实就是红色球和蓝色球组成的一组号码,红色球的 数字范围为1~33,蓝色球的范围为1~16,所以机选双色球的程序要考虑以下内容 : 1. 先机选出红色球部份,也就是在数字1~33之间,随机取6个数字,而且这6个 数字不能重复,最后对这6个数字进行从小到大进行排序。这时候,我们已经产 生了双色球红球部份的6个号码。当然,如果是复式机选,红球的个数则是 7~20个,所以如果是复式机选的话,红色球的个数根据具体的个数在1~33中产 生具体个数的红色号码. 2.然后再机选出蓝色球部份,也就是在数字1~16范围内,随机取1个数字.当然 如果是复式机选,则相应产生多个蓝色球,也就是在数字1~16范围内,产生多 个不重复的号码 3.组合机选出来的红色球和蓝色球的号码,合并后进行输出。这样一注双色球 就产生了。 程序的核心算法和原理: 1.机选的实现: 红色球部份,先将1~33这33个常数放在一个数组中,也就是这个数组中有33个 数组元素,然后将这个数组元素的排列,使用函数将其随机打乱,最后截取某 一段。 2.用户单式和复式的判断,以及用户注数的判断使用GET模式的URL传值进行赋 值。 本程序原是本人自用的程序,如果错误或BUG,请真指正。现将本程序进行开 放源代码,方便有需要有人进行使用和改进。 程序演示地址: http://www.12580.info/cp/ssq 程序的下载地址: 说明:如对CSS有造诣的同事,可以帮忙修改一下表单和网页样式,使其美观。

65,184

社区成员

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

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