输入是一个个的三元组,分别是,外筐尺寸n(n为满足1≤n≤79的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符,输入数据有多组。
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
11 * + 5 W @
+++++++++ +*********+ +*+++++++*+ +*+*****+*+ +*+*+++*+*+ +*+*+*+*+*+ +*+*+++*+*+ +*+*****+*+ +*+++++++*+ +*********+ +++++++++ WWW W@@@W W@W@W W@@@W WWW
#include<stdio.h> int main() { int n; //外框尺寸 char a, b; //a:中心花色字符,b:外框花色字符 while (scanf("%d %c %c", &n, &a, &b)) { char grid[n][n]; int x = 0, y = 0; for (int i = 0; i <= n / 2; i++) { //i:圈数 //从左到右 for (; y < n - i; y++) { grid[x][y] = ((i + n / 2) % 2 == 0) ? b : a; } //从上到下 for (; x < n - i; x++) { grid[x][y] = ((i + n / 2) % 2 == 0) ? b : a; } //从右到左 for (; y >= i; y--) { grid[x][y] = ((i + n / 2) % 2 == 0) ? b : a; } //从下到上 for (; x >= i; x--) { grid[x][y] = ((i + n / 2) % 2 == 0) ? b : a; } x++; y++; } if (n % 2 == 1) grid[n / 2][n / 2] = a; grid[0][0] = grid[0][n - 1] = grid[n - 1][0] = grid[n - 1][n - 1] = ' '; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf("%c", grid[i][j]); } printf("\n"); } } return 0; }