前几天在网上看到有人提到这样一个问题:
打印类似下面的:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
程序:
打印类似下面的:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
程序:
以下内容为程序代码:
#include<stdio.h>
main()
{
int i,j,n,k,k1,k2,p;
while (1)
{
printf("Please input a num:");
scanf("%d", &n);
if (!n)
return;
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++)
{
if (i <= n/2)
{
k1 = i;
}
else
k1 = n + 1 - i;
if (j <= n/2)
{
k2 = j;
}
else
k2 = n + 1 - j;
if (k1 <= k2)
k = k1;
else
k = k2;
p = 4 * n * (k - 1) - 4 * (k - 1) * (k - 1);
if (i == k)
{
printf("%3d ", (j + 1 - k) + p);
continue;
}
if (j == k)
{
printf("%3d ", 4 * (n - 2 * (k - 1)) - (i + 1 - k) - 2 + p);
continue;
}
if (j == n + 1 - k)
{
printf("%3d ", n - 2 * (k - 1) + (i - (k - 1)) - 1 + p);
continue;
}
if (i == n + 1 - k)
{
printf("%3d ", 3 * (n - 2 * (k - 1)) - (j - (k - 1)) - 1 + p);
continue;
}
printf(" ?");
continue;
}
printf("/n");
}
}
}
#include<stdio.h>
main()
{
int i,j,n,k,k1,k2,p;
while (1)
{
printf("Please input a num:");
scanf("%d", &n);
if (!n)
return;
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++)
{
if (i <= n/2)
{
k1 = i;
}
else
k1 = n + 1 - i;
if (j <= n/2)
{
k2 = j;
}
else
k2 = n + 1 - j;
if (k1 <= k2)
k = k1;
else
k = k2;
p = 4 * n * (k - 1) - 4 * (k - 1) * (k - 1);
if (i == k)
{
printf("%3d ", (j + 1 - k) + p);
continue;
}
if (j == k)
{
printf("%3d ", 4 * (n - 2 * (k - 1)) - (i + 1 - k) - 2 + p);
continue;
}
if (j == n + 1 - k)
{
printf("%3d ", n - 2 * (k - 1) + (i - (k - 1)) - 1 + p);
continue;
}
if (i == n + 1 - k)
{
printf("%3d ", 3 * (n - 2 * (k - 1)) - (j - (k - 1)) - 1 + p);
continue;
}
printf(" ?");
continue;
}
printf("/n");
}
}
}