数组排序问题?

ra3 2002-10-13 10:36:25
请大家帮我看一下这题,到底是哪里不对?
输出数组里为什么会多一个 10 ,73 不见了。(我用VC编译运行的)

#include <iostream.h>

void main()
{
const int n=10;
int a[n]={55,2,6,4,32,12,9,73,26,37};
int tem;

for(int k=0;k<n;k++)
cout<<a[k]<<",";
cout<<endl;

for(int i=1;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(a[j]>a[j+1]){tem=a[j];a[j]=a[j+1];a[j+1]=tem;}
}

for(int k=0;k<n;k++)
cout<<a[k]<<",";
cout<<endl;
}
}

运行结果:

55,2,6,4,32,12,9,73,26,37,
2,6,4,32,12,9,55,26,37,10,
2,4,6,12,9,32,26,37,10,55,
2,4,6,9,12,26,32,10,37,55,
2,4,6,9,12,26,10,32,37,55,
2,4,6,9,12,10,26,32,37,55,
2,4,6,9,10,12,26,32,37,55,
2,4,6,9,10,12,26,32,37,55,
2,4,6,9,10,12,26,32,37,55,
2,4,6,9,10,12,26,32,37,55,

...全文
50 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckacka 2002-10-13
  • 打赏
  • 举报
回复
操作数组时要特别注意越界的问题,随时记住0~~~~n-1,这是一个经典问题
xiaott 2002-10-13
  • 打赏
  • 举报
回复
同意楼上的
mickwang 2002-10-13
  • 打赏
  • 举报
回复
对,当j=9时a[j+1] 就越界了
greyhound 2002-10-13
  • 打赏
  • 举报
回复
for(int j=0;j<n;j++)//数组越界
{
if(a[j]>a[j+1]){tem=a[j];a[j]=a[j+1];a[j+1]=tem;}
}

改为
for(int j=0;j<n-1;j++)
{
if(a[j]>a[j+1]){tem=a[j];a[j]=a[j+1];a[j+1]=tem;}
}
johnmack 2002-10-13
  • 打赏
  • 举报
回复
还是最容易犯的老毛病!
hurrah_yule 2002-10-13
  • 打赏
  • 举报
回复
谢谢提醒!:)
zhi_chong 2002-10-13
  • 打赏
  • 举报
回复
同意楼上的,确实是数组越界的问题

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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