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()
函数来判断是否是大写字母,这点比起答案来更加好了。
植入部分
如果您觉得文章不错,可以通过赞助支持我。
如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。