题目描述:

布告,布告! 应老师要求,我们要做一道打印图形的题目,这是程序员最基本的能力。 那废话不多说,我们来说要求的图形 AAAAA ABBBA ABCBA ABBBA AAAAA 就是外到内,从A到Z。每一层都是一种字母,最里面的一层为一个,即最中心的一个。

输入格式:

一行,一个整数,即图形的层数

输出格式:

如上述图形

输入样例:

3

输出样例:

AAAAA
ABBBA
ABCBA
ABBBA
AAAAA

思路分析:

  1. 根据输入计算图形的行数和列数,创建一个二维数组。
  2. 由题可知,从外层往内层,字母逐层增加(从A >> Z)。
  3. 不妨通过两个for循环(i ,j)进行数组下标移动,先用字母A把最外一层数组元素覆盖。假设i,j初始值均为1,则最大值分别为m(2*n-1),所以在数组中,当条件为(i == 1 || j == 1 || i == m || j == m)均为A,以此类推。

代码:

#include <stdio.h>
int main()
{int stat, i, j, n, m;scanf("%d", &n);m = 2 * n - 1;int k = 1, z = m;char ch = 'A';char a[m+1][m+1]; //为了过程方便,这里把数组下标为0的空间浪费掉,数组从1开始,空间大小为m+1。for(stat = 0; stat < 26; stat++) //这个循环是控制字母依次增大,stat值可以更大,只不过当stat大于字母数后,ch值会继续自加,不止为Z。{for(i = k; i <= z; i++) //i的初始值为k,最大值为z,对比图形可以看出,循环的范围在逐渐减小,即外层保留覆盖,内层字母增大继续往里覆盖。j同理。for(j = k; j <= z; j++)if(i == k || j == k || i == z || j == z)a[i][j] = ch;if(k == m) break; //这里break掉的是控制字母的循环,当k == m时,整个图形的数组已经被字母全部覆盖掉。k++; //k控制覆盖从左上角向中间进行,对应的是上行和左列。z--;  //z控制覆盖从右下角向中间进行,对应的是下行和右列。ch += 1;}for(i = 1; i <= m; i++) //将数列输出。{for(j = 1; j <= m; j++)printf("%c", a[i][j]);printf("\n");}return 0;
}

实操示例:

PTA 剥洋葱(超级好理解)相关推荐

  1. TCP三次握手与四次挥手,超级易理解

    文章目录 前言 一.TCP/IP 协议族 二.TCP的三次握手四次挥手 三次握手 四次挥手 三.常见面试题 拓展 前言 大佬的思想,小猿只是总结搬运工. 一.TCP/IP 协议族 在互联网使用的各种协 ...

  2. PTA 剥洋葱(C语言 + 详细注释 + 代码超简单)

    输入格式: 一行,一个整数,即图形的层数 输出格式: 如上述图形 输入样例: 3 输出样例: AAAAA ABBBA ABCBA ABBBA AAAAA //打印图形题关键是找规律,一般只需两重循环( ...

  3. (超级好理解)数据库关系运算——除运算

    见这位博主的博客,传送门===> https://blog.csdn.net/skyejy/article/details/80890842

  4. docker desktop ubuntu镜像_原创 | Docker入门,看了不理解,假一赔命

    写在前面 这篇博客适合谁? 对于Docker并不了解,只是有一点模糊的感觉,觉得Docker可以当成虚拟机用之类的 只是下载了Docker软件,对于怎么配置,怎么玩,第一步干什么,完全一无所知 其二, ...

  5. Docker入门,看了不理解,假一赔命

    写在前面 这篇博客适合谁? 对于Docker并不了解,只是有一点模糊的感觉,觉得Docker可以当成虚拟机用之类的 只是下载了Docker软件,对于怎么配置,怎么玩,第一步干什么,完全一无所知 其二, ...

  6. 如何实现企业软件的“超级 App 化”?

    Superapp("超级 App")最近甚嚣尘上.在本周正在举行的香港科技周 2022(2022 年 10 月 31 日-11 月 4 日),第一天即专门组织了一个围绕 super ...

  7. 深入理解css3 3d变换

    转载地址:https://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/ ...

  8. 一文看懂eos超级节点

    一.什么是区块链节点? 区块链网络中的每一个节点,就相当于存储所有区块数据的每一台电脑或者服务器终端.所有新区块的生产,以及交易的验证与记帐,并将其广播给全网同步,都由节点来完成. 简单地说,节点就是 ...

  9. 通俗讲解Pytorch梯度的相关问题:计算图、torch.no_grad、zero_grad、detach和backward;Variable、Parameter和torch.tensor

    文章目录 with torch.no_grad()和requires_grad backward() Variable,Parameter和torch.tensor() zero_grad() 计算图 ...

最新文章

  1. GNU AWK中BEGIN/END使用举例
  2. 从学术界到产业界,阿里云李飞飞谈数据库为何要开源? | 《新程序员》
  3. 架构师口中的混沌工程,究竟用来解决什么问题
  4. linux终端怎么设置monaco,Monaco Editor 使用指南
  5. .NetCore+WebUploader实现大文件分片上传
  6. pytorch实现attention_Self-Attention手动推导及实现
  7. C语言入门——适合练手的密码本项目
  8. xrld读取excel 中合并单元格内容
  9. 解决 Sublime Text 中文样式显示异常问题
  10. zblog php 模板修改,ZBlog博客程序zblogPHP主题模板定制仿制修改
  11. 如何优雅的实现一个九宫格抽奖
  12. 华为产品升级及打补丁具体步骤
  13. 货拉拉 Android 动态资源管理系统原理与实践(上)
  14. PT 系列 00·小谈 pt-kill
  15. NodeJs+VueJs +前端实现批量打印二维码
  16. H264码流打包分析.整理
  17. ie8下table th和td宽度width设置不生效解决办法
  18. python笛卡尔_Python 计算笛卡尔积
  19. 江西 南昌 富士康 java,好消息!富士康智能科技小镇落户小蓝经开区!总投资达110亿元...
  20. 【Mac 教程系列第 18 篇】如何修改 iTerm2 的背景图片

热门文章

  1. 利用Websocket实现ROS与Web的交互
  2. 通过adb命令查看SN、CID码等信息
  3. 丰富网页摘要——HTML5中的“微数据”(MicroData)
  4. 病例演讲比赛PPT模板
  5. S@Kura的PHP进阶之路(二)
  6. 计算机改显存会有啥影响,显卡内存越大越好吗?显存对计算机速度(全文)的影响...
  7. python迅雷下载任务出错_迅雷下载“任务出错”最新解决方法
  8. 安装brat的jquery错误
  9. CodeForces Round #521 (Div.3) B. Disturbed People
  10. java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署