帮忙看一下

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");
}
}为什么运行死机?
...全文
105 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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]数组越界吧

70,023

社区成员

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

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