C# 仅用 for 循环打印对称三角形

洛溪
洛溪
发布时间:2026-10-13| 6人浏览过
原创

在 C# 编程中,如何仅用一个 for 循环打印出完整的对称三角形?本文展示利用 string 构造函数简化输出逻辑的代码实现。

问题与目标

这是一道常见的编程面试题:要求在只允许使用一个 for 循环的前提下,在控制台输出一个对称的空心或实心三角形图案。如果使用嵌套循环可以轻松实现,但单循环模式需要更巧妙的算法逻辑。

准备条件

  • 环境要求:.NET Framework 或 .NET Core/5+ 的任意版本支持。
  • 核心工具:System命名空间下的 Console.WriteLine 方法以及字符串处理功能。

第1步:理解核心技巧 —— 字符串快速复用

C# 提供了 string(char ch, int repeatCount) 的重载构造函数,可以一次性生成指定数量的重复字符。这比在循环内逐个拼接字符要高效且简洁得多。

语法示例:

new string('*', 5) // 结果: *****

这是解决本题的关键,它将原本可能需要内部循环填充字符的操作,压缩为单次赋值。

第2步:构建单循环逻辑

为了在一个循环内控制三角形的形状(先上升后下降),我们需要将行数 i 映射为每行的宽度。假设总行数为 N:

  1. 上半部分(第 1 至 N/2 行):行数 i 直接对应宽度增量。
  2. 下半部分(第 N/2 + 1 至 N 行):宽度开始递减。

通过以下逻辑获取当前行实际需要的“峰值”高度 tmpRow:

tmpRow = (i <= rowNum / 2) ? i : (rowNum - i + 1);

得到 tmpRow 后,星星的数量计算公式为 2 * tmpRow - 1。此公式可确保每行都是奇数个星星,从而保持图形的居中对称性。

第3步:完整代码实现

以下是封装好的完整类与方法。输入参数 rowNum 控制三角形的大小,函数会自动验证输入的有效性。

using System;
using System.Text.RegularExpressions;

namespace TrianglePrinter
{
    class Program
    {
        static void Main(string[] args)
        {
            // 执行打印,参数 19 代表总行数为 19
            Render(19);
            Console.Read();
        }

        /// <summary>
        /// 打印对称三角形
        /// </summary>
        static void Render(int rowNum)
        {
            // 参数校验:必须为正整数
            if (rowNum <= 0 || !Regex.IsMatch(rowNum.ToString(), @"^\d+$"))
            {
                return;
            }

            int tmpRow = 0;
            // 关键:仅使用单层 for 循环
            for (int i = 1; i <= rowNum; i++)
            {
                // 计算当前行的基准高度:前半段递增,后半段递减
                tmpRow = (i <= rowNum / 2) ? i : (rowNum - i + 1);

                // 利用字符串构造函数直接生成该行内容
                // 2 * tmpRow - 1 保证了星星数量为奇数,从而实现对齐
                Console.WriteLine("{0}", new string('*', 2 * tmpRow - 1));
            }
        }
    }
}

代码原理解析

  • 数学映射:Math.Abs(N / 2 + 1 - i) * 2 + 1 是另一种常见的写法,上面的三目运算符写法同样能达到“山峰”效果,使图形上下对称。
  • 效率优化:传统的做法是在每一行使用内部循环打印空格和星星。本方法通过 new string(...) 跳过了逐字符处理的开销,使得单次遍历即可完成整行渲染。

完成判断

运行代码后,控制台应从上到下依次显示行数逐渐增加、随后减少的星号序列,且所有行在视觉上居中对齐,形成完美的等腰三角形轮廓。

简要总结

利用 C# 的字符串构造函数结合简单的线性代数逻辑,可以在不牺牲性能的情况下,极大地简化循环结构。这种“以数据替代迭代”的思路在很多图像处理及格式化输出的场景中都非常实用。以上就是C#用for语句输出一个三角形的方法的详细内容,更多关于C#基础算法的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。