sci影响因子什么意思:用C语言解这道题目

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 05:28:07
任给正整数n(n<=19),试按如下方式输出螺旋方阵。
输入:3
输出:
7 8 1
6 9 2
5 4 3
输入:4
输出:
10 11 12 1
9 16 13 2
8 15 14 3
4 6 5 4

#define MAXN 20

int workarr[MAXN+2][MAXN+2];

void Work(int n)
{
int i, j, k = 0, row = 0, col = 1;
int d[4][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
for (i=0; i<=n+1; i++)
workarr[i][0] = workarr[i][n+1] =
workarr[0][i] = workarr[n+1][i] = -1;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
workarr[i][j] = 0;
i = 1;
while (i <= n*n)
{
if (workarr[row+d[k][0]][col+d[k][1]] != 0)
k = (k+1)%4;
row += d[k][0];
col += d[k][1];
workarr[row][col] = i++;
}
}

void Display(int n)
{
int i, j;
for (i=1; i<=n; i++)
{
for (j=n; j>0; j--)
printf(\"%6d\", workarr[i][j]);
printf(\"\\n\");
}
}

int main()
{
int n;
while (scanf(\"%d\", &n) != EOF)
{
Work(n);
Display(n);
}
return 0;
}

上面写的不错。。。

稍稍改了一下,可以在TC中跑了

#define MAXN 20

int workarr[MAXN+2][MAXN+2];

void Work(int n)
{
int i, j, k = 0, row = 0, col = 1;
int d[4][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
for (i=0; i<=n+1; i++)
workarr[i][0] = workarr[i][n+1] =
workarr[0][i] = workarr[n+1][i] = -1;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
workarr[i][j] = 0;
i = 1;
while (i <= n*n)
{
if (workarr[row+d[k][0]][col+d[k][1]] != 0)
k = (k+1)%4;
row += d[k][0];
col += d[k][1];
workarr[row][col] = i++;
}
}

void Display(int n)
{
int i, j;
for (i=1; i<=n; i++)
{
for (j=n; j>0; j--)
printf("%6d", workarr[i][j]);
printf("\n");
}
}

main()
{
int n;
while (scanf("%d", &n) != "")
{
Work(n);
Display(n);
}
return 0;
}