C语言 输出图形

来源:百度知道 编辑:UC知道 时间:2024/06/01 21:52:53
1 16 15 14 13
2 17 24 23 12
3 18 25 22 11
4 19 20 21 10
5 6 7 8 9

这个有点难度,小弟不才,想不出来啊,麻烦哪个才子有空了帮忙输出一下啊,循环语句,实在想不出什么规律来,最好写上解释,谢谢了。

#include <stdlib.h>
#include <stdio.h>

void main()
{
int i, j, num, a[100][100] = {0}, f, k = 1;
printf("Please input a number(>0 and <=100): ");

do
{
f = 0;
scanf("%d", &num);

if (num < 0 || num > 100)
{
printf("Invalid! try a again..\n");
f = 1;
}
}
while (f);

for (i = 0; i < num / 2; ++i)
{
for (j = i; j < num - i; ++j)
a[j][i] = k++;

for (j = i + 1; j < num - i - 1; ++j)
a[num - i - 1][j] = k++;

for (j = num - i - 1; j >= i; --j)
a[j][num - i - 1] = k++;

for (j = num - i - 2; j > i; --j)
a[i][j] = k++;

}

if (num % 2)
a[num / 2][num / 2] = k;

for (i = 0; i < num; ++i)
{
for (j = 0; j < num-1; ++j)
printf("%5d ", a[i