伙计们,我在用C#创建某种类型的形状时遇到了麻烦,这种形状看起来像是带有两个三角形图案的
***** **** *** ** * * ** *** **** *****
我设法创建了一个倒置的直角三角形图案,但我似乎无法弄清楚如何在其下方创建一个直角三角形星形图案。
这是我设法制作的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Hello_Word
{
class Program
{
static void Main(string[] args)
{
int val = 5;
int i, j, k;
for (i = 1; i <= val; i++)
{
for (j = 1; j <= val - i; j++)
{
// Console.Write(" ");
}
for (k = 1; k <= j; k++)
{
Console.Write("*");
}
Console.WriteLine("");
}
Console.ReadLine();
}
}
}
答案 0 :(得分:1)
您已经知道如何打印从最宽到最窄的所有行。您只想做同样的事情,但是倒退-从窄处开始,然后宽幅打印:
for (i = val; i >= 1; i--)
如何使用此功能取决于您。我将循环的内部放入函数中,所以main变为:
for (i = 1; i <= val; i++) printLine(i,val);
for (i = val; i >= 1; i--) printLine(i,val);
答案 1 :(得分:1)
这是一个非常简单的作业问题-希望您喜欢此解决方案:
using System;
class Program {
const Int32 maxTriangleSize = 5;
static void Main(string[] args) {
for (Int32 i = maxTriangleSize - 1; i >= 0; i--) {
Console.WriteLine(new String('*', i + 1));
}
for (Int32 i = 0; i < maxTriangleSize; i++) {
Console.WriteLine(new String('*', i + 1));
}
Console.ReadLine();
}
}
答案 2 :(得分:0)
您没有指定任何要求。它在哪里说您不能只使用一堆WriteLine()调用?
Console.WriteLine("*****");
Console.WriteLine("****");
Console.WriteLine("***");
Console.WriteLine("**");
Console.WriteLine("*");
Console.WriteLine("*");
Console.WriteLine("**");
Console.WriteLine("***");
Console.WriteLine("****");
Console.WriteLine("*****");
您必须使用For循环吗?而While循环又如何呢?等等...
考虑到这一点,这是一个递归的解决方案:
static void Main(string[] args)
{
RecursiveTriangle(5);
Console.ReadLine();
}
static void RecursiveTriangle(int width)
{
if (width > 0)
{
string row = new string('*', width);
Console.WriteLine(row);
RecursiveTriangle(--width);
Console.WriteLine(row);
}
}
一个变体:
static void Main(string[] args)
{
RecursiveTriangle(new String('*', 5));
Console.ReadLine();
}
static void RecursiveTriangle(string row)
{
if (row.Length > 0)
{
Console.WriteLine(row);
RecursiveTriangle(row.Substring(0, row.Length - 1));
Console.WriteLine(row);
}
}
如果有限制或要求,请确保下次也要发布。
答案 3 :(得分:0)
随着每行中的恒星数量以恒定数量减少,您可以将它们一起打印。您可以从递增数字开始,然后使用另一个循环递减计数器。 我已经测试了以下代码,它似乎可以正常工作。
static void Main(string[] args)
{
int val = 5;
for (int m = val; m > 0; m--)
{
Console.WriteLine(new string('*', m));
}
for (int n = 1; n <= 5; n++)
{
Console.WriteLine(new string('*', n));
}
Console.ReadLine();
}