zoukankan      html  css  js  c++  java
  • for语句输出图形

    一、输出以下图形

    ********
    ********
    ********
    ********

     用for...for...嵌套循环,内循环控制每一行的个数(即列数),外循环控制行数

    class ForDraw
    {
        public static void main(String[] args)
        {
            for (int i=1;i<=4 ;i++ )                //外循环,控制行数
            {
                for (int j=1;j<=8 ;j++ )            //内循环,控制每行打印*的个数。j=1;j<=8,即8个
                {
                    System.out.print("*");            
                }
                System.out.print("
    ");             //一行完成后,跳出循环,打印一个换行符
            }
        }
    }

     以下,可控制行和列

    class ForDraw
    {
        public static void main(String[] args)
        {
            int lay=5;      //变量lay控制行
            int col=12;    //变量col控制列
            for (int i=1;i<=lay ;i++ )                
            {
                for (int j=1;j<=col ;j++ )            
                {
                    System.out.print("*");            
                }
                System.out.print("
    ");            
            }
        }
    }

    二、输出以下图形

    *
    **
    ***
    ****
    *****
    ******
    *******
    ********

    方法一(推荐方法):

    思路:
    第一行1个、第二行2个。。。。说明每行打印*数与行号一样。

    class ForDraw
    {
        public static void main(String[] args)
        {
            for (int i=1;i<=8 ;i++ )            //控制行数。
            {
                for (int j=0;j<=i ;j++ )        //控制每行*数。循环条件是j<=i,即每行*最大数即行号。
                {
                    System.out.print("*");
                }
                System.out.print("
    ");            
    
            }
        }
    }

    方法二:

    每循环一次,打印数量比上一行多一次。可定义一个变量,记录下循环次数。第一次循环打印1个*,第次循环打印2个*。

    class ForDraw
    {
        public static void main(String[] args)
        {
            int count=1;                        //记录循环次数。
            for (int i=1;i<=8 ;i++ )            //控制行数。
            {
                for (int j=0;j<count ;j++ )        //控制每行*数。
                {
                    System.out.print("*");
                }
                System.out.print("
    ");            
                count++;
            }
        }
    }

     三、输出以下图形

    ********
    *******
    ******
    *****
    ****
    ***
    **
    *

    方法一(推荐):

    思路:第一行8个、第二行7个……即最多打印8个,第一行循环8次,即1-8;第二行循环7次,即2-8,以此类推

    class ForDraw
    {
        public static void main(String[] args)
        {
            for (int i=1;i<=8 ;i++ )            //控制行数。
            {
                for (int j=i;j<=8 ;j++ )        //控制每行*数。循环条件是j=i;j<=8,即每行数量循环次数。
                {
                    System.out.print("*");
                }
                System.out.print("
    ");            
    
            }
        }
    }

    方法二:第一行8个、第二行7个……即最多打印8个,第一行循环8次,即1-8;第二行循环7次,即1-7,以此类推

    class ForDraw
    {
        public static void main(String[] args)
        {
            for (int i=1;i<=8 ;i++ )            //控制行数。
            {
                for (int j=0;j<=(8-i) ;j++ )    //控制每行*数。循环条件是j=i;j<=8,即每行数量循环次数。
                {
                    System.out.print("*");
                }
                System.out.print("
    ");            
    
            }
        }
    }

    四、输出以下图形 

            *
          **
         ***
       ****
      *****
    ******

    思路:

    第1行实际上是打印5个空格和1个*;第1行实际上是打印4个空格和2个*……以此类推

    class ForDraw
    {
        public static void main(String[] args)
        {
            for (int i=1;i<=6 ;i++ )            //控制行数。
            {
                for (int j=i;j<=5 ;j++ )        //控制空格的输出。第一行5个空,第二行4个空,以此类推
                {
                    System.out.print(" ");
                }
                for (int j=1;j<=i ;j++ )        //控制*的输出。第一行1个*,第二行2个*,以此类推。
                {
                    System.out.print("*");
                }
                System.out.print("
    ");            
    
            }
        }
    }

    五、输出以下图形 

        *
       ***
      *****
     *******
    *********

     思路:

    第1行实际上是打印4个空格,1个*;第2行实际上是打印3个空格,3个*……*个数是行号*2-1

    class ForDraw
    {
        public static void main(String[] args)
        {
            for (int i=1;i<=5 ;i++ )            //控制行数。
            {
                for (int j=i;j<=4 ;j++ )        //控制空格的输出。第一行4个空,第二行5个空,以此类推,共4行
                {
                    System.out.print(" ");
                }
                for (int j=1;j<=i*2-1 ;j++ )        //控制*的输出。第一行1个*,第二行2个*,以此类推,即行号*2-1
                {
                    System.out.print("*");
                }
                System.out.print("
    ");            
    
            }
        }
    }

    六、输出以下图形 

         *
       *   *
      *      *
     *         *
    *********

     思想:

    第1行和最后一行单独控制

    其它几行,用for...for...嵌套循环来控制。

    class ForDraw
    {
        public static void main(String[] args)
        {
            for (int i=1;i<=4 ;i++ )            //控制第一行,打印4个空格
            {
                System.out.print(" ");
            }
            System.out.print("*");              //第一行4个空格之后,打印一个*
            System.out.print("
    ");
    
            for (int i=1;i<=3 ;i++ )            //控制行数。
            {
                for (int j=i;j<=3 ;j++ )        //控制空格的输出。第一行3个空,第二行2个空,以此类推,共3行
                {
                    System.out.print(" ");
                }
                System.out.print("*");          //空格后输出一个*
                for (int j=1;j<=i*2-1 ;j++ )    //控制空格的输出。    
                {
                    System.out.print(" ");
                }
                System.out.print("*");          //空格后输出一个*
                System.out.print("
    ");            
    
            }
            for (int i=1;i<=9 ;i++ )            //控制最后一行
            {
                System.out.print("*");
            }
        }
    }

    方法二(推荐此方法):

    思路:

    先打印三角形前面的空格,再打印三角形

    三角形中,第一行和最后一行全是*,先打印。

    三角形中,其余各行中,第一个和最后一个字符是*,其余是空格。

    class ForDraw
    {
        public static void main(String[] args)
        {
            int lay=5;                    //层数5层
            for (int i=1;i<=lay ;i++ )    //控制5层循环。i变量控制层数。
            {
                //以下控制三角形前面的空格打印,1--4  2--3  3--2。j用一次for循环就释放。
                for (int j=1;j<=lay-i ;j++ )
                {
                    System.out.print(" ");
                }
                //以下控制*打印
                //1--1  2--3  3--5
                //其余2个,最后一行全是。k变量用来控制每一行的*数量。
                for (int k=1;k<=i*2-1 ;k++ )
                {
                    //第一层和最后一层,全打*。涉及到层数,用i变量。
                    if (i==1 | i==lay)
                    {
                        System.out.print("*");
                    }else
                    {
                        //第一个和最后一个打*,其余打空格。涉及到每一层的*个数,用k变量。
                        if (k==1 |k==i*2-1)
                        {
                            System.out.print("*");
                        }
                        else
                        {
                            System.out.print(" ");
                        }
                    }
                }
                System.out.println();
            }
        }
    }
  • 相关阅读:
    单链表反转
    C++面试题
    堆排序
    1链表:回文链表(leetcode 234)
    深信服社招linux岗面试记录
    腾讯后台开发社招记录(电话面试)
    小米社招ATE岗位记录
    诺基亚社招C++面试记录
    腾讯后台开发社招面试记录
    makefile笔记
  • 原文地址:https://www.cnblogs.com/ibelieve618/p/6373216.html
Copyright © 2011-2022 走看看