嵌套for循环c#

时间:2016-09-05 23:10:32

标签: c#

我有一个学校项目,我需要完成它,但它不起作用。我必须在c#中执行嵌套for循环,我已经设法完成了早期的项目,结果如下:
1 2 3 6

1 2 3 6

1 2 3 6

1 2 3 6

 static void Main(string[] args)
    {
       for (int row = 0; row < 4; row++)
        {
            int x = 1;
            int y = 0;
            for (int column = 0; column < 3; column++)
            {             
                Console.Write(x);
                y = y + x;
                x = x + 1;   
            }   
            Console.Write(y);
            Console.WriteLine(); 
        }
        Console.ReadLine();
    }

但现在我坚持第二个必须提供输出的项目:

1 2 3 6
2 3 4 9
3 4 5 12
5 6 7 18

请帮助任何人!!

2 个答案:

答案 0 :(得分:0)

for (var x = 1; x < 5; x++)
{
   if (x == 4) x = 5;
   Console.Write("{0} ",x);
   for (var y = 1; y < 4; y++)
       Console.Write("{0} ", y < 3 ? x + y : 3 * (x + 1));
   Console.WriteLine();      
}

说明:

所需的输出是:

1 2 3 6
2 3 4 9
3 4 5 12
5 6 7 18 

所以这里有四行四列 每行中的第一列是1,2,3,5,因此x中的外循环从1变为4,第一个语句将最后一个值4更改为5。 第二&amp;第3列始终只是第一列增加1,然后再增加1,最后,最后第4列是3倍1 +第一列。所以y中的内循环只是1,2,3,而对于第2和第3列,打印第一列加上第二列和第三列的y值(1,2)和三次1加上最后一列的第一列(第4栏)栏目。

所以每一行都是有效的 x,x + 1,x + 2,3 *(x + 1)

除了我们跳过第4行

之外,每一行都以x大于它之前的行开头

表达式y < 3 ? x + y : 3 * (x + 1)是一个三元组,它有三个部分,一个布尔条件,后跟一个问号(?),当布尔值为true时生成的值,后面跟冒号(:)然后布尔值为false时生成的值。所以它读起来像这样:

如果y小于3,则输出x + y,否则输出3次(x + 1)

另一个更简单的选项(仅使用一个循环)可能是:

for (var x = 2; x < 7; x++)
{
   if (x == 5) continue; // skip row 4
   Console.WriteLine("{0} {1} {2} {3} ",x-1, x, x+1, 3*x);            
}

答案 1 :(得分:-1)

嗯,这是您的解决方案。但是请尝试理解它,下次你不要求我们解决你的作业。

int p;
for (int x = 1; x < 6; x++)
{
  if (x !== 4)
  {
    for (int y = x; y < x + 3; y++)
    {
      p += y;
      Console.Write(y);
    }     
    Console.Write(p);
    Console.WriteLine(); 
    p = 0;
  }
}

Console.ReadLine();

我做了一点不同,所以你可以玩它。