使用c# for循环创建"V"

本文关键字:quot 创建 for 循环 使用 | 更新日期: 2023-09-27 18:17:48

作为作业,我被要求编写一个c#控制台程序,让用户定义一个字符和大小,程序将输出一个n*n/2大小的"V",其中n是"V"的宽度。我能得到的最好的结果是三角形或者一条对角线向左,一条对角线向右。如有任何建议,不胜感激。

public static void Main (string[] args)
    {
        int maxWidth = 40;
        Console.WriteLine ("Please enter your desired character");
        string userChar = Console.ReadLine ();
        Console.WriteLine ("Please enter your desired width");
        int userWidth = Convert.ToInt32 (Console.ReadLine ());
        for (int i = 0; i < userWidth; i++) {///opposite diagonal lines
            for (int j = 0; j < i; j++) {
                Console.Write (" ");
            }
            Console.Write (userChar);
            Console.WriteLine ();
        }
        for (int i = userWidth - 1; i >= 0; i--) {
            for (int j = 0; j <= i; j++) {
                Console.Write (" ");
            }
            Console.Write (userChar);
            Console.WriteLine ();
        }

使用c# for循环创建"V"

你试图分别计算两边的逻辑是错误的。

作为提示,每一行有2个点,顶部相距较远,底部相距较近。每一行,它们都相互靠近。所以你要做的就是找出它们在最上面的位置(比如,1和10),然后每一行,在第一行上加1,在最后一行上减1,这样它们就更靠近中间了。在底部,他们会相遇。

作为另一个提示,可以使用一个循环来完成此任务。

试试这个:

int lines = userWidth / 2;
for (var i = 1; i < lines; i++)
    Console.WriteLine(userChar.PadLeft(i) + userChar.PadLeft(2 * (lines - i)));
Console.WriteLine(userChar.PadLeft(lines));

我得到这个:

X                   X
 X                 X
  X               X
   X             X
    X           X
     X         X
      X       X
       X     X
        X   X
         X X
          X

感谢您的所有输入,这是我最终提出的代码。

public static void Main (string[] args)
    {
        int maxWidth = 40;
        Console.WriteLine ("Please enter your desired character");
        string userChar = Console.ReadLine ();
        Console.WriteLine ("Please enter your desired width");
        int userWidth = Convert.ToInt32 (Console.ReadLine ());
        for (int i = 0; i < userWidth; i++) {
            for (int j = 0; j < i; j++) {
                Console.Write (" ");
            }
            Console.Write (userChar);
            for (int j = userWidth-1; j > i; j--) {
                Console.Write (" ");
            }
            for (int j = userWidth-1; j > 0+i ; j--) {
                Console.Write (" ");
            }
            Console.Write (userChar);
            Console.WriteLine ();
            }
        }
相关文章: