打印字母菱形

    xiaoxiao2021-03-25  138

    描述

    这个菱形大家熟悉吧。

     

        *

       ***

      *****

       ***

        *

    现在要求的是打印这样的菱形:不要*号,要最外层是字母A,然后里一层是B,再里一层是C···这样呢?

     

        A

       ABA

      ABCBA

       ABA

        A

    输入

    第一行是一个正整数N(N≤25),代表有N组测试数据。

    每一组数据包括一个正整数M(1≤M≤25),表示菱形的半径(直径就是M*2+1)。

    输出

    对于每组数据,输出要求打印的菱形。

    样例输入

    1

    2

    样例输出

       A

      ABA

     ABCBA

      ABA

       A

    方法一:

    static Scanner scan=new Scanner(System.in); int dd; int isb; public static void main(String[] args){ Test02 test2=new Test02(); int a=scan.nextInt(); while(a>0){ test2.start(); a--; } } public void start(){ char c='A'; int a=1; int b=0; int d=scan.nextInt(); if((d+'A')>('A')&&(d+'A')<('Z'+1)){ recursion(a,b,c,d); isb=-1; dd=d; recursion(a+d-1,0,c,1); isb=0; } } public void recursion(int a,int b,char c,int d){ if(b==a&&a>0){ return; } int i=b; int g=0; while(i<a){ if(i==0){ for(int j=0;j<d;j++){ System.out.print(" "); } } int f=++i; if(g<2){ System.out.print(c); if(g<1){ recursion(a,f,(char)(c+1),d); } ++g; } } if(isb==0){ if(b==0){ System.out.println(); if(d>0){ a++; recursion(a,b,c,d-1); } } } if(isb==-1){ if(b==0){ System.out.println(); if(d<=dd){ a--; recursion(a,b,c,d+1); } } } }

    方法二:

    public static void main(String[] args){ Scanner sc=new Scanner(System.in); int n=sc.nextInt(); for(int b=0;b<n;b++){ int m=sc.nextInt(); int h=(2*m+1)/2; for(int i=0;i<=h;i++){ for(int j=h;j>i;j--){ System.out.print(" "); } for(int j=0;j<2*i+1;j++){ if(j<(2*i+1)/2+1) System.out.print((char)(65+j)); else System.out.print((char)(65+(2*i+1)-j-1)); } System.out.println(); } for(int i=h;i>0;i--){ for(int j=0;j<=h-i;j++){ System.out.print(" "); } for(int j=0;j<2*(i-1)+1;j++){ if(j<(2*(i-1)+1)/2+1) System.out.print((char)(65+j)); else System.out.print((char)(65+(2*(i-1))-j)); } System.out.println(); } } }

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

    最新回复(0)