傍晚前做了会《C Primer Plus》的课后题
刚学完第六章,进度是有点慢了……
这个字母山居然卡了我一个小时……
所以还是来记一下吧
题目
编写一个程序,提示用户输入大写字母。使用嵌套循环以下面金字塔形的格式打印字母:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
上面的图形是用户输入E后的打印结果。
提示:用外循环处理行,每行使用三个内层循环,分别处理空格、以升序打印字母、以降序打印字母。
代码
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char ch,A;
printf("Please enter an uppercase letter.\n");
scanf("%c",&ch);
int row=ch-'A'+1,x;//一共多少行
for(x=1;x<=row;x++){//x为当前行数
int y,z,a;
a=row;
A='A';
for(y=1;y<=a-x;y++)
printf(" ");//输出“总行数-当前行数”个空格
for(z=1;z<=x;z++,A++)
printf("%c",A);//第二部分,输出单个A开始,每个循环输出x个字母,最终从A到输入字母
//内层循环2结束后,z为当前层数+1=x+1
for(z-=2,A-=2;z>0;z--,A--)
printf("%c",A);//从内层循环2输出的最后一个字母开始向前推,直到从输入字母的前一个字母一直输出到A
//需要输出当前层数-1个字母
printf("\n");
}
system("pause");
return 0;
}
DEV C++是不是没有调试功能啊?
输出效果
改BUG花了55分钟,16点20才改完,最后发现是一个赋值语句写到循环外了……
凸(艹皿艹 )
不过还是自己太菜了吧?
2019年1月17日18点10分