这是(不工作的代码),它应该打印下面的形状,但不是:
static void Main(string[] args)
{
int i = 1;
int k = 5;
int h = 1;
while (i <= 5)
{
Console.WriteLine("");
while (k > i)
{
Console.Write(" ");
k--;
}
while (h <= i)
{
Console.Write("**");
h++;
}
i++;
}
Console.ReadLine();
}
但是当我尝试使用while语句执行相同操作时,形状会完全混乱。
任何帮助?
答案 0 :(得分:2)
您必须在循环中声明k
和h
:
static void Main(string[] args)
{
int i = 1;
while (i <= 5)
{
int k = 5;
int h = 1;
Console.WriteLine("");
while (k > i)
{
Console.Write(" ");
k--;
}
while (h <= i)
{
Console.Write("**");
h++;
}
i++;
}
Console.ReadLine();
}
使用当前的解决方案,在第一次外循环迭代之后,内部循环不执行任何操作。
答案 1 :(得分:2)
int NumberOfLines = 5;
int count = 1;
while (NumberOfLines-- != 0)
{
int c = count;
while (c-- != 0)
{
Console.Write("*");
}
Console.WriteLine();
count = count + 2;
}
这是最简单的实施。
答案 2 :(得分:0)
我不会为你解决只会给你一个提示: 使用3个循环语句
1. for line change
2. for spaces (reverse loop)
3. for printing * (odd series in this case) i.e. 2n-1
检查第三个声明 h&lt; = 2 * i - 1;
并且只打印一个*
代替**
答案 3 :(得分:0)
问题是在输入最外层循环之前初始化i
,k
和h
。在外循环内k
和h
由内循环改变。在外循环k
和h
的第二次执行时,具有与之前运行内循环后剩余的值相同的值。当外部循环中i
递增时,将不会输入k
循环,h
循环只会运行一次。
考虑第二次执行时最外层循环中h
和k
应具有的值。
答案 4 :(得分:0)
实际上我是通过'for'循环完成的,z是高度,x等于边长。
等腰三角形(x> z):
public void Print(int x, int z)
{
var peakStart = x;
var peakEnd = x;
for (int i = 0; i < z; i++)
{
for (int j = 0; j < 2 * x + 1; j++)
{
if (peakStart < 1.5 * x && j >= peakStart && j <= peakEnd)
Console.Write("*");
else
Console.Write(" ");
}
peakStart--;
peakEnd++;
Console.WriteLine("");
}
}