我对编程比较陌生,而我现在正试图掌握C#。我已经达到了一个我正在学习' for'循环。我坚持的问题是只使用'来创建下面的形状。循环和角色' *'只有一次。
*
***
*****
*******
*********
我写的代码如下:
for (int row = 0; row < 5; row++)
{
for (int column = 0; column + row < 4; column++)
{
Console.Write(" ");
}
for (int column = 0; column + row >= 4; column++)
{
if (column - row >= 5)
break;
Console.Write("*");
}
Console.WriteLine();
}
从我所看到的,第二个嵌套&#39; for&#39;正在跳过循环,直到第一个循环完成。
用&#34; O&#34;替换空格,显示以下内容:
OOOO
OOO
OO
O
*********
**********
***********
************
*************
**************
谁能看到我出错的地方?
答案 0 :(得分:1)
问题在于第二个嵌套循环column + row >= 4
的循环条件。由于列从零开始,因此第一次执行与row >= 4
基本相同,因此对于任何行&lt; 5它不会打印,这正是第一个循环的条件。这意味着所有空间都被打印出来,然后是一堆星星。
您也不需要if语句,因为这基本上是第二个循环条件。像for (int column = 0; column <= row * 2; column++)
这样的东西最有意义。
你也应该重新评估外循环,因为你只需要5行,你将按原样经过10行。
for (int row = 0; row < 5; row++)
{
for (int column = 0; column + row < 4; column++)
{
Console.Write(" ");
}
for (int column = 0; column <= row * 2; column++)
{
Console.Write("*");
}
Console.WriteLine();
}
答案 1 :(得分:0)
for (int row = 0; row < 10; row++)
{
// This code will only get run for the first 3 rows
for (int column = 0; column + row < 4; column++)
{
Console.Write(" ");
}
// This code will only get run for rows 4 and greater
for (int column = 0; column + row >= 4; column++)
{
if (column - row >= 5)
break;
Console.Write("*");
}
Console.WriteLine();
}
您需要做的是确保您输入正确数量的空格,然后输入每行的正确数量*。
提示:您可能只需要5行而不是10行
答案 2 :(得分:0)
这有效:
for (int row = 0; row < 5; row++)
{
for (int column = 0; column < 5 + row + 1; column++)
Console.Write(column < 5 - row ? " " : "*");
Console.WriteLine();
}
* *** ***** ******* *********
答案 3 :(得分:0)
制定了解决方案:
for (int row = 0; row < 5; row++)
{
for (int column = 0; column + row < 4; column++)
{
Console.Write(" ");
}
for (int column = 0; column + row >= 0; column++)
{
if (column == (row * 2) + 1)
break;
Console.Write("*");
}
Console.WriteLine();
}
x ...的解决方案可能更合适,更清晰,不需要if语句和任何休息,但是你们都帮助我在没有太多牵手的情况下得到答案,我很欣赏
谢谢:D
答案 4 :(得分:-1)
一个简单的逻辑可以是这样的。
for(i=0 to 4) //since five rows
for(j=0 to 2*i-1) // is in multiple of 1, 3, 5
print(*)