对于循环哈希字符模式

本文关键字:哈希 字符 模式 循环 于循环 | 更新日期: 2023-09-27 18:24:16

嗨,我是编程新手,目前有以下代码:

   namespace Patterns
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 1; i <= 4; i++)//'rows'
            {
                for (int h = 1; h <= 9 - (i*2)+1; h++)
                {
                    Console.Write("#");
                }
                Console.WriteLine("'n" );
            }
        }
    }
}

这会产生以下输出:

########
######
####
##

哈希数是正确的,因为我从8,6,4,2开始,但每次我进入新行时都需要添加一个额外的空格。如何使其输出如下?

########
 ######
  ####
   ## 

谢谢,Umer

对于循环哈希字符模式

从您的代码中,您可以修改它以在内部for循环中执行以下操作:

for (int j = 0; j < i - 1; j++) {
  Console.Write(" ");
}
for (int h = 1; h <= 9 - (i*2)+1; h++) {
  Console.Write("#");
}
Console.WriteLine("'n" );

需要注意的是,您可能应该使用StringBuilder来完成此操作,因为我认为经常调用Console.WriteLine.是非常低效的

代码可以进一步修改:

StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 4; i++) {
  for (int j = 0; j < i - 1; j++) {
    sb.append(" ");
  }
  for (int h = 1; h <= 9 - (i*2)+1; h++) {
    sb.append("#");
  }
  sb.append("'n" );
}
Console.WriteLine(sb.toString());

引入变量,从0开始行,并为每个行号重复字符串。

这也可以应用于打印散列的字符串:

static void Main(string[] args)
{   
    int rows = 4;
    int columns = 9;
    for (int i = 0; i < rows; i++)
    {       
        // Print a string with `i` spaces.
        Console.Write(new String(' ', i));
        int hashes = columns - ((i + 1) * 2) + 1;
        Console.Write(new String('#', hashes));
        Console.WriteLine();
    }
}

基本上,只需在哈希字符前面添加空格即可。

######## Row 1 (i=1), 0 Space
 ######  Row 2 (i=2), 1 Space
  ####   Row 3 (i=3), 2 Spaces
   ##    Row 4 (i=4), 3 Spaces

在这种情况下,每行需要"i-1"个空格。(实际上,它是(8字符计数)/2),字符计数是9-(i*2)+1,所以(8-9+i*2-1)/2=(i*2-2)/2=i-1)所以,只需在打印散列字符之前循环添加空格。

 namespace Patterns
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 1; i <= 4; i++)//'rows'
            {
                for (int j = 0; j < i -1; j++) {
                    Console.Write(" ");
                }
                for (int h = 1; h <= 9 - (i*2)+1; h++)
                {
                    Console.Write("#");
                }
                Console.WriteLine("'n" );
            }
        }
    }
}

您可以这样做:

for (int i = 1; i <= 4; i++)//'rows'
        {
            for (int h = 1; h <= 9 - (i*2)+1; h++)
            {
                Console.Write("#");
            }
            Console.WriteLine("'n" );
            for (int y = i; y > 0; y--)
            {
                Console.Write(" ");    
            }
        }