#include<iostream>
using namespace std;
int main() {
int n, i = 0, j = 0, k, m = 1, h = 0;
cin >> n;
int q=n;
int a[n][n]={0};
a[n/2][n/2]=n*n;
for (k = 0; k < n / 2+1; k++)
{
i=h;
j=h;
while ( j < n ) {
a[i][j] = m;
m += 1;
j++;
}
j = j - 1;
i++;
while ( i < n ) {
a[i][j] = m;
m += 1;
i++;
}
i = i - 1;
j--;
while (j >= h ) {
a[i][j] = m;
m += 1;
j--;
}
j = j + 1;
i--;
h++;
while (i >= h){
a[i][j] = m;
m += 1;
i--;
}
i = i + 1;
n=n-1;
}
for (i = 0; i < q; i++) {
for (j = 0; j < q; j++) {
cout << a[i][j] << " ";
}
cout<<endl;
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int N, i, j, n, num = 1;
scanf("%d", &N);
int a[N][N] = {0};
for(n = 0; n <= N/2; n++)
{
for(j = n; j <= N-n-1; j++)
a[n][j] = num++;
for(i = n+1; i < N-n-1; i++)
a[i][N-n-1] = num++;
for(j = N-n-1;j > n; j--)
a[N-n-1][j] = num++;
for(i = N-n-1; i > n; i--)
a[i][n] = num++;
}
//输出螺旋矩阵
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
printf("%3d ",a[i][j]);
printf("\n");
}
system("pause");
return 0;
}
你的n为8时输出也是错的