分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

JSK-16014 打印字母图形【打印图案】

发布时间:2023-09-06 02:17责任编辑:彭小芳关键词:暂无标签

打印字母图形
由键盘输入一个大写字母(A 到 Z 中的任意一个),输出如下图所示由相关大写字母组成的图形。所输入的字母一定为输出文件的第一个字符(位于图形的左上角),其余部分的字母构成规律和分布由样例给出。
输入格式
输入只有一行,仅为一个大写字母。
输出格式
输出包含一个如样例所示的图形。注意图形的行数与输入的字母有关,图形中的第一行最左侧一定是你输入的那个字母。
样例输入1
C
样例输出1
CBAAB
??BAA
????A
样例输入2
E
样例输出2
EDCBAABCD
??DCBAABC
????CBAAB
??????BAA
????????A
题目来源
2016 年海淀区中小学生信息学奥林匹克竞赛

问题链接:JSK-16014 打印字母图形
问题描述:(略)
问题分析
????这是一个打印图案问题。关键是找出其中的规律与关系。
????对于输入的字母,首先要先算出需要打印几行,以便程序控制输出的行数。
????实际上,输出的每一行包括三部分组成,空格、字符串和换行。其数量都与行数成函数关系。这种函数关系在程序中通常是用表达式给出的,并写在程序中。
????这个问题的另外一个关键的输出的字符是有规律变化的,程序中用函数nextchar()来计算下一个输出的字符。用程序计算这种变化规律,相比数学公式来说更加方便灵活。
程序说明:(略)
参考链接:(略)
题记:规律与关系尤为重要。

AC的C语言程序如下:

/* JSK-16014 打印字母图形 */#include <stdio.h>char c, a;int step;char nextchar(char a){ ???if(a == 'A' && step == -1) { ???????step = -step; ???????c--; ???????return a; ???} else if(a == c && step == 1) { ???????step = -step; ???????return a; ???} else ???????return a + step;}int main(void){ ???int n, i, j; ???scanf("%c", &c); ???a = c; ???n = c - 'A' + 1; ???step = -1; ???for(i = 0; i < n; i++) { ???????for(j = 0; j < i; j++) ???????????putchar(' '); ???????for(j = 0; j < 2 * (n - i) - 1; j++) { ???????????putchar(a); ???????????a = nextchar(a); ???????} ???????putchar('\n'); ???} ???return 0;}

JSK-16014 打印字母图形【打印图案】

原文地址:https://www.cnblogs.com/tigerisland45/p/9743206.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved