小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见p1.jpg)
$$$$$$$$$$$$$
$ $
$$$ $$$$$$$$$ $$$
$ $ $ $
$ $$$ $$$$$ $$$ $
$ $ $ $ $ $
$ $ $$$ $ $$$ $ $
$ $ $ $ $ $ $
$ $ $ $$$$$ $ $ $
$ $ $ $ $ $ $
$ $ $$$ $ $$$ $ $
$ $ $ $ $ $
$ $$$ $$$$$ $$$ $
$ $ $ $
$$$ $$$$$$$$$ $$$
$ $
$$$$$$$$$$$$$
对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
为了能准确比对空白的数量,程序要求对行中的空白以句点(.)代替。
输入格式:
一个正整数 n (n<30) 表示要求打印图形的层数 输出: 对应包围层数的该标志。 例如: 用户输入: 1 程序应该输出: ..$$$$$.. ..$...$.. $$$.$.$$$ $...$...$ $.$$$$$.$ $...$...$ $$$.$.$$$ ..$...$.. ..$$$$$.. 再例如: 用户输入: 3 程序应该输出: ..$$$$$$$$$$$$$.. ..$...........$.. $$$.$$$$$$$$$.$$$ $...$.......$...$ $.$$$.$$$$$.$$$.$
$.$...$...$...$.$ $.$.$$$.$.$$$.$.$ $.$.$...$...$.$.$ $.$.$.$$$$$.$.$.$ $.$.$...$...$.$.$ $.$.$$$.$.$$$.$.$ $.$...$...$...$.$ $.$$$.$$$$$.$$$.$ $...$.......$...$ $$$.$$$$$$$$$.$$$ ..$...........$.. ..$$$$$$$$$$$$$.. 请仔细观察样例,尤其要注意句点的数量和输出位置。 资源约定: 峰值内存消耗 <
64M CPU消耗 < 1000ms 请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意: main函数需要返回0 注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。 注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型
#include <iostream>
#include <cstdio>
using namespace std;
int n;
int check(int i, int j)
{
if(i>2*n+3)//上下
i=4*n-i+6;
if(j>2*n+3)
j=4*n-j+6;
if(i<=2&&j<=2)return 0;//前两行
if(i%2==1&&j==i+1)return 0;//s.后面的点
if(j%2==1&&j<i-2)return 1;//s.前面的s
if(i%2==0&&j==i+1)return 1; //偶数行$
if(i%2==1&&j>=i-2)return 1;//奇数行中间的$
return 0;//剩下的都是点
}
int main()
{
int i,j;
scanf("%d", &n);
for(i=1;i<=4*n+5;i++)//总共2*n+5行
{
for(j=1;j<=4*n+5;j++)
{
if(check(i,j))
printf("$");
else
printf(".");
}
printf("\n");
}
return 0;
}