如何在控制台中绘制(C#)

时间:2018-11-15 13:49:16

标签: c# console nested-loops

最近在IT班上,我们提供了一个简单的控制台程序,该程序使用嵌套循环绘制直角三角形。我不太了解这段代码中发生了什么。有人可以解释它的工作原理以及如何在控制台中创建其他形状吗?这是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Task_4
{
    class nestedLoop
    {
        static void Main(string [] args)
        {
            int i, j;
            i = j = 0;
            for (i = 1; i <= 5; i++)
            {
                for (j = 1; j <= i; j++)
                {
                    Console.Write('*');
                }
                Console.Write("\n");
            }
            Console.ReadLine();
        }
    }
}

3 个答案:

答案 0 :(得分:1)

有两个for循环,每个循环都有一个变量i或j分配给变量,该变量将增加一个,直到达到上限(i <= 5)或(j <= i)。使用此逻辑,第一个循环i为1,因此j将为1,然后再次执行循环,这次,我为2,因此j将运行两次,依此类推,下面是一个小示例

循环1,i = 1 j = 1 *

循环2,i = 2 j = 2 **

循环3,i = 3 j = 3 ***

循环4,i = 4 j = 4 ****

循环5,i = 5 j = 5 *****

所以一旦我们绘制了星星,我们就结束了。

平方

For(int i = 0; i < 5; i++)
{
   For(int j = 0; j < 5; i++)
      Console.Write("*");
}

高矩形

For(int i = 0; i < 10; i++)
{
   For(int j = 0; j < 5; i++)
      Console.Write("*");
   Console.Write("\n");
}

长矩形

For(int i = 0; i < 5; i++)
{
   For(int j = 0; j < 10; i++)
      Console.Write("*");
   Console.Write("\n");
}

答案 1 :(得分:1)

变量i的外循环循环5次。每个循环使用变量j的嵌套循环将设置与i循环的循环数相同的'*',并在末尾设置一个换行符。 因此,如果它是i的第一个循环,则j循环将在第二个循环“ *”上设置1“ **”,依此类推。 这将导致以下输出:

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

答案 2 :(得分:0)

用行替换我 用列替换j 您应该能够从那里弄清楚

但实际上该程序可以翻译为:

0a)在1上初始化i。

0b)在1上初始化j。

1)在第I行上,如果J小于或等于I,则画一个星星,然后在J上加1。

2)重复1),直到J大于I。

3)如果J大于I,则将I加1,从0b)开始重复,直到I =极限(5)。

旁注:更简洁的代码将是这样

using static System.Console;

namespace ExamPrep
{
    class Program
    {
        static void Main(string[] args)
        {
            const int maxHeight = 5;

            for (int height = 0; height < maxHeight; height++)
            {
                for (int width = 0; width <= height; width++)
                {
                    Write('*');
                }
                Write("\n");
            }
            ReadLine();
        }
    }
}

可能希望将'height'替换为'currentHeight',但其意图要比仅使用字母更清楚。