You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6(C#)控制台程序:如何按输入字符数绘制三角形?

问题分析

你的代码逻辑是按输入值作为行数生成三角形,每行字符数依次为1、2、3…直到行数等于输入值,总字符数用等差数列求和公式 p*(p+1)/2 计算。比如输入6时,总字符数会是21;你提到输入6出现10个字符,应该是误输入了4(4*5/2=10)。核心问题是代码逻辑和需求完全不符——你需要的是按总字符数生成,而非行数。

解决方案

要实现按总字符数生成三角形,需先计算能完整排列的行数,再处理剩余字符:

  • 找到最大整数k,使得1+2+…+k ≤ 输入的总字符数N
  • 剩余字符数 = N - (k*(k+1)/2)
  • 打印前k行,每行对应1到k个*
  • 如果剩余字符数>0,额外打印一行包含剩余数量的*
代码实现
static void Main()
{
    Console.WriteLine("Enter the number of symbols to build pyramid: ");
    if (!int.TryParse(Console.ReadLine(), out int totalSymbols) || totalSymbols <= 0)
    {
        Console.WriteLine("Please enter a positive integer.");
        return;
    }

    int k = 0;
    int sum = 0;
    // 计算最大的完整行数k
    while (sum + (k + 1) <= totalSymbols)
    {
        k++;
        sum += k;
    }
    int remaining = totalSymbols - sum;

    // 打印完整的k行
    for (int i = 1; i <= k; i++)
    {
        Console.WriteLine(new string('*', i));
    }

    // 打印剩余字符的行
    if (remaining > 0)
    {
        Console.WriteLine(new string('*', remaining));
    }
}
示例验证
  • 输入6时,k=3(1+2+3=6),剩余0,输出3行总字符数6:

**


  • 输入7时,k=3(1+2+3=6),剩余1,输出4行总字符数7:

**


内容的提问来源于stack exchange,提问作者Jacket_Montana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 21:48:20