CodeSky 代码之空

随手记录自己的学习过程

C 大写字母输出金字塔

2014-03-08 17:15分类: C评论: 0

题目: 输入一个字母(如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)