有趣的数字图形
题目描述
旋转数字,例如n=3,则打印
1 2 3
8 9 4
7 6 5
【输入形式】
输入数据有多组,每组有一个正整数N(N>0 && n<10)
【输出形式】
对于每组输入数据,输出对应的字符图形(每个数用3位字符宽度输出)。每两个图形之间有一个空行。
【样例输入】
1 2 3 4
【样例输出】
1 1 2 4 3 1 2 3 8 9 4 7 6 5 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
#include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; int maze[20][20]; int n; void Init() { int i, j; for (i = 0; i < n; i++) for (j = 0; j < n; j++) maze[i][j] = 0; } void pri() { int i, j; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) printf("%3d", maze[i][j]); printf("\n"); } } int main() { while (cin >> n) { Init(); int z = 1; int i = 0; int x = 0; int y = 0; for (; z <= n * n;) { for (; maze[x][y] == 0 && y < n;) { maze[x][y++] = z++; } y--; x++; for (; maze[x][y] == 0 && x < n;) { maze[x++][y] = z++; } x--; y--; for (; maze[x][y] == 0 && y > -1;) { maze[x][y--] = z++; } y++; x--; for (; maze[x][y] == 0 && x > -1;) { maze[x--][y] = z++; } x++; y++; } pri(); cout << endl; } return 0; }
感觉自己做的有点麻烦,后期想到更简单的就重新编辑下吧。