螺旋矩阵在最后一个"for"循环中中断,不显示任何内容


#include<iostream>
using namespace std;
int main()
{
int n;
cout<<"Enter the size of the array :";
cin>>n;                                
int A[n][n];
int y=n,k=1,p=0,i;    

while(k<=n*n)                      
{
for(i=p;i < y;i++)     
{
A[y-1][i]=k++;
}
for(i=y - 2;i > p;i--)      
{
A[i][y-1]=k++;
}
for(i=y - 2;i > p;i--)         
{
A[p][i]=k++;
}
for(i = p + 1;i < y; i++)      
{
A[i][p]=k++;
}
p++;
y--;
}
if(!n%2)                      
{
A[(n+1)/2][(n+1)/2]=n*n; 
}
for(i=0;i<n;i++)             
{
for(int j=0;j<n;j++)
{
cout<<A[i][j]<<"t";
}
cout<<endl;
}
return 0;

我需要像这样做一个螺旋矩阵>在这里输入图像描述。 它在最后一个"for"循环中中断,只是没有显示任何内容;;;不过,如果我替换循环的语句之一,它会显示出来;如果您指出我的错误在哪里,我将不胜感激!

(此代码是从此处 https://www.includehelp.com/cpp-programs/print-a-spiral-matrix.aspx 带来的修改代码(

只是在循环的边界(螺旋的边界(上有一些小错误。这是一个稍作修改的程序。

PS:请注意,您应该避免使用VMAint A[n][n]它是C,而不是C++。

#include<iostream>
//using namespace std;
int main()
{
int n;
std::cout << "Enter the size of the array :";
std::cin >> n;                                
int A[n][n];
int y = n, k = 1,p = 0,i;    
while(k<= n*n)                      
{
for(i=p;i < y;i++)     
{
A[y-1][i]=k++;
}
for(i=y - 2;i >= p;i--)      
{
A[i][y-1]=k++;
}
for(i = y - 2;i >= p;i--)         
{
A[p][i]=k++;
}
for(i = p + 1;i < y-1; i++)      
{
A[i][p]=k++;
}
p++;
y--;
}
if(!n%2)                      
{
A[(n+1)/2][(n+1)/2]=n*n; 
}
for(i=0;i<n;i++)             
{
for(int j=0;j<n;j++)
{
std::cout<<A[i][j]<<"t";
}
std::cout << "n";
}
return 0;
}

最新更新