《C primer plus》编程练习6.16.5
题目如下:
我的思路是这样的:首先外层循环肯定是金字塔中间从上到下的ABCDE, 然后是每行的空格和每行中间字母的两边。
一开始我不知道怎样打印空格,于是先打印金字塔,如下:
#include <stdio.h>
int main(void)
{
char input;
char m, n,x;
printf("enter a letter as the center of pyramid ");
printf("and enter any number to quit.\n");
do
{
scanf("%c", &input);
for (x = 'A';x <= input; x++)
{
for (m = 'A'; m <= x; m++)
printf("%c", m);
for (n = x - 1; n >= 'A'; n--)
printf("%c", n);
printf("\n");
}
} while (scanf("%c", &input) != 1);
printf("bye!");
return 0;
运行结果如下:书上也没有讲这种外层循环的变量参与内层循环的初始化和关系表达式的方法,我运行之前也不知道会不会成功。但这种方法成功后,我便想在此基础上增加一个打印空格的循环,如下:
#include <stdio.h>
int main(void)
{
char input;
char m, n,x;
int time, times;
printf("enter a letter as the center of pyramid ");
printf("and enter any number to quit.\n");
do
{
scanf("%c", &input);
times = input;
for (x = 'A';x <= input; x++)
{
for (time = 1;time < times - x;time++)
printf(" ");
for (m = 'A'; m <= x; m++)
printf("%c", m);
for (n = x - 1; n >= 'A'; n--)
printf("%c", n);
printf("\n");
}
} while (scanf("%c", &input) != 1);
printf("bye!");
return 0;
结果如下:
ps:新手上路,仅供大家参考。如有更好的思路,请不吝赐教。