精华内容
下载资源
问答
  • 打印十字图

    2016-04-06 22:05:12
    打印十字图
    小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见p1.jpg)


                     


    import java.util.Scanner;
    
    public class dibage {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner scan = new Scanner(System.in);
    		int line = scan.nextInt();
    		shuzu(line);
    	}
    	//定义一个二维数组,赋值为 $  然后找 dian的位置 。
    	public static void shuzu(int n) {
    		int num = 5 + 4 * n, s = 0;
    		char[][] arr = new char[num][num];
    		for (int i = 0; i < arr.length; i++) {
    			for (int j = 0; j < arr.length; j++) {
    				arr[i][j] = '$';
    			}
    		}
    		show(arr);
    
    		dayin(arr);
    	}
    
    	public static void dayin(char[][] arr) {
    		for (int i = 0; i < arr.length; i++) {
    			for (int j = 0; j < arr.length; j++) {
    				System.out.print(arr[i][j]);
    			}
    			System.out.print("\n");
    		}
    	}
    
    	public static void show(char[][] arr) 
    	{
    		int lain = arr.length / 2 + 1;
    		for (int count = 0; count < lain; count += 2) 
    		{
    
    			for (int i =  count; i < lain; i++) 
    			{
    				for (int j =  count; j < lain; j++) 
    				{
    					//对角线  
    					if (i == 0 && j == 0 || i == j && i % 2 == 1) {
    						arr[i][j] = '.';
    					}
    					//
    					if (i == count + 1 && j > 2 + count) {
    						arr[i][j] = '.';
    					}
    					if (j == count + 1 && i > 2 + count) {
    						arr[i][j] = '.';
    					}
    					if (i == count - 1 && j < count) {
    						arr[i][j] = '.';
    					}
    					if (j == count - 1 && i < count) {
    						arr[i][j] = '.';
    					}
    					if (i == count + 1 && j < 2 + count) {
    						arr[i][j] = '.';
    					}
    					if (j == count + 1 && i < 2 + count) {
    						arr[i][j] = '.';
    					}
    					
    
    				}
    				
    			}
    			//右上角
    			for(int i=0+count,x=0+count;i<lain;i++,x++)
                {
                        for(int j=lain,y=lain-2;j<arr.length-count;j++,y--)
                        {
                                arr[i][j] = arr[x][y];                                
                        }                        
                        
                }
    			//左下角
    			for (int i = lain, x=lain - 2; i < arr.length - count; i++ , x--) {
    				for (int j = count , y = count; j < lain ;  j++ , y++) {
    					arr[i][j]= arr[x][y] ;
    				}
    			}
    			//右下角
    			for (int i = lain, x=lain - 2; i < arr.length - count; i++ , x--) {
    				for(int j=lain,y=lain-2;j<arr.length-count;j++,y--)
                    {
                            arr[i][j] = arr[y][x];                                
                    }
    			}
    		}
    		
    		
    
    	}
    	
    
    	
    
    }


    展开全文
  • 打印十字图形

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

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

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

    对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。

    输入格式
    一个正整数 n (n<30) 表示要求打印图形的层数。
    输出格式
    对应包围层数的该标志。
    样例输入1
    1
    样例输出1
    ..$$$$$..
    ..$...$..
    $$$.$.$$$
    $...$...$
    $.$$$$$.$
    $...$...$
    $$$.$.$$$
    ..$...$..
    ..$$$$$..
    样例输入2
    3
    样例输出2
    ..$$$$$$$$$$$$$..
    ..$...........$..
    $$$.$$$$$$$$$.$$$
    $...$.......$...$
    $.$$$.$$$$$.$$$.$
    $.$...$...$...$.$
    $.$.$$$.$.$$$.$.$
    $.$.$...$...$.$.$
    $.$.$.$$$$$.$.$.$
    $.$.$...$...$.$.$
    $.$.$$$.$.$$$.$.$
    $.$...$...$...$.$
    $.$$$.$$$$$.$$$.$
    $...$.......$...$
    $$$.$$$$$$$$$.$$$
    ..$...........$..
    ..$$$$$$$$$$$$$..
    提示
    请仔细观察样例,尤其要注意句点的数量和输出位置。

    本来看到这道题我都不太想做了,可是我发现这样不好,现在不做,之后比赛我更做不出来。首先我把图画下来找规律,很容易发现这个图形是中心对称(不考虑宽窄的话),于是我想到了只找图形的四分之一或者八分之一的规律,然后就用对称把图形弄完整,于是我空想了很久,找了挺多规律,但我又觉得自己找到的规律不好实现。于是我就百度了。。。。看了许多人总结的,我发现有的人真的超级不怕麻烦,可能找下来的规律不是最简便的,但别人至少写出代码了。于是我受到了鼓舞。我用的是我在网上看见的我觉得最简单的规律,就是把那四分之一分成三部分,实现起来也比较简单。

    还有我中间出现了一个问题,我发现在写代码用到一个变量的时候,一定要确定这个变量的初始值是不是你想要的。

    下面是代码

    #include <stdio.h>
    #include <stdlib.h>
    
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    int pic(int n)
    {
    	int row,col,cen;
    	int x=0,y=0,i;//用xy我比较容易分清楚行列 
    	char a[130][130];
    	row=9+(n-1)*4;
    	col=9+(n-1)*4;//算出行列数
    	cen=(row-1)/2;//算出中心
    	//先把.放进数组
    	  for(x=0;x<row;x++)
    	  {
    	  	
    	  	for(y=0;y<col;y++)
    	  	{
    	  	a[x][y]='.'; 
    		  }
    	   } 
    	//给b区赋值
    	for(i=cen;i>0;i=i-2)
    	{
    		a[i][i]='$';
    		a[i-1][i]='$';
    		a[i][i-1]='$';
    		
    	 } 
    	 //给a区赋值
    	 x=0;
    	 for(y=0;y<=(cen-2);y=y+2)//在列上循环 
    	 {
    	 	x=x+2;//行开始的地方 
    	 	for(i=x;i<=cen;i++)//在行中循环画多少个$
    		 {
    		 	a[i][y]='$';
    		 	
    		  } 
    	 	
    	  } 
    	  //给c区赋值
    	  y=0;
    	  for(x=0;x<=(cen-2);x=x+2)//在行上循环 
    	 {
    	 	y=y+2;//列开始的地方 
    	 	for(i=y;i<=cen;i++)//在列中循环画多少个$
    		 {
    		 	a[x][i]='$';
    		 	
    		  } 
    	 	
    	  } 
    	  //开始对称赋值
    	 //y轴对称
    	 for(y=0;y<=cen;y++)
    	 {
    	 	 for(x=row-1;x>cen;x--)
    	 {
    	 	a[x][y]=a[row-x-1][y];
    	 	
    	  } 
    	 }
    	 //x轴对称
    	 for(x=0;x<row;x++)
    	 {
    	 	for(y=col-1;y>cen;y--)
    	 	{
    	 		
    	 		a[x][y]=a[x][col-y-1];
    		 }
    	 	
    	  } 
    	  //输出
    	  for(x=0;x<row;x++)
    	  {
    	  	
    	  	for(y=0;y<col;y++)
    	  	{
    	  		printf("%c",a[x][y]);
    	  		
    		  }
    		  printf("\n");
    	   } 
    	
    	  
    	 
    	return 0;
     } 
    int main() {
    	int n;
    	scanf("%d",&n);
    	pic(n);
    	return 0;
    }

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 518
精华内容 207
关键字:

打印十字图