假设有个打印函数,可以输出”-“,”*“,换行。比如
输入1 打印
*
输入2 打印
- * -
* - *
- * -
输入3 打印
- - * - -
- * - * -
* - * - *
- * - * -
- - * - -
…
现请写出函数
xxxxxxxxxxxxxxxxxxx
实现思路
定义数组 以类地图形式展示
将图形分为上下两部分,分别找出”-"和“* ”的关系
xxxxxxxxxxxxxxxxxxx
正三角:
初始点※位置 与行的关系是n-i-1,※和※的关系是k+2
每一行※的属性的数量与行的关系是num=i
xxxxxxxxxxxxxxxxxxx
倒三角
初始点※位置 与行的关系是 n-(len-i),※和※的关系是k+2
每一行※的属性的数量与行的关系是num=len-i
xxxxxxxxxxxxxxxxxxx
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static string[,] map;
static void Main(string[] args)
{
Map(3);
Prite(5);
}
static void Map(int n)
{
int len = 2 * n-1 ;
map= new string[len, len];
int i = 0;
for (i=0; i < len; i++)
{
for (int j = 0; j < len; j++)
{
map[i, j] = "-";
}
///正三角
int num = 0;
for (int k = n-i-1; num <= i&&i < n&&k <len; k+=2)
{
map[i, k] = "*";
num++;
}
//倒三角
int count = 0;
for (int k = n-(len-i); count<=len-i-1&&i>=n&&k < len; k+=2)
{
map[i, k] = "*";
count++;
}
}
}
static void Prite(int len)
{
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len; j++)
{
Console.Write(map[i, j]);
}
Console.WriteLine();
}
}
}
}
成果展示
此方法为突然灵感,如有其他方法,可在评论区回复!!!!!