帮忙看一下

wayne92 2004-05-06 09:59:37
#define M 70
#include<stdio.h>
main()
{
int t,i,j,k,n,a[M];
a[0]=1;
for(n=0;n<=M;n++)
{
i=2*n+1;
a[i]=2*a[n]+1;
i++;
a[i]=3*a[n]+1;
}
for(j=1;j<=M;j++)
{
for(i=0;i<=2*M+2;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
for(i=0,k=0;i<=2*M+2,k<=100;i++,k++)
{
if(a[i+1]>a[i])
printf("%5d",a[i+1]);
if(k%10==0)
printf("\n");
}
}为什么运行死机?
...全文
61 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wayne92 2004-05-07
我明白了
谢谢各位!!
  • 打赏
  • 举报
回复
nobush 2004-05-06
同意!
这是你要的吗?
#define M 70
#include<stdio.h>
main()
{
int t,i,j,k,n,a[2*M+2];
a[0]=1;
for(n=0;n<2*M+2;n++)a[n]=0;
for(n=0;n<=M;n++)
{
i=2*n+1;
a[i]=2*a[n]+1;
i++;
a[i]=3*a[n]+1;
}
for(j=1;j<=M;j++)
{
for(i=0;i<=2*M;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
for(i=0,k=0;i<=2*M,k<=100;i++,k++)
{
if(a[i+1]>a[i])
printf("%5d",a[i+1]);
if(k%10==0)
printf("\n");
}
}
  • 打赏
  • 举报
回复
junnyfeng 2004-05-06
for(i=0;i<=2*M+2;i++)
if(a[i]>a[i+1])

这个显然是越界了吧

解决可以这样
#define M 70
#define K 3*M


int t,i,j,k,n,a[K];
  • 打赏
  • 举报
回复
languagec 2004-05-06
for(n=0;n<=M;n++) 数组越界了
  • 打赏
  • 举报
回复
shadow22 2004-05-06
int a[M],i<=2*M+2,a[i]数组越界吧
  • 打赏
  • 举报
回复
发帖
C语言

6.7w+

社区成员

C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
帖子事件
创建了帖子
2004-05-06 09:59
社区公告
暂无公告