题目:写一个程序实现输入一个大写字母,计算机输出从A到这个大写字母的字母金字塔。(两种方法)

比如:输入C,则会输出             

 目录:   1)、思路1分析(非数组)、代码讲解、2)思路2分析、代码讲解及展示     

非数组的方法比数组的方法要简单一些,而且电脑执行得快一些。 

1、非数组类思路分享:

非数组类的方法就是直接定义一个循环,然后在外循环里面再建立两个循环,一个用来输出空格,一个用来输出大写字母。比如输入一个C,那么答案如图:

可见A之前有两个空格,B之前有一个空格,而C前没有空格。由此推出不同行空格数与输入的字母数的关系就是:第i行空格数=(输入字母的ASCII码-A的ASCII码)-i-1;再看字母的输出部分,输出的个数依次是1,3,5……成等差数列的关系,所以,输出的字母数与输出字母的数量的关系:最多输出数=1+(输入字母的ASCII码-A的ASCII码)*2。明白这些关系后就可以写代码。

1)第一个代码讲解:

需要确定的两个数:输出行数、每行的空格和字母数。

首先用getchar()得到一个大写的字母(假设是D),然后算出外层循环需要循环的次数(也就是68-64=4),用for循环从第一行开始输出,进入内循环:先输出空格,确定要输出的空格数,注意空格数随行数变大而变小,所以用减法(也就是第一行要用4-1个空格),使用b-i是为了可以实现行数减一,空格数减一。接下来是第二个循环,确定字母的输出数量,定义一个变量k,在k的范围内可以输出k个字母,k+2可以实现每增加一行就增加两个字母数。最后输出字母后再进行ASCII码值加一,跳转到下一个字母。

2)代码如下:

结果:

 2)利用数组的方式

首先,定义两个数组,一个用来装载空格,一个用来装载字母,需要确定数组的最大长度:利用等差数列可知(sz=1+(26-1)*2=51)

利用循环可以将空格和字母都放入数组中。        

然后要利用输入的字母计算数组的长度与数组中间数,其公式为:数组长度=1+(输入字母的ASCII码-A的ASCII码)*2。由此得出数组中间数为(长度-1)/2。

外层循环与非数组像似,行数就是循环的次数,内层循环先对输出的空格数进行循环,由上面的图可知输出的空格数会随着行数的增加而减少,与外循环有关,所以不妨设每一次的空格数等于上一次的空格数减去行数的循环次数。

内层的第二个循环就是输出的字母及其数量输出的字母数是单数的,所以我们可以用中间值来控制输出,第一行只输出中间值这一个字母,后随着行数的增加,字母数就增加两个,所以中间值mid-1,比如输入C,数组长度就是5,中间值是2,第一行在arr[2]处输出A,也就是前面有两个空格,然后mid-1,就在arr[1]处开始输出B,直到a[3]后结束

下一步就是把数组中的字母都替换为下一个字母,可以利用ASCII码值进行替换。


然后循环结束就可以得出结果。

3)代码展示:

结果:

C语言:字母金字塔(输入一个大写字母,输出从A到这个字母的金字塔相关推荐

  1. 输入一个字符,判断它如果是小写字母输出其对应的大写字母,如果是大写字符输出其对应的小写字母 ,如果是数字则直接输出数字,不是上述情况输出other。

    字符输入 描述 输入一个字符,判断它如果是小写字母输出其对应的大写字母,如果是大写字符输出其对应的小写字母 ,如果是数字则直接输出数字,不是上述情况输出other. 输入 输入只有一组数据,共4行,每 ...

  2. C语言:要求输入一个字符,如果这个字符是小写字母,将这个字母转换成大写字母,否则保持不变

    /* 要求输入一个字符,如果这个字符是小写字母,将这个字母转换成大写字母,否则保持不变 */ #include<stdio.h> #include<conio.h> void ...

  3. java程序a-z b-y,请完成下列Java程序:对大写的26个英文字母加密,从键盘输入一个大写字母串,输出这个串加密后的结 - 赏学吧...

    请完成下列Java程序:对大写的26个英文字母加密,从键盘输入一个大写字母串,输出这个串加密后的结果.加密操作是将字母变换成倒序的大写字母,如A->Z,B->Y. 注意:请勿改动main( ...

  4. c语言printf输出整数数字,C语言 念数字 输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字...

    你的程序有很多不对的地方,没必要用数组,多次的getchar();也不知道是干啥的,我写一个程序贴给你看看吧,有问题再问. #include void judge_num(int num); void ...

  5. 数字金字塔:输入一个正整数n,输出n行数字金字塔.

    程序代码: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() {i ...

  6. c语言怎么取字母的前一个和后一个,输入一个大写字母,输出字母表中他前面和后面的字母用C语言...

    [问题描述]菱形字母图,输入一个整数n,输出如下用大写字母构成的有规律的图形.如n=3,有图形但对有些整数n,是无法输出 由于我也是初学者,我只能写到这种程度了,输入0的时候,会输出结果./*Note ...

  7. C语言编写一个四位数的和,c语言编写一段程序,输入一个四位数,输出各位数字的和...

    用C语言编写程序,输入一个正整数n(1 #include"stdio.h"intmain(){\x09inti,j,n;\x09inta[12];\x09intmin,mx;\x0 ...

  8. 7-123 空心字母金字塔 (10 分)输入一个大写的英文字母,输出空心的字母金字塔。

    7-123 空心字母金字塔 (10 分) 输入一个大写的英文字母,输出空心的字母金字塔. 输入格式: 一个大写英文字母. 输出格式: 一个空心的大写英文字母金字塔,其中第1层的"A" ...

  9. C语言输入一个大写字母,试输出其小写字母

    代码如下: #include<stdio.h> #int main() {char ch;printf("请输入一个大写字母:"): ch=getchar();ch=c ...

最新文章

  1. NeurIPS 2020论文评审结果出炉,提前拒稿、作者审稿惹争议,网友:改投别家吧...
  2. 怎么禁止/开启Ubuntu自动更新升级_豆豆技术派的博客-CSDN博客_ubuntu 自动更新
  3. [译]创建物化视图的先决条件
  4. java 拦截器响应中取所有参数,spring boot拦截器中获取request post请求中的参数
  5. 项目war包部署到第三方Tomcat,访问路径必须加上项目名称的坑
  6. 苹果编程语言Swift中文教程:Swift简介
  7. ASP.NET会话(Session)模式
  8. flare3d_FLSL
  9. Oracle 分析函数row_number() over (partition by order by )
  10. Spring Data JPA持久层中的一对一和一对多
  11. mappedBy作用
  12. 如何释放计算机的ip地址,电脑执行释放DNS和更新IP的命令是什么?怎么执行
  13. 2022-2028年中国高通量药物筛选与创新药物行业市场调查研究及发展前景展望报告
  14. Flask入门---@app.route()使用
  15. 语音科学计算机,CalcVoice(语音科学计算器)
  16. Django案例:显示图书的信息books
  17. 创意电子学小知识:电位器
  18. HTML5_CSS入门(内部样式、外部样式、内联样式、选择器)
  19. HJY-1A18D电压继电器 导轨安装
  20. 区块链数字货币挖矿专业名词解释,让你告别矿圈小白!

热门文章

  1. 安卓在活动左上角添加返回键
  2. 小程序源码:喝酒神器新UI版本带特效和音效,-多玩法安装简单
  3. 将2到10这9个自然数填入图中9个圆圈中,每个数只能用一次,且使每一条直线上的三个数的和相同,则中间圆圈的数是(),对应的每一条直线上的三个数的和是()
  4. 动态生成网站地图sitemap.xml
  5. Android开发过程中遇到的异常
  6. 【地图可视化】Echarts地图上展示3D柱体
  7. 单片机跑操作系统,到底有几种选择?
  8. 金融量化数据接口API汇总
  9. 如何对接payjs的个人微信扫码支付接口
  10. 【Python】图片视频处理常用操作及方法