|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Description
根据输入的正整数n (1个米字形由一个(2n-1)*(2n-1)的矩阵组成,矩阵包含从大写A开始的n个字母
例如:n=3时,包含A,B,C;n=4时,包含A,B,C,D。
矩阵的正中间为n个字母中字典序最大的那个,从这个字母开始,沿着西北、正北、东北、正西、正东、西南、正南、东南八个方向各有一条由大写字母组成的直线。并且直线上的字母按字典序依次减小,直到大写字母A。
矩阵的其它位置用英文句号.填充。
Input
样例输入一
3
样例输入二
4
Output
样例输出一
A.A.A
.BBB.
ABCBA
.BBB.
A.A.A
样例输出二
A..A..A
.B.B.B.
..CCC..
ABCDCBA
..CCC..
.B.B.B.
A..A..A
本帖最后由 jackz007 于 2020-12-27 22:05 编辑
- #include <stdio.h>
- char fun(int i , int j , int n)
- {
- char c ;
- int k , p , x , y ;
- p = n * 2 - 1 ;
- if(i >= 0 && i <= p - 1 && j >= 0 && j <= p - 1) {
- x = (i > n - 1) ? 2 * n - 2 - i : i ;
- y = (j > n - 1) ? 2 * n - 2 - j : j ;
- c = '.' ;
- if(x == n - 1) {
- c = y + 'A' ;
- } else {
- if(x == y || y == n - 1) c = x + 'A' ;
- }
- }
- return c ;
- }
- main(void)
- {
- int i ,j , k , m ;
- scanf("%d" , & m) ;
- for(i = 0 ; i < m * 2 - 1 ; i ++) {
- for(j = 0 ; j < m * 2 - 1 ; j ++) {
- printf("%c" , fun(i , j , m)) ;
- }
- printf("\n") ;
- }
- }
复制代码
编译、运行实况
- D:\00.Excise\C>g++ -o x x.c
- D:\00.Excise\C>x
- 4
- A..A..A
- .B.B.B.
- ..CCC..
- ABCDCBA
- ..CCC..
- .B.B.B.
- A..A..A
- D:\00.Excise\C>x
- 5
- A...A...A
- .B..B..B.
- ..C.C.C..
- ...DDD...
- ABCDEDCBA
- ...DDD...
- ..C.C.C..
- .B..B..B.
- A...A...A
- D:\00.Excise\C>x
- 8
- A......A......A
- .B.....B.....B.
- ..C....C....C..
- ...D...D...D...
- ....E..E..E....
- .....F.F.F.....
- ......GGG......
- ABCDEFGHGFEDCBA
- ......GGG......
- .....F.F.F.....
- ....E..E..E....
- ...D...D...D...
- ..C....C....C..
- .B.....B.....B.
- A......A......A
- D:\00.Excise\C>
复制代码
|
|