打印十字图

标题:打印十字图


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


              



    对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
    
    为了能准确比对空白的数量,程序要求对行中的空白以句点(.)代替。


输入格式:
一个正整数 n (n<30) 表示要求打印图形的层数


输出:
对应包围层数的该标志。


例如:
用户输入:
1
程序应该输出:
 ..$$$$$..
   ..$...$..
$$$.$.$$$
   $...$...$
$.$$$$$.$
   $...$...$
$$$.$.$$$
    ..$...$..
  ..$$$$$..


再例如:
用户输入:
3
程序应该输出:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..


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




资源约定:
峰值内存消耗(含虚拟机) < 64M
CPU消耗  < 1000ms




请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。


所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.6及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。

import java.util.Scanner;

public class HongShiZi {
	public static void main(String[]args){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		solve(n);
	}
	
	public static void solve(int n){
		int i,j,m=4*n+5;
		char a[][] = new char[901][901];
		for(i=0; i<m; i++)
			for(j=0; j<m; j++)
				a[i][j] = '.';       //先全部画'.'
		for(i=-2; i<=2; i++){        //画红十字
			a[m/2+i][m/2] = '$';
			a[m/2][m/2+i] = '$';
		}
		
		int di = 0, dj = m;   //为外包围做准备的属性
		
		while(n != 0){         //外包围层数
			n--;
			for(i=di+2; i<dj-2; i++){  //先画上下左右的$
				a[di][i] = '$';
				a[dj-1][i] = '$';
				a[i][di] = '$';
				a[i][dj-1] = '$';
			}
			//把其他的$补满
			a[di+1][di+2] = '$';
			a[di+1][dj-1-2] = '$';
			a[di+2][di+1] = '$';
			a[di+2][di+2] = '$';
			a[di+2][dj-1-2] = '$';
			a[di+2][dj-1-1] = '$';
			a[dj-1-1][di+2] = '$';
			a[dj-1-1][dj-1-2] = '$';
			a[dj-1-2][di+1] = '$';
			a[dj-1-2][di+2] = '$';
			a[dj-1-2][dj-1-1] = '$';
			a[dj-1-2][dj-1-2] = '$';
			di += 2;
			dj -= 2;
		}
		for(i=0; i<m; i++){
			for(j=0; j<m; j++){
				System.out.print(a[i][j]);
			}
			System.out.println();
		}
	}
}

这种打印图形的题要找到规律,就很好做了
  
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值