簡體   English   中英

如何在控制台中繪制 (c#)

[英]how to draw in the console (c#)

最近在 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();
        }
    }
}

有兩個 for 循環,每個循環都有一個變量 i 或 j 分配給它,它們將增加 1,直到達到上限,(i <= 5) 或 (j <= i)。 使用這個邏輯,第一個循環 i 是 1 所以 j 就是 1,然后我們再次循環,這次 i 是 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");
}

變量 i 的外循環循環 5 次。 每個循環,帶有變量 j 的嵌套循環將設置與 i 循環的循環數量和最后一個換行符一樣多的 ' * '。 因此,如果它是 i 的第一個循環,則 j 循環將在第二個循環 ' ** ' 上設置 1 ' * ',依此類推。 這將導致以下輸出:

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

用行替換 i 用列替換 j 你應該能夠從那里弄清楚

但基本上該程序可以翻譯為:

0a) 在 1 上初始化 i。

0b) 將 j 初始化為 1。

1) 在第 I 行,如果 J 小於或等於 I,則畫一顆星,然后在 J 上加 1。

2)重復1)直到J大於I。

3) 如果 J 大於 I,則在 I 上加 1,從 0b) 開始重復,直到 I = limit (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();
        }
    }
}

可能想用 'currentHeight' 替換 'height',但其意圖比僅使用字母更清晰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM