实在没有发了 就解决的方案

闲谈共视 2011-11-08 10:21:50
#include<iostream.h>
int main()
{
int a[]={1,4,6};
int n;
n=sizeof(a)/sizeof(int);
cout<<"原来的数组是:\n";
for(int i=0;i<=n-1;i++)
cout<<a[i]<<" ";
int b;
cout<<"\n输入一个数字:"<<endl;
cin>>b;
for(i=n-1;i>=0&&b>a[i];i--)
{
a[i+1]=a[i];
a[i]=b;
}
cout<<"嵌入后的数组是:\n";
for(i=0;i<=n-1;i++)
cout<<a[i]<<" ";
return 0;
}

此程序就是在输入数字时发生错误,究竟是何原因啊???
...全文
77 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuhw2011 2011-11-09
  • 打赏
  • 举报
回复
听说回帖可以送分,所以我回帖了。各位都要蛋定……
qyxqyxqyx 2011-11-09
  • 打赏
  • 举报
回复
越界了。i=n-1时候把a[i+1]=a[i]了
天云 2011-11-09
  • 打赏
  • 举报
回复

#include<iostream.h>
int main()
{
int a[]={1,4,6};
int n;
n=sizeof(a)/sizeof(int);
cout<<"原来的数组是:\n";
for(int i=0;i<=n-1;i++)
cout<<a[i]<<" ";
int b;
cout<<"\n输入一个数字:"<<endl;
cin>>b;
int tmp = a[n-1] ;
for(i=n-1;i>=0&&b>a[i];i--)
{
if(i==n-1)
a[i] = b ;
else
{
a[i+1]=a[i]; // 楼主源码处当i=n-1的时候且b>a[i]时a[i+1]越界,
// 我猜LZ的意思是在升序数组中插入一个数
a[i]=b;
}

}
cout<<"嵌入后的数组是:\n";
for(i=0;i<=n-1;i++)
cout<<a[i]<<" ";
return 0;
}
yafeng_jiang 2011-11-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chengliangqq 的回复:]

for(i=n-1;i>=0&&b>a[i];i--)
{
a[i+1]=a[i];
数组下标越界;
[/Quote]
helloangel8002 2011-11-09
  • 打赏
  • 举报
回复
调试才是王道
tektekman 2011-11-09
  • 打赏
  • 举报
回复
for(i=n-1;i>=0&&b>a[i];i--)
{
a[i+1]=a[i];
数组下标越界;
无边1 2011-11-08
  • 打赏
  • 举报
回复
for(i=n-1;i>=0&&b>a[i];i--)
{
a[i+1]=a[i];
a[i]=b;
}
这个用法有问题,a[i+1]当i = n-1时数组越界,
b>a[i]感觉应该用在for里面判断,不要作为终止条件
柯本 2011-11-08
  • 打赏
  • 举报
回复
for(i=n-1;i>=0&&b>a[i];i--)
{
a[i+1]=a[i]; //当n=3时,i=2;a[3]=a[2],a 的最大下标为2(0..2),下标溢出,程序出错
不知你程序的目的,无法修改
lengxujun 2011-11-08
  • 打赏
  • 举报
回复
学习断点调试,插桩调试.

64,654

社区成员

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

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