C 大写字母输出金字塔
题目: 输入一个字母(如E)则输出:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
提示:使用一个外部循环来处理行,在每一行中使用三个内部循环,一个处理空格,一个以升序打印字母,一个以降序打印字母。
题目还是折腾了一会儿……咳咳,算法实在不是强项,结果我用了三个循环变量,其实只需要两个。 所以根据答案修改了一下。
1#include <stdio.h>
2#include <ctype.h>
3
4int main(void)
5{
6 char letter;
7 int diff, i, j, k;
8
9 printf("Print a upper letter: ");
10 scanf("%c", &letter);
11
12 if ( !isupper(letter) ) {
13 printf("Sorry please input a upper letter");
14 } else {
15 diff = letter - 'A';
16
17 for (i = 0; i <= diff; i++) {
18 for (j = diff; j > i; j--)
19 printf(" ");
20 for(k = 0; k <= i; k++)
21 printf("%c", 'A' + k);
22 for (k = i - 1; k >= 0; k--)
23 printf("%c", 'A' + k);
24 printf("\n");
25 }
26 }
27 return 0;
28}
29
值得一提的是我们引入了<ctype.h>
头文件,并且使用了isupper()
函数来判断是否是大写字母,这点比起答案来更加好了。
评论 (0)