首页 > 其他 > 详细

蓝桥杯 历届试题 打印十字图

时间:2014-01-15 23:46:10      阅读:406      评论:0      收藏:0      [点我收藏+]

历届试题 打印十字图  

时间限制:1.0s   内存限制:256.0MB
问题描述

小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:

bubuko.com,布布扣
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
bubuko.com,布布扣

 

对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。

输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式
对应包围层数的该标志。
样例输入1
1
样例输出1
bubuko.com,布布扣
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..
bubuko.com,布布扣

样例输入2

3
样例输出2
bubuko.com,布布扣
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
bubuko.com,布布扣

 

提示
请仔细观察样例,尤其要注意句点的数量和输出位置。

 
水题,图形输出。
代码很长,没有做优化,找到关系了就简单粗暴的输出,思路很简单,做了注释,不难看懂。
有时间会做一次优化。
 
bubuko.com,布布扣
  1 #include <iostream>
  2 using namespace std;
  3 char ex[82] = "..$$$$$....$...$..$$$.$.$$$$...$...$$.$$$$$.$$...$...$$$$.$.$$$..$...$....$$$$$..";
  4 
  5 int main()
  6 {
  7     int n;
  8     while(cin>>n){
  9         if(n==1){   //如果只有一层,则直接输出
 10             for(int i=0;i<=80;i++){
 11                 if(i==0)
 12                     cout<<ex[i];
 13                 else if(i%9)
 14                     cout<<ex[i];
 15                 else
 16                     cout<<endl<<ex[i];
 17             }
 18             cout<<endl;
 19         }
 20         else{
 21             ex[0]=$;
 22             ex[8]=$;
 23             ex[72]=$;
 24             ex[80]=$;
 25             //输出第一部分,即最上面两层
 26             //第一层
 27             for(int i=1;i<=2;i++)
 28                 cout<<.;
 29             for(int i=1;i<=n*4+1;i++)
 30                 cout<<$;
 31             for(int i=1;i<=2;i++)
 32                 cout<<.;
 33             cout<<endl;
 34             //第二层
 35             for(int i=1;i<=2;i++)
 36                 cout<<.;
 37             cout<<$;
 38             for(int i=1;i<=n*4-1;i++)
 39                 cout<<.;
 40             cout<<$;
 41             for(int i=1;i<=2;i++)
 42                 cout<<.;
 43             cout<<endl;
 44             //输出第二部分,输出 (n-2)*2 层
 45             for(int i=3;i<=(n-2)*2+2;i++){
 46                 if(i%2){    //奇数层
 47                     for(int j=1;j<=(i-3)/2;j++)
 48                         cout<<"$.";
 49                     cout<<"$$$.";
 50                     for(int j=1;j<=(n-(i-3)/2-1)*4+1;j++)
 51                         cout<<$;
 52                     cout<<".$$$";
 53                     for(int j=1;j<=(i-3)/2;j++)
 54                         cout<<".$";
 55                 }
 56                 else{   //偶数层
 57                     for(int j=1;j<=(i-1)/2;j++)
 58                         cout<<"$.";
 59                     cout<<"..$";
 60                     for(int j=1;j<=(n-(i-3)/2-1)*4-1;j++)
 61                         cout<<.;
 62                     cout<<"$..";
 63                     for(int j=1;j<=(i-1)/2;j++)
 64                         cout<<".$";
 65                 }
 66                 cout<<endl;
 67             }
 68             //输出第三部分,一共九行
 69             for(int i=0;i<9;i++){
 70                 if(i==0 || i==8){
 71                     for(int j=1;j<=n-2;j++)
 72                         cout<<"$.";
 73                     cout<<"$$";
 74                 }
 75                 else {
 76                     for(int j=1;j<=n-1;j++)
 77                         cout<<"$.";
 78                 }
 79                 for(int j=0;j<9;j++)
 80                     cout<<ex[i*9+j];
 81                 if(i==0 || i==8){
 82                     cout<<"$$";
 83                     for(int j=1;j<=n-2;j++)
 84                         cout<<".$";
 85                 }
 86                 else {
 87                     for(int j=1;j<=n-1;j++)
 88                         cout<<".$";
 89                 }
 90                 cout<<endl;
 91             }
 92             //输出第四部分。拷贝了第二部分,对for循环头部做了改动。
 93             for(int i=(n-2)*2+2;i>=3;i--){
 94                 if(i%2){    //奇数层
 95                     for(int j=1;j<=(i-3)/2;j++)
 96                         cout<<"$.";
 97                     cout<<"$$$.";
 98                     for(int j=1;j<=(n-(i-3)/2-1)*4+1;j++)
 99                         cout<<$;
100                     cout<<".$$$";
101                     for(int j=1;j<=(i-3)/2;j++)
102                         cout<<".$";
103                 }
104                 else{   //偶数层
105                     for(int j=1;j<=(i-1)/2;j++)
106                         cout<<"$.";
107                     cout<<"..$";
108                     for(int j=1;j<=(n-(i-3)/2-1)*4-1;j++)
109                         cout<<.;
110                     cout<<"$..";
111                     for(int j=1;j<=(i-1)/2;j++)
112                         cout<<".$";
113                 }
114                 cout<<endl;
115             }
116             //输出第五部分。拷贝的第一部分,将第一层和第二层颠倒过来输出。
117             //第二层
118             for(int i=1;i<=2;i++)
119                 cout<<.;
120             cout<<$;
121             for(int i=1;i<=n*4-1;i++)
122                 cout<<.;
123             cout<<$;
124             for(int i=1;i<=2;i++)
125                 cout<<.;
126             cout<<endl;
127             //第一层
128             for(int i=1;i<=2;i++)
129                 cout<<.;
130             for(int i=1;i<=n*4+1;i++)
131                 cout<<$;
132             for(int i=1;i<=2;i++)
133                 cout<<.;
134             cout<<endl;
135             //还原
136             ex[0]=.;
137             ex[8]=.;
138             ex[72]=.;
139             ex[80]=.;
140         }
141     }
142     return 0;
143 }
bubuko.com,布布扣

  

Freecode : www.cnblogs.com/yym2013

蓝桥杯 历届试题 打印十字图

原文:http://www.cnblogs.com/yym2013/p/3515480.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!