我在这里遇到一些问题,我想绘制一个像这样的垂直金字塔:
O
OO
OOO
OOOO
OOOOO
OOOO
OOO
OO
O
但我似乎无法弄明白该怎么做。我得到的只是:
O
OO
OOO
OOOO
OOOOO
OOOOOO
OOOOOOO
OOOOOOOO
OOOOOOOOO
这是我的代码:
int width = 5;
for (int y = 1; y < width * 2; y++)
{
for (int x = 0; x < y; x++)
{
Console.Write("O");
}
Console.WriteLine();
}
答案 0 :(得分:3)
有两种循环方法可以做到这一点,但这里有一种方法可以使用一个循环,而没有if
条件:
for (int y = 1; y < width * 2; y++)
{
int numOs = width - Math.Abs(width - y);
for (int x = 0; x < numOs; x++)
{
Console.Write("O");
}
Console.WriteLine();
}
答案 1 :(得分:1)
使用此代码可能很有用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication59
{
class Program
{
static void Main(string[] args)
{
int numberoflayer = 6, Space, Number;
Console.WriteLine("Print paramid");
for (int i = 1; i <= numberoflayer; i++) // Total number of layer for pramid
{
for (Space = 1; Space <= (numberoflayer - i); Space++) // Loop For Space
Console.Write(" ");
for (Number = 1; Number <= i; Number++) //increase the value
Console.Write(Number);
for (Number = (i - 1); Number >= 1; Number--) //decrease the value
Console.Write(Number);
Console.WriteLine();
}
}
}
}
答案 2 :(得分:1)
这是一个极简主义的方法,只有一个循环和一个三元表达式(?
)而不是if
:
int width = 5;
for (int y = 1; y < width * 2; y++)
Console.WriteLine(String.Empty.PadLeft(y < width ? y : width * 2 - y, 'O'));
或没有支票的版本:
for (int y = 1; y < width * 2; y++)
Console.WriteLine(String.Empty.PadLeft(Math.Abs(width * (y / width) - (y % width)), 'O'));