蓝桥杯练习题 PREV-2 打印十字图(文字图形)
2016-05-17 17:08
267 查看
问题描述
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式
对应包围层数的该标志。
样例输入1
1
样例输出1
提示
请仔细观察样例,尤其要注意句点的数量和输出位置。
思路:将图形进行切割,再寻找规律
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式
对应包围层数的该标志。
样例输入1
1
样例输出1
提示
请仔细观察样例,尤其要注意句点的数量和输出位置。
思路:将图形进行切割,再寻找规律
#include <iostream> using namespace std; /* $ $ $ . $ . $ $ . . . $ . $ $ . $ $ $ . $ . . $ . . . $ $ $ $ . $ $ $ . . . . $ . . $ $ $ $ $ . $ */ int main() { int n; cin >> n; char map[61][61]; // 1 + 2 + 29 * 2 = 61 int len = 3 + n * 2; for(int i = 0; i < len; i++){ for(int j = i; j < len; j++){ if(j % 2 == 0){ map[i][j] = '$'; map[j][i] = '$'; }else{ map[i][j] = '.'; map[j][i] = '.'; } } if(i + 1 < len){ map[i][i + 1] = map[i][i]; map[i + 1][i] = map[i][i]; } } map[len - 1][len - 1] = '.'; for(int i = len - 1; i >= 0; i--){ for(int j = len - 1; j >= 0; j--){ cout << map[i][j]; } for(int j = 1; j < len; j++){ cout << map[i][j]; } cout << endl; } for(int i = 1; i < len; i++){ for(int j = len - 1; j >= 0; j--){ cout << map[i][j]; } for(int j = 1; j < len; j++){ cout << map[i][j]; } cout << endl; } return 0; }
相关文章推荐
- 关于cocoapod安装以及使用(一)
- android虚拟机安装apk的方法
- C#向无窗口的进程发送消息
- js hasOwnProperty
- 顺序表应用1:多余元素删除之移位算法
- springMVC -- 整合UEditor(富文本编辑器)
- windows自启动项位置
- GraphX:RDD详解
- .NET Core 1.0 CentOS7 尝试(一、安装)
- levelDB相关链接总结
- VS2010 LINK1123:failure during conversion to COFF:file invalid or corrupt
- 将word中表格批量导入到Excel
- 泛型类里面获取到泛型的类型
- markdown 小试牛刀
- java中DatagramSocket连续发送多个数据报包时产生丢包现象解决方案
- Express使用静态资源和EJS使用部分视图
- jquery 动态添加div元素(两种方式)
- windows定时关机
- Android中View和ViewGroup介绍
- 第十七章 springboot + devtools(热部署)