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

控制台应用绘制图案位置修正:三角形需向右偏移

解决三角形向右偏移更多的问题

我看了你的代码,现在的三角形前置空格是基于n - i计算的,要让它整体向右移动更多,只需要增加每一行的前置空格数量就行啦。这里给你两种简单好用的调整方式:

方式1:固定偏移量调整

直接给每一行的前置空格加一个固定值(比如offset = 5),你可以根据需求调整这个值来控制右移的距离:

if (keuze == 1) {
    int n = 4;
    int offset = 5; // 调整这个数值就能改变右移幅度
    int i, j, k = 0;
    for (i = 1; i <= n; i++) {
        // 原来的空格数是n-i,现在额外加上offset个空格
        for (j = i; j < n + offset; j++) { 
            Console.Write(" ");
        }
        while (k != (2 * i - 1)) {
            if (k == 0 || k == 2 * i - 2)
                Console.Write("*");
            else
                Console.Write(" ");
            k++;
        }
        k = 0;
        Console.WriteLine();
    }
    // 底部的横线也要同步右移,添加offset个前置空格
    Console.Write(new string(' ', offset));
    for (i = 0; i < 2 * n - 1; i++) {
        Console.Write("*");
    }
    Console.WriteLine();
}

方式2:按比例调整偏移量

如果你想让偏移幅度和三角形的大小成比例(比如是n的倍数),可以这么写:

if (keuze == 1) {
    int n = 4;
    int offset = n * 2; // 偏移量是n的2倍,可根据需求修改比例
    int i, j, k = 0;
    for (i = 1; i <= n; i++) {
        // 前置空格 = 原有的(n-i) + 比例偏移量
        for (int s = 0; s < (n - i) + offset; s++) { 
            Console.Write(" ");
        }
        while (k != (2 * i - 1)) {
            if (k == 0 || k == 2 * i - 2)
                Console.Write("*");
            else
                Console.Write(" ");
            k++;
        }
        k = 0;
        Console.WriteLine();
    }
    // 底部横线同步添加比例偏移的空格
    Console.Write(new string(' ', offset));
    for (i = 0; i < 2 * n - 1; i++) {
        Console.Write("*");
    }
    Console.WriteLine();
}

小提示

原来的代码中第一行只有n-1=3个前置空格,加上偏移量后,第一行会有3+offset个空格,整个三角形就会向右偏移对应的距离。记得底部的横线也要加同样的前置空格,不然会和三角形脱节哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:22:20