您的位置:首页 > 其它

蓝桥杯练习题 PREV-2 打印十字图(文字图形)

2016-05-17 17:08 267 查看
问题描述
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:

对方同时也需要在电脑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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: