蛇形数组

qq_32269045 2017-04-04 04:41:21
n小于8时输出没问题,但是当输入的n等于8时,输出正确后,按任意键报错。大于8直接报错。求解,

#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int **a;

a=new int *[n];
for(int k=0;k<n;k++)
for(int i=n;i>0;i--)
a[k]=new int [i];

a[0][0]=1;

for(int i=1;i<n;i++)//初始化每一行首元素
a[i][0]=a[i-1][0]+i+1;

for(int i=0;i<n;i++)//根据每一行首元素,初始化后续元素
for(int k=1;k<n-i;k++)
a[i][k]=a[i][k-1]+k+i;

for(int i=0;i<n;i++)//输出蛇形数组
{
for(int k=0;k<n-i;k++)
if(k==0)
cout<<a[k][i];
else
cout<<"\t"<<a[k][i];
cout<<endl;
}

system("pause");
}
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzw2016 2017-04-04
  • 打赏
  • 举报
回复
可以直接int (*a)[n]=new int [n][k];
lzw2016 2017-04-04
  • 打赏
  • 举报
回复
int**a=new int*[n]; for(int i=0;i<n;i++) a[i]=new int[k];
konsy_dong 2017-04-04
  • 打赏
  • 举报
回复
在最后最好加上这个,删除new分配的内存,防止内存泄漏 for (int k = 0, i = n; k<n, i>0; k++, i--) delete[] a[k]; delete[] a;
konsy_dong 2017-04-04
  • 打赏
  • 举报
回复
第9到12行改为这样 a = new int *[n]; for (int k = 0,i = n; k<n,i>0; k++,i--) a[k] = new int[i]; 你的new不对啊,要知道这两个是同步关系,而不是嵌套,要用逗号操作符 求最佳~
qq_32269045 2017-04-04
  • 打赏
  • 举报
回复
const int n; 改为 int n; cin>>n;

64,654

社区成员

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

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