c#三角形,数字嵌套

时间:2016-04-15 00:56:13

标签: c# nested

需要一些家庭作业帮助

开发一个C#控制台应用程序,它分别显示两(2)个以下模式,一个在另一个之下。使用for循环(提示:嵌套)来生成模式。所有星号都应该由Console.Write(“*”)形式的单个语句显示;它显示星号,直到示例中显示的数字值。 Console.WriteLine()形式的声明;可以用来移动到下一行。依次记下每个数字的顺序。请记住,这是两组独立的循环,用于生成这两种模式。您将需要推断出数字的计算方式(它们是计算的结果)以及计算将放在循环结构中的位置。您可能无法将显示的数字硬编码到循环中。

尝试获得以下模式,但我的代码得到了正确的数字和间距,但没有最后的数字与数字的怀疑数量。我需要结合我的写陈述吗?我应该有一个使用计数器整数的公式)任何帮助表示赞赏。

*2
**4
***6
****8
*****10
******12
*******14
********16
*********18
**********20

**********20 
*********18
********16
*******14
******12
*****10
****8
***6
**4
*2

using System;
{
    public class Program
    {
        const string STAR = "*";
        const string SPACE = " ";
        const int COUNTER = 10;

        static void Main(string[] args)
        {
            firsthalf();

            Console.ReadLine();
        }
        static public void firsthalf()
        {
            for (int r = 0; r < COUNTER; r++)
            {
                for (int c = 0; c <= r; c++)
                {
                    Console.Write(STAR);
                    Console.Write("{0}", (r + 1) * 2);
                }
                Console.WriteLine();
            }
        }
    }
}

4 个答案:

答案 0 :(得分:0)

将数字Console.Write("{0}", (r + 1) * 2);的print语句放在第二个循环之外

for (int r = 0; r < COUNTER; r++)
{
     for (int c = 0; c <= r; c++)
          Console.Write(STAR);    

     Console.WriteLine("{0}", (r + 1) * 2);
}

答案 1 :(得分:0)

class Program
{
    static void Main(string[] args)
    {
        f(1, 5, ascending: true);
        f(1, 10, ascending: false);
        Console.ReadLine();
    }

    private static void f(int start, int count, bool ascending)
    {
        var indices = Enumerable.Range(start, count);
        if (!ascending) indices = indices.Reverse();
        foreach (int index in indices)
        {
            for (int i = 1; i <= index; i++)
            {
                Console.Write("*");
            }
            Console.WriteLine(2 * index);
        }
    }
}

答案 2 :(得分:0)

using System;

namespace SOFAcrobatics
{
    public static class Launcher
    {
        public static void Main ()
        {
            Int32 n = 0;
            Boolean locker = false;
            for (Int32 i = 2 ; i <= 38 ; i+= 2)
            {
                n = ((i > 20) ? (40 - i) : i);
                if (n == 20 && !locker)
                {
                    locker = true;
                    i -= 2;
                }
                for (Int32 j = 1; j <= (n / 2); j++)
                {
                    Console.Write('*');
                }
                Console.WriteLine(n);
            }
            Console.ReadKey(true);
        }
    }
}

output

答案 3 :(得分:0)

得到几个答案的组合,我真的很感激帮助。

using System;


public class Program
{
const string STAR = "*";
const string SPACE = " ";
const int COUNTER = 10;

public static void Main(string[] args)
{
  firsthalf();
  sechalf();

  Console.ReadLine();
 }

 static public void firsthalf()
 {
  for (int r = 0; r < COUNTER; r++)
  {
     for (int c = 0; c <= r; c++)
        Console.Write(STAR);

     Console.WriteLine("{0}", (r + 1) * 2);
  }
  Console.WriteLine();
}


static public void sechalf()
{
  for (int r = COUNTER; r > 0; r--)
  {
     for (int c = 0; c < r; c++)
        Console.Write(STAR);

     Console.WriteLine("{0}", (r + 0) * 2);
     //Console.WriteLine();
  }
  Console.WriteLine();
}
}