c#迭代求解

本文关键字:迭代 | 更新日期: 2023-09-27 18:04:08

我需要在控制台中编写代码,使行号显示在其自身的行上,以及其在行的位置。我的程序只输出一行*****,我似乎不能让它做更多。帮助将是惊人的提前感谢堆

eg 1*****
   *2****
   **3***
   ***4**

我现在有

static void Main(string[] args)
{
    int n = 0;
    string s = "";
    //check if 2 args
    if (args.Length == 2)
    {
        if (int.TryParse(args[0], out n))
        {
            //successful parse, so use n
            s = args[1]; //second argument is character
            //draw a line of characters
            DrawChars(n, s);
        }
        else
        {
            //unsuccessful parse, so no n value
        }
    }
    //wait for user to have read output
    Console.WriteLine();
    Console.Write("Press enter to finish:");
    Console.ReadLine();
}
/// <summary>
/// Method to draw a line of characters
/// </summary>
/// <param name="n">number of characters to draw</param>
/// <param name="s">character to draw n times</param>
static void DrawChars(int n, string s)
{
    for (int i = 1; i <= n; i++)
    {
        Console.Write(s);
    }
    Console.WriteLine();
}

c#迭代求解

您当前的代码只打印一行。您需要一个外部循环来打印多行,再加上一个条件检查,以确定是打印行号还是该行相应列中的字符串。

DrawChars(int n, string s)更改为

/// <summary>
/// Method to draw a line of characters
/// </summary>
/// <param name="n">number of characters to draw</param>
/// <param name="s">character to draw n times</param>
static void DrawChars(int n, string s)
{
    for (int row = 1; row <= n; row++)
    {
        for (int col = 1; col <= n; col++)
        {
            Console.Write(col == row ? col.ToString() : s);
        }
        Console.WriteLine();
    }
}

用法:

DrawChars(5, "*");

结果:

1****
*2***
**3**
***4*
****5

如果我能正确理解您的要求,您可以使用嵌套的for循环来打印:

static void Main()
        {
            const int maxLineNumber = 5;
            for (var itr = 1; itr <= maxLineNumber; itr++)
            {
                for (var innerItr = 1; innerItr <= maxLineNumber; innerItr++)
                {
                    if (innerItr == itr)
                    {
                        Console.Write(itr);
                    }
                    else
                    {
                        Console.Write("*");
                    }
                }
                Console.WriteLine();
            }
            Console.ReadLine();
        }

它会打印:

1****
*2***
**3**
***4*
****5