鱼C论坛

 找回密码
 立即注册
查看: 868|回复: 1

[已解决]打印图形

[复制链接]
发表于 2020-12-27 11:47:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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




最佳答案
2020-12-27 22:00:55
本帖最后由 jackz007 于 2020-12-27 22:05 编辑
  1. #include <stdio.h>

  2. char fun(int i , int j , int n)
  3. {
  4.         char c                                                   ;
  5.         int k , p , x , y                                        ;
  6.         p = n * 2 - 1                                            ;
  7.         if(i >= 0 && i <= p - 1 && j >= 0 && j <= p - 1) {
  8.                 x = (i > n - 1) ? 2 * n - 2 - i : i              ;
  9.                 y = (j > n - 1) ? 2 * n - 2 - j : j              ;
  10.                 c = '.'                                          ;
  11.                 if(x == n - 1) {
  12.                         c = y + 'A'                              ;
  13.                 } else {
  14.                         if(x == y || y == n - 1) c = x + 'A'     ;
  15.                 }            
  16.        }               
  17.        return c                                                  ;
  18. }

  19. main(void)
  20. {
  21.         int i ,j , k , m                                         ;
  22.         scanf("%d" , & m)                                        ;
  23.         for(i = 0 ; i < m * 2 - 1 ; i ++) {
  24.                 for(j = 0 ; j < m * 2 - 1 ; j ++) {
  25.                         printf("%c" , fun(i , j , m))            ;
  26.                 }
  27.                 printf("\n")                                     ;
  28.         }
  29. }
复制代码

        编译、运行实况
  1. D:\00.Excise\C>g++ -o x x.c

  2. D:\00.Excise\C>x
  3. 4
  4. A..A..A
  5. .B.B.B.
  6. ..CCC..
  7. ABCDCBA
  8. ..CCC..
  9. .B.B.B.
  10. A..A..A

  11. D:\00.Excise\C>x
  12. 5
  13. A...A...A
  14. .B..B..B.
  15. ..C.C.C..
  16. ...DDD...
  17. ABCDEDCBA
  18. ...DDD...
  19. ..C.C.C..
  20. .B..B..B.
  21. A...A...A

  22. D:\00.Excise\C>x
  23. 8
  24. A......A......A
  25. .B.....B.....B.
  26. ..C....C....C..
  27. ...D...D...D...
  28. ....E..E..E....
  29. .....F.F.F.....
  30. ......GGG......
  31. ABCDEFGHGFEDCBA
  32. ......GGG......
  33. .....F.F.F.....
  34. ....E..E..E....
  35. ...D...D...D...
  36. ..C....C....C..
  37. .B.....B.....B.
  38. A......A......A

  39. D:\00.Excise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-27 22:00:55 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-12-27 22:05 编辑
  1. #include <stdio.h>

  2. char fun(int i , int j , int n)
  3. {
  4.         char c                                                   ;
  5.         int k , p , x , y                                        ;
  6.         p = n * 2 - 1                                            ;
  7.         if(i >= 0 && i <= p - 1 && j >= 0 && j <= p - 1) {
  8.                 x = (i > n - 1) ? 2 * n - 2 - i : i              ;
  9.                 y = (j > n - 1) ? 2 * n - 2 - j : j              ;
  10.                 c = '.'                                          ;
  11.                 if(x == n - 1) {
  12.                         c = y + 'A'                              ;
  13.                 } else {
  14.                         if(x == y || y == n - 1) c = x + 'A'     ;
  15.                 }            
  16.        }               
  17.        return c                                                  ;
  18. }

  19. main(void)
  20. {
  21.         int i ,j , k , m                                         ;
  22.         scanf("%d" , & m)                                        ;
  23.         for(i = 0 ; i < m * 2 - 1 ; i ++) {
  24.                 for(j = 0 ; j < m * 2 - 1 ; j ++) {
  25.                         printf("%c" , fun(i , j , m))            ;
  26.                 }
  27.                 printf("\n")                                     ;
  28.         }
  29. }
复制代码

        编译、运行实况
  1. D:\00.Excise\C>g++ -o x x.c

  2. D:\00.Excise\C>x
  3. 4
  4. A..A..A
  5. .B.B.B.
  6. ..CCC..
  7. ABCDCBA
  8. ..CCC..
  9. .B.B.B.
  10. A..A..A

  11. D:\00.Excise\C>x
  12. 5
  13. A...A...A
  14. .B..B..B.
  15. ..C.C.C..
  16. ...DDD...
  17. ABCDEDCBA
  18. ...DDD...
  19. ..C.C.C..
  20. .B..B..B.
  21. A...A...A

  22. D:\00.Excise\C>x
  23. 8
  24. A......A......A
  25. .B.....B.....B.
  26. ..C....C....C..
  27. ...D...D...D...
  28. ....E..E..E....
  29. .....F.F.F.....
  30. ......GGG......
  31. ABCDEFGHGFEDCBA
  32. ......GGG......
  33. .....F.F.F.....
  34. ....E..E..E....
  35. ...D...D...D...
  36. ..C....C....C..
  37. .B.....B.....B.
  38. A......A......A

  39. D:\00.Excise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-4 05:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表