输出图形

. . $ $ $ $ $ . .
. . $ . . . $ . .
$ $ $ . $ . $ $ $
$ . . . $ . . . $
$ . $ $ $ $ $ . $
$ . . . $ . . . $
$ $ $ . $ . $ $ $
. . $ . . . $ . .
. . $ $ $ $ $ . .


. . $ $ $ $ $ $ $ $ $ . .
. . $ . . . . . . . $ . .
$ $ $ . $ $ $ $ $ . $ $ $
$ . . . $ . . . $ . . . $
$ . $ $ $ . $ . $ $ $ . $
$ . $ . . . $ . . . $ . $
$ . $ . $ $ $ $ $ . $ . $
$ . $ . . . $ . . . $ . $
$ . $ $ $ . $ . $ $ $ . $
$ . . . $ . . . $ . . . $
$ $ $ . $ $ $ $ $ . $ $ $
. . $ . . . . . . . $ . .
. . $ $ $ $ $ $ $ $ $ . .


. . $ $ $ $ $ $ $ $ $ $ $ $ $ . .
. . $ . . . . . . . . . . . $ . .
$ $ $ . $ $ $ $ $ $ $ $ $ . $ $ $
$ . . . $ . . . . . . . $ . . . $
$ . $ $ $ . $ $ $ $ $ . $ $ $ . $
$ . $ . . . $ . . . $ . . . $ . $
$ . $ . $ $ $ . $ . $ $ $ . $ . $
$ . $ . $ . . . $ . . . $ . $ . $
$ . $ . $ . $ $ $ $ $ . $ . $ . $
$ . $ . $ . . . $ . . . $ . $ . $
$ . $ . $ $ $ . $ . $ $ $ . $ . $
$ . $ . . . $ . . . $ . . . $ . $
$ . $ $ $ . $ $ $ $ $ . $ $ $ . $
$ . . . $ . . . . . . . $ . . . $
$ $ $ . $ $ $ $ $ $ $ $ $ . $ $ $
. . $ . . . . . . . . . . . $ . .
. . $ $ $ $ $ $ $ $ $ $ $ $ $ . .


/*
问题描述:
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..

对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
输入格式:
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式:
对应包围层数的该标志。
样例输入1:
1
样例输出1:
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..
样例输入2:
3
样例输出2:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
提示:
请仔细观察样例,尤其要注意句点的数量和输出位置。
*/
#include <stdio.h>
int main(){
	int a[125][125]={0},i,j,k,n,cen;
	scanf("%d",&n);
	cen=2*n+3;//通过观察样例图形找出的规律 
	a[cen-2][cen]=a[cen-1][cen]=1;
	for(i=3;i<=cen;i=i+2)
		a[i][i]=1;
	for(i=2;i<=cen-3;i=i+2)
		a[i][i+1]=1;
	for(i=1;i<cen-2;i=i+2)
		for(j=i+2;j<=cen;j++)
			a[i][j]=1;//左边8分之一图形
/*把图形拆分成几个部分,每一个部分一个一个解决,有重复的用8分之一,后来再覆盖即可,同时只找有规律的"$"而不是".",方便用循环*/
	for(i=1;i<=cen;i++)
		for(j=i;j<=cen;j++)
			a[j][i]=a[i][j];
	for(i=1;i<=cen;i++)
		for(j=1;j<=cen;j++)
			a[i][2*cen-j]=a[i][j];
	for(i=1;i<=cen;i++)
		for(j=1;j<=2*cen-1;j++)
			a[2*cen-i][j]=a[i][j];
	for(i=1;i<=2*cen-1;i++)
		for(j=1;j<=2*cen-1;j++){
			if(a[i][j]==1)
				printf("$");//用1,找有规律的"$",而不是去找".",用1,如果是1,输出,而不一定用char装"$"与"."
			else
				printf(".");
			if(j==2*cen-1)
				printf("\n");
		}
	return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值