循环结构-打印菱形

要求:用户输入6,即输出上面6行下面5行的菱形;如果输入10,则输出上面10行,下面9行的菱形。

效果如图

 

            int h;//表示菱形的高的一半,也就是用户输入的数
            Console.WriteLine("请输入xxx我也不知道这里怎么说");//提示用户输入一个数
            h = Convert.ToInt32(Console.ReadLine());//把用户的输入读取进来并存到h中

            //上半部分
            //思路:我们想输出菱形,要考虑每一行的星号前面有几个空格,每一行有几个星号
            //经过推(数)理(数)我们发现,星号最多一行的星号个数为 (2h-1) 个
            //第一行前面空格个数为h-1;第i行(i<h)空格个数为h-i
            //我们以h=6为例,星号最多的一行是第6行,*个数为11个,第6行前面是没有空格的
            //第一行前面有5个空格

            for (int i = 1; i <= h; i++)//第几行
            {
                for (int j = 1; j <= h - i; j++)//输出该行的空格
                {
                    Console.Write(" ");//输出一个空格
                }

                for (int k = 1; k <= 2 * i - 1; k++)//输出该行的* 每行星号个数为(2i-1)
                {
                    Console.Write("*");
                }

                Console.WriteLine();//当前行输出完成,换行
            }

            //到这里,上半行完成
            //下面打印下半行

            //下半行的话就完全反过来。下半行的第1行前面有一个空格 有[2(h-1)-1]个星号
            //下半行的第m行有m个空格,[2(h-m)-1]个星号
            //下半行共有h-1行

            for (int m = 1; m <= h - 1; m++)//m表示下半行的行数
            {
                for (int n = 1; n <= m; n++)//输出空格
                {
                    Console.Write(" ");
                }

                for (int o = 1; o <= 2 * (h - m) - 1; o++)//输出*
                {
                    Console.Write("*");
                }

                Console.WriteLine();//换行
            } 

 

posted @ 2015-04-08 17:26  MichaelLee2015  阅读(1690)  评论(0编辑  收藏  举报