打印三角形
C#
以下是打印三角形的算法分析过程和代码
- 例一 直角三角形
*
**
***
****
*****
行数 i *数量
1 1
2 2
3 3
4 4
5 5
...
i i
f(i) = i (i >= 1)
for (int i = 1; i <= 5; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write("*"); // 注意这里需要用 Write(),不能用 WriteLine(),WriteLine() 会单独占一行。
}
Console.Write("\n");
}
- 例二 等腰三角形
*
***
*****
*******
*********
i 行数 ; j 打印空的个数 ; k 打印 * 的个数
i j k
1 4 1
2 3 3
3 2 5
4 1 7
5 0 9
j 与 i 的函数关系 f(i) = 5 - j (i >= 1)
k 与 i 的函数关系 f(i) = 1 + (i - 1) * 2 k 列是一个方差为2的等差数量,求 f(i) 即求等差数列An
for (int i = 1; i <= 5; i++)
{
for (int j = 1; j <= 5 - i; j++)
{
Console.Write(" ");
}
for (int k = 1; k <= 1 + (i - 1) * 2; k++)
{
Console.Write("*");
}
Console.Write("\n");
}
- 例三 空心的等腰三角形
*
* *
* *
* *
* *
i 行数 ; j 打印空的个数 ; k 打印 * 的个数 ; n 打印 空的个数 ; m 打印 * 的个数
i j k n m
1 4 1 0 0
2 3 1 0 1
3 2 1 3 1
4 1 1 5 1
5 0 1 7 1
j 与 i 的函数关系 f(i) = 5 - j (i >= 1)
k 与 i 的函数关系 f(i) = 1
n 与 i 的函数关系 f(i) = 0 (0 < i < 3)
= 3 + (i - 3) * 2 ( i >= 3)
m 与 i 的函数关系 f(i) = 0 (i = 1)
= 1 (i > 1)
for (int i = 1; i <= 5; i++)
{
for (int j = 1; j <= 5 - i; j++)
{
Console.Write(" ");
}
Console.Write("*");
for (int k = 1; k <= 3 + (i - 3) * 2; k++)
{
Console.Write(" ");
}
if (i != 1)
{
Console.Write("*");
}
Console.Write("\n");
}
输出效果如下:
打印图形这类似的题目的思想就是这样,考虑清楚各个符号的数量和行数 i 之间的函数关系,循环打印即可得到。