一个好玩的c语言设计测试(鄙人用了一周搞定)(会数组和循环的就可以)
如何输出转圈数 如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>
#include <math.h>
int main(void)
{
char format[] = "%xd ";
int snake[500][500], width, i, j, count = 0, x = 0, y = 0;
scanf("%d", &width);
format[1] = (int)log10(width * width) + 1 + '0';
snake[width/2][width/2] = width * width;
for (i = width - 1; i > 0; y -= i - 1, ++x, i -= 2) {
for (j = 0; j < i; ++j)
snake[y][x+j] = ++count;
for (x += i, j = 0; j < i; ++j)
snake[y+j][x] = ++count;
for (y += i, j = 0; j < i; ++j)
snake[y][x-j] = ++count;
for (x -= i, j = 0; j < i; ++j)
snake[y-j][x] = ++count;
}
for (i = 0; i < width; ++i) {
for (j = 0; j < width; ++j)
printf(format, snake[i][j]);
putchar('\n');
}
return 0;
}
