蓝桥杯-打印十字形

    xiaoxiao2021-03-25  88

    题目

    题目标题:打印十字图

    小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见p1.jpg) $$$$$$$$$$$$$ $ $ $$$ $$$$$$$$$ $$$ $ $ $ $ $ $$$ $$$$$ $$$ $ $ $ $ $ $ $ $ $ $$$ $ $$$ $ $ $ $ $ $ $ $ $ $ $ $ $$$$$ $ $ $ $ $ $ $ $ $ $ $ $ $$$ $ $$$ $ $ $ $ $ $ $ $ $ $$$ $$$$$ $$$ $ $ $ $ $ $$$ $$$$$$$$$ $$$ $ $ $$$$$$$$$$$$$ 对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。 为了能准确比对空白的数量,程序要求对行中的空白以句点(.)代替。 输入格式: 一个正整数 n (n<30) 表示要求打印图形的层数 输出: 对应包围层数的该标志。 例如: 用户输入: 1 程序应该输出: ..$$$$$.. ..$...$.. $$$.$.$$$ $...$...$ $.$$$$$.$ $...$...$ $$$.$.$$$ ..$...$.. ..$$$$$.. 再例如: 用户输入: 3 程序应该输出: ..$$$$$$$$$$$$$.. ..$...........$.. $$$.$$$$$$$$$.$$$ $...$.......$...$ $.$$$.$$$$$.$$$.$ $.$...$...$...$.$ $.$.$$$.$.$$$.$.$ $.$.$...$...$.$.$ $.$.$.$$$$$.$.$.$ $.$.$...$...$.$.$ $.$.$$$.$.$$$.$.$ $.$...$...$...$.$ $.$$$.$$$$$.$$$.$ $...$.......$...$ $$$.$$$$$$$$$.$$$ ..$...........$.. ..$$$$$$$$$$$$$.. 请仔细观察样例,尤其要注意句点的数量和输出位置。

    代码 import java.util.Scanner; public class PrintCross { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int len = 4*n+5; int[][] A = new int[len][len]; //填充外层的花型 for(int i=1;i<=n;i++) { //每层有两行 //上 与 下 for(int j=2*i;j1<len-2*i;j++) A[2*i-2][j] = A[len+1-2*i][j] = 1; A[2*i-1][2*i] = A[2*i-1][len-2*i-1] = 1; A[len-2*i][2*i] = A[len-2*i][len-2*i-1] = 1; //接下来写左右就很简单,只要互换XY的坐标即可 //右 与 左 for(int j=2*i;j<len-2*i;j++) A[j][2*i-2] = A[j][len+1-2*i] = 1; A[2*i][2*i-1] = A[len-2*i-1][2*i-1] = 1; A[2*i][len-2*i] = A[len-2*i-1][len-2*i] = 1; } //填充中间的十字 for(int i=0;i<5;i++) { //横向的 A[2*n+2][2*n+i] = 1; //纵向的 A[2*n+i][2*n+2] = 1; } //打印 for(int i=0;i<len;i++) for(int j=0;j<len;j++) System.out.print(A[i][j]==1?'$':'.'); System.out.println(); } } 输出 5 ..$$$$$$$$$$$$$$$$$$$$$.. ..$...................$.. $$..$$$$$$$$$$$$$$$$$..$$ $...$...............$...$ $.$$..$$$$$$$$$$$$$..$$.$ $.$...$...........$...$.$ $.$.$$..$$$$$$$$$..$$.$.$ $.$.$...$.......$...$.$.$ $.$.$.$$..$$$$$..$$.$.$.$ $.$.$.$...$...$...$.$.$.$ $.$.$.$.$$..$..$$.$.$.$.$ $.$.$.$.$...$...$.$.$.$.$ $.$.$.$.$.$$$$$.$.$.$.$.$ $.$.$.$.$...$...$.$.$.$.$ $.$.$.$.$$..$..$$.$.$.$.$ $.$.$.$...$...$...$.$.$.$ $.$.$.$$..$$$$$..$$.$.$.$ $.$.$...$.......$...$.$.$ $.$.$$..$$$$$$$$$..$$.$.$ $.$...$...........$...$.$ $.$$..$$$$$$$$$$$$$..$$.$ $...$...............$...$ $$..$$$$$$$$$$$$$$$$$..$$ ..$...................$.. ..$$$$$$$$$$$$$$$$$$$$$.. 思考

    看到这种题,酒席分析他的规律。显然此题是由一层一层的围成,中间是一个十字,所以不妨就层层填充,最后中间再补上十字,之后输出打印即可。关键是分析出规律,此题还有小窍门,就是说,图是中心对称,当我们把上下填充完后,直接调换位置,就是左右的情况,这里我们就用上了中心对称。

    转载请注明原文地址: https://ju.6miu.com/read-16074.html

    最新回复(0)