[英]how can I draw a triangle of asterisks using the while statement?
這是(不起作用的代碼),它應該在下面打印形狀,但不能打印:
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語句執行相同操作時,形狀完全混亂了。
有什么幫助嗎?
您必須在循環中聲明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();
}
使用當前的解決方案,在第一次外循環迭代之后,內循環什么都不做。
int NumberOfLines = 5;
int count = 1;
while (NumberOfLines-- != 0)
{
int c = count;
while (c-- != 0)
{
Console.Write("*");
}
Console.WriteLine();
count = count + 2;
}
就是這樣,最簡單的實現。
我不會為您解決,僅會給您提示:使用3個循環語句
1. for line change
2. for spaces (reverse loop)
3. for printing * (odd series in this case) i.e. 2n-1
在語句h <= 2 * i-1中檢入第三; 並僅打印一個*
代替**
在這里檢查: http : //ideone.com/xOB2OI
問題在於, i
, k
和h
在進入最外層循環之前已初始化。 在外循環內, k
和h
被內循環改變。 在第二次執行外循環時, k
和h
具有與先前運行內循環后剩下的值相同的值。 當i
在外部循環中遞增時,將不會輸入k
循環,而h
循環將僅運行一次。
考慮一下第二次執行時, h
和k
在最外層循環中應包含哪些值。
實際上,我是通過“ 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("");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.