#include<stdio.h>
int main()
{
int a[10][10];
int n=0,i=0,j=0;
int num=1,flag=1;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[i][j]=-1;
}
}
while(num<n*n)
{
if(a[i][j]==-1)
{
a[i][j]=num;
num++;
}
if(flag==1)
{
j++;
if(j==n||a[i][j]!=-1)
{
j--;
flag=2;
}
}
else if(flag==2)
{
i++;
if(i==n||a[i][j]!=-1)
{
i--;
flag=3;
}
}
else if(flag==3)
{
j--;
if(j==-1||a[i][j]!=-1)
{
j++;
flag=4;
}
}
else if(flag==4)
{
i--;
if(i==-1||a[i][j]!=-1)
{
i++;
flag=1;
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%2d",a[i][j]);
}
printf("\n");
}
return 0;
}
输出n*n阶螺旋方阵,可是输入没显示方阵
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
WaitIKnowYou 2022-06-06 19:24关注#include<stdio.h> int main() { int i,j,t=1; int a[7][7]; int n=7; for (i = 0; i < n/2; i++) {//最外层控制圈数 for (j = i; j < n-1-i; j++) {//上方 a[i][j]=t++; } for (j = i; j < n-1-i; j++) {//右侧 a[j][n-1-i]=t++; } for (j = n-1-i; j>i; j--) {//下方 a[n-1-i][j]=t++; } for (j = n-1-i; j>i; j--) {//左侧 a[j][i]=t++; } } if(n%2==1) {//n是奇数时,解决最中心数字未赋值问题 a[n/2][n/2]=n*n; } for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%3d",a[i][j]); } putchar('\n'); } return 0; }解决 无用评论 打赏 举报