试题 历届试题 打印十字图
提交此题 评测记录
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式
对应包围层数的该标志。
样例输入1
1
样例输出1
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..
样例输入2
3
样例输出2
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
提示
请仔细观察样例,尤其要注意句点的数量和输出位置
#include<iostream>
using namespace std;
char a[130][130];
int main(){
int n;
cin >> n;
for(int i=0;i<4*n+5;i++){
for(int j=0;j<4*n+5;j++){
a[i][j] = '.';
}
} //初始化
for(int i=0;i<3;i++){
for(int j=0;j<=n;j++){
a[i+j*2][2+j*2]='$';
a[2+j*2][i+j*2]='$';
}
}
for(int j=0;j<n;j++){
for(int i=0;i<2*n-2*j;i++){
a[2*j][i+2*j+3]='$';
a[i+2*j+3][2*j]='$';
}
}
int l=4*n+5;
for(int i=0;i<l/2+1;i++){
for(int j=0;j<l;j++){
a[i][l-j-1]=a[i][j];//左右镜像
a[l-i-1][l-j-1]=a[i][j];//上下镜像
}
}
for(int i=0;i<4*n+5;i++){
for(int j=0;j<4*n+5;j++){
cout << a[i][j];
}
cout << endl;
}
return 0;
}