我有一个学校项目,我需要完成它,但它不起作用。我必须在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
请帮助任何人!!
答案 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();
我做了一点不同,所以你可以玩它。