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"); }
解决方案
14
第9到12行改为这样
a = new int *[n];
for (int k = 0,i = n; k<n,i>0; k++,i–)
a[k] = new int[i];
你的new不对啊,要知道这两个是同步关系,而不是嵌套,要用逗号操作符
求最佳~
a = new int *[n];
for (int k = 0,i = n; k<n,i>0; k++,i–)
a[k] = new int[i];
你的new不对啊,要知道这两个是同步关系,而不是嵌套,要用逗号操作符
求最佳~
4
int**a=new int*[n];
for(int i=0;i<n;i++)
a[i]=new int[k];
for(int i=0;i<n;i++)
a[i]=new int[k];
2
可以直接int (*a)[n]=new int [n][k];