C 大写字母输出金字塔

题目:

输入一个字母(如E)则输出:
    A
   ABA
  ABCBA
 ABCDCBA
ABCDEDCBA
提示:使用一个外部循环来处理行,在每一行中使用三个内部循环,一个处理空格,一个以升序打印字母,一个以降序打印字母。

题目还是折腾了一会儿……咳咳,算法实在不是强项,结果我用了三个循环变量,其实只需要两个。
所以根据答案修改了一下。

#include <stdio.h>
#include <ctype.h>

int main(void)
{
    char letter;
    int diff, i, j, k;

    printf("Print a upper letter: ");
    scanf("%c", &letter);

    if ( !isupper(letter) ) {
        printf("Sorry please input a upper letter");
    } else {
        diff = letter - 'A';

        for (i = 0; i <= diff; i++) {
            for (j = diff; j > i; j--)
                printf(" ");
            for(k = 0; k <= i; k++)
                printf("%c", 'A' + k);
            for (k = i - 1; k >= 0; k--)
                printf("%c", 'A' + k);
            printf("\n");
        }
    }
    return 0;
}

值得一提的是我们引入了<ctype.h>头文件,并且使用了isupper()函数来判断是否是大写字母,这点比起答案来更加好了。

植入部分

如果您觉得文章不错,可以通过赞助支持我。

如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。

标签: 源码, 题目

添加新评论