簡體   English   中英

我如何使用while語句繪制一個星號三角形?

[英]how can I draw a triangle of asterisks using the while statement?

這是(不起作用的代碼),它應該在下面打印形狀,但不能打印:

static void Main(string[] args)
{
    int i = 1;
    int k = 5;
    int h = 1;

    while (i <= 5)
    {
        Console.WriteLine("");
        while (k > i)
        {
            Console.Write(" ");
            k--;
        }
        while (h <= i)
        {
            Console.Write("**");
            h++;
        }
        i++;
    }
    Console.ReadLine();

}

截圖

但是,當我嘗試使用while語句執行相同操作時,形狀完全混亂了。

有什么幫助嗎?

您必須在循環中聲明kh

static void Main(string[] args)
{
    int i = 1;
    while (i <= 5)
    {
        int k = 5;
        int h = 1;

        Console.WriteLine("");
        while (k > i)
        {
            Console.Write(" ");
            k--;
        }
        while (h <= i)
        {
            Console.Write("**");
            h++;
        }
        i++;
    }
    Console.ReadLine();
}

使用當前的解決方案,在第一次外循環迭代之后,內循環什么都不做。

int NumberOfLines = 5;
int count = 1;
while (NumberOfLines-- != 0)
{
    int c = count;
    while (c-- != 0)
    {
        Console.Write("*");
    }
    Console.WriteLine();
    count = count + 2;
}

就是這樣,最簡單的實現。

我不會為您解決,僅會給您提示:使用3個循環語句

1. for line change
2. for spaces (reverse loop)
3. for printing * (odd series in this case) i.e. 2n-1

在語句h <= 2 * i-1中檢入第三 並僅打印一個*代替**

在這里檢查: http : //ideone.com/xOB2OI

問題在於, ikh在進入最外層循環之前已初始化。 在外循環內, kh被內循環改變。 在第二次執行外循環時, kh具有與先前運行內循環后剩下的值相同的值。 i在外部循環中遞增時,將不會輸入k循環,而h循環將僅運行一次。

考慮一下第二次執行時, hk在最外層循環中應包含哪些值。

實際上,我是通過“ for”循環完成此操作的,z是高度,x等於邊的長度。

等腰三角形(x> z):

 public void Print(int x, int z)
        {
            var peakStart = x;
            var peakEnd = x;

            for (int i = 0; i < z; i++)
            {
                for (int j = 0; j < 2 * x + 1; j++)
                {
                    if (peakStart < 1.5 * x && j >= peakStart && j <= peakEnd)
                        Console.Write("*");
                    else
                        Console.Write(" ");
                }
                peakStart--;
                peakEnd++;
                Console.WriteLine("");
            }
        }

暫無
暫無

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

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