我正在尝试打印
*
**
***
****
*****
和
*****
****
***
**
*
使用'while'和'do - while'。
但我不知道如何处理这个问题。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int a = 0;
int b = 0;
while (a <= 0)
{
while (b <= a)
{
Console.Write("*");
b++;
}
a++;
Console.WriteLine();
}
Console.ReadLine();
}
}
}
我一直试图像上面那样接近,但我认为它永远不会有效!
P.S我如何改进编程逻辑?我觉得我缺乏逻辑思维。
答案 0 :(得分:1)
我认为这是一个家庭作业问题而且我通常不回答它们,但我认为这可能有助于你理解如何更好地编程,所以让我试试解释......
想一想你想要做什么 - 你想先打印一颗星,然后停在5颗星,然后再打印。
首先,命名您的变量才有意义:
int numStars = 1;
int maxNumStars = 5;
接下来,您可以按照以下方式循环:
while( numStars <= maxNumStars) { ... }
首先,它可以让您更好地理解您的问题,其次,它变得可读和可调试。
您的最终程序可能如下所示:
static void Main(string[] args)
{
int numStars = 1;
int maxNumStars = 5;
// Print the ascending number of stars
while(numStars <= maxNumStars)
{
// Write numStars number of stars to the console using the string constructor:
Console.WriteLine(new string('*', numStars));
numStars++;
}
// Print the descending number of stars
while (numStars >= 1)
{
// Write numStars number of stars to the console using the string constructor:
Console.WriteLine(new string('*', numStars));
numStars--;
}
}
同样,不是为一个人做工作的粉丝,但我希望它能够帮助你在未来找出类似的问题。
修改:
为了完整起见,要在任何地方使用循环,您的代码/循环可能如下所示:
// Declare a variable for writing the stars to the console:
int numWritten;
// Print the ascending number of stars
while(numStars <= maxNumStars)
{
// Reset the number of stars written:
numWritten = 0;
// Write the stars with a loop:
while (++numWritten <= numStars)
Console.Write("*");
// End the line and increment the numStars variable:
Console.WriteLine();
numStars++;
}
答案 1 :(得分:0)
可能朝着这个方向努力:
int a = 0;
int b = 0;
string s = string.Empty;
while (a < 5)
{
while (b <= a)
{
s += "*";
b++;
}
Console.Write(s);
s = string.Empty;
a++;
b = 0;
}
希望它能给你一些想法...
答案 2 :(得分:0)
这是实现这一目标的众多方法之一:
class Program
{
static void Main(string[] args)
{
int a = 0;
int b = 0;
int c = 4;
while (a <= c)
{
b = 0;
while (b <= a)
{
Console.Write("*");
b++;
}
a++;
Console.WriteLine();
}
Console.WriteLine();
if (a > c)
{
a--;
while (a >= 0)
{
b = a;
while (b >= 0)
{
Console.Write("*");
b--;
}
a--;
Console.WriteLine();
}
}
Console.ReadLine();
}
}
}
答案 3 :(得分:0)
使用while循环可能会令人困惑所以我想出了这个递归解决方案(用于科学)
public static void Main()
{
test();
}
public static void test(string lastOutPut = "",int maxBound = 5,bool goingup = true,int cursor = 0,int maxOutputs = 10){
if(cursor>maxOutputs)return;
Console.Write("\n");
if(goingup){
Console.Write(lastOutPut+="*");
cursor++;
test(lastOutPut,maxBound,lastOutPut.Length <= maxBound,cursor,maxOutputs);
}else{
lastOutPut=lastOutPut.Substring(0,lastOutPut.Length-1);
Console.Write(lastOutPut);
cursor++;
test(lastOutPut,maxBound,lastOutPut.Length <= 0,cursor,maxOutputs);
}
}