控制台应用绘制图案位置修正:三角形需向右偏移
解决三角形向右偏移更多的问题
我看了你的代码,现在的三角形前置空格是基于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
相关产品推荐
相关产品推荐

