2019.1.17《C Primer Plus》编程练习6.16.5字母金字塔

傍晚前做了会《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分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值