蓝桥杯 历届试题 打印十字图(模拟水题,图形输出)
2014-01-11 23:14
519 查看
历届试题 打印十字图
时间限制:1.0s 内存限制:256.0MB
问题描述
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式
对应包围层数的该标志。
样例输入1
1
样例输出1
样例输入2
3
样例输出2
提示
请仔细观察样例,尤其要注意句点的数量和输出位置。
水题,图形输出。
代码很长,没有做优化,找到关系了就简单粗暴的输出,思路很简单,做了注释,不难看懂。
有时间会做一次优化。
牛人链接,代码很精练,看第八题:2013蓝桥杯初赛c语言专科组--题目与答案
Freecode : www.cnblogs.com/yym2013
时间限制:1.0s 内存限制:256.0MB
问题描述
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
..$$$$$$$$$$$$$.. ..$...........$.. $$$.$$$$$$$$$.$$$ $...$.......$...$ $.$$$.$$$$$.$$$.$ $.$...$...$...$.$ $.$.$$$.$.$$$.$.$ $.$.$...$...$.$.$ $.$.$.$$$$$.$.$.$ $.$.$...$...$.$.$ $.$.$$$.$.$$$.$.$ $.$...$...$...$.$ $.$$$.$$$$$.$$$.$ $...$.......$...$ $$$.$$$$$$$$$.$$$ ..$...........$.. ..$$$$$$$$$$$$$..
对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式
对应包围层数的该标志。
样例输入1
1
样例输出1
..$$$$$.. ..$...$.. $$$.$.$$$ $...$...$ $.$$$$$.$ $...$...$ $$$.$.$$$ ..$...$.. ..$$$$$..
样例输入2
3
样例输出2
..$$$$$$$$$$$$$.. ..$...........$.. $$$.$$$$$$$$$.$$$ $...$.......$...$ $.$$$.$$$$$.$$$.$ $.$...$...$...$.$ $.$.$$$.$.$$$.$.$ $.$.$...$...$.$.$ $.$.$.$$$$$.$.$.$ $.$.$...$...$.$.$ $.$.$$$.$.$$$.$.$ $.$...$...$...$.$ $.$$$.$$$$$.$$$.$ $...$.......$...$ $$$.$$$$$$$$$.$$$ ..$...........$.. ..$$$$$$$$$$$$$..
提示
请仔细观察样例,尤其要注意句点的数量和输出位置。
水题,图形输出。
代码很长,没有做优化,找到关系了就简单粗暴的输出,思路很简单,做了注释,不难看懂。
有时间会做一次优化。
牛人链接,代码很精练,看第八题:2013蓝桥杯初赛c语言专科组--题目与答案
#include <iostream> using namespace std; char ex[82] = "..$$$$$....$...$..$$$.$.$$$$...$...$$.$$$$$.$$...$...$$$$.$.$$$..$...$....$$$$$.."; int main() { int n; while(cin>>n){ if(n==1){ //如果只有一层,则直接输出 for(int i=0;i<=80;i++){ if(i==0) cout<<ex[i]; else if(i%9) cout<<ex[i]; else cout<<endl<<ex[i]; } cout<<endl; } else{ ex[0]='$'; ex[8]='$'; ex[72]='$'; ex[80]='$'; //输出第一部分,即最上面两层 //第一层 for(int i=1;i<=2;i++) cout<<'.'; for(int i=1;i<=n*4+1;i++) cout<<'$'; for(int i=1;i<=2;i++) cout<<'.'; cout<<endl; //第二层 for(int i=1;i<=2;i++) cout<<'.'; cout<<'$'; for(int i=1;i<=n*4-1;i++) cout<<'.'; cout<<'$'; for(int i=1;i<=2;i++) cout<<'.'; cout<<endl; //输出第二部分,输出 (n-2)*2 层 for(int i=3;i<=(n-2)*2+2;i++){ if(i%2){ //奇数层 for(int j=1;j<=(i-3)/2;j++) cout<<"$."; cout<<"$$$."; for(int j=1;j<=(n-(i-3)/2-1)*4+1;j++) cout<<'$'; cout<<".$$$"; for(int j=1;j<=(i-3)/2;j++) cout<<".$"; } else{ //偶数层 for(int j=1;j<=(i-1)/2;j++) cout<<"$."; cout<<"..$"; for(int j=1;j<=(n-(i-3)/2-1)*4-1;j++) cout<<'.'; cout<<"$.."; for(int j=1;j<=(i-1)/2;j++) cout<<".$"; } cout<<endl; } //输出第三部分,一共九行 for(int i=0;i<9;i++){ if(i==0 || i==8){ for(int j=1;j<=n-2;j++) cout<<"$."; cout<<"$$"; } else { for(int j=1;j<=n-1;j++) cout<<"$."; } for(int j=0;j<9;j++) cout<<ex[i*9+j]; if(i==0 || i==8){ cout<<"$$"; for(int j=1;j<=n-2;j++) cout<<".$"; } else { for(int j=1;j<=n-1;j++) cout<<".$"; } cout<<endl; } //输出第四部分。拷贝了第二部分,对for循环头部做了改动。 for(int i=(n-2)*2+2;i>=3;i--){ if(i%2){ //奇数层 for(int j=1;j<=(i-3)/2;j++) cout<<"$."; cout<<"$$$."; for(int j=1;j<=(n-(i-3)/2-1)*4+1;j++) cout<<'$'; cout<<".$$$"; for(int j=1;j<=(i-3)/2;j++) cout<<".$"; } else{ //偶数层 for(int j=1;j<=(i-1)/2;j++) cout<<"$."; cout<<"..$"; for(int j=1;j<=(n-(i-3)/2-1)*4-1;j++) cout<<'.'; cout<<"$.."; for(int j=1;j<=(i-1)/2;j++) cout<<".$"; } cout<<endl; } //输出第五部分。拷贝的第一部分,将第一层和第二层颠倒过来输出。 //第二层 for(int i=1;i<=2;i++) cout<<'.'; cout<<'$'; for(int i=1;i<=n*4-1;i++) cout<<'.'; cout<<'$'; for(int i=1;i<=2;i++) cout<<'.'; cout<<endl; //第一层 for(int i=1;i<=2;i++) cout<<'.'; for(int i=1;i<=n*4+1;i++) cout<<'$'; for(int i=1;i<=2;i++) cout<<'.'; cout<<endl; //还原 ex[0]='.'; ex[8]='.'; ex[72]='.'; ex[80]='.'; } } return 0; }
Freecode : www.cnblogs.com/yym2013
相关文章推荐
- ZOJ-2554
- 剑指OFFER之链表篇
- 嵌入式 linux编程中自定义LOG宏示例
- 黑马程序员------- 继承-------
- NSAutoreleasePool
- 生活没有后悔,给你一次后悔的机会
- CGI -- 通用网关接口
- C++学习过程中的问题记录
- oracle分析函数之rank学习记录
- u-boot-1.1.6移植到mini2440笔记
- 搬家了
- Python Collection 小技巧
- opencv 绘制半透明图形
- 危险代码:内存中的Java类和对象为何变得不安全—Part3
- 中国版BB-Black诞生记
- 剑指OFFER之数组篇
- 进度条脚本
- Flex与Java通信之HttpService方式
- Webstorm快捷键
- python学习笔记-04