#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;
}