首页 > 其他 > 详细

字母沙漏

时间:2021-06-09 21:33:17      阅读:36      评论:0      收藏:0      [点我收藏+]

记录我做出的第一个这种类型的题目,虽然方法很笨:

技术分享图片

 技术分享图片

技术分享图片

 我的思路就是把这个沙漏分成上下两部分,分开打印,不过注意这里就直接打印就好了,不用特意拉一个数组来存,那样反倒做不出的。

下面直接上代码:

 1 #define _CRT_SECURE_NO_WARNINGS 1
 2 #include <stdio.h>
 3 int main()
 4 {
 5     int n;
 6     while (scanf("%d", &n) > 0)
 7     {
 8         for (int i = 0; i < 2 * n + 1; i++) {
 9             if (i < n + 1) {   //沙漏的上半部分
10                 for (int j = 0; j < i; j++) {  //首先打印空格
11                     printf(" ");
12                 }
13                 for (int k = 0, t = i + 65; k < n - i + 1; t++, k++) {  //再打印前半部分的字母
14                     printf("%c", t);
15                 }
16                 for (int m = 0, ii = 64 + n; m < n - i; m++, ii--) {  //最后打印这一行的后半部分的字母
17                     printf("%c", ii);
18                 }
19             }
20             else if (i >= n + 1) {   //沙漏的下半部分,下面三个for循环的作用与上面是一样的
21                 for (int j = 0; j < n * 2 - i; j++) {
22                     printf(" ");
23                 }
24                 for (int k = 0, t = 65 + 2 * n - i; k < i - n + 1; k++, t++) {
25                     printf("%c", t);
26                 }
27                 for (int m = 0, jj = 64 + n; m < i - n; m++, jj--) {
28                     printf("%c", jj);
29                 }
30             }
31             printf("\n");
32         }
33         n = 0;
34     }
35     return 0;
36 }

题目中并未要求多组测试样例,但是我还是做成了多组测试样例的式样。(别问,问就是学校Oj上题目做习惯了QAQ)

来看看效果:

 技术分享图片

 

字母沙漏

原文:https://www.cnblogs.com/EvanTheGreat/p/14868168.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!