C语言嵌套循环问题:实现高度1-8的左对齐金字塔
实现左对齐金字塔的修改方案
你的代码目前生成正方形的原因是内层循环每次都打印和高度等量的#,要改成左对齐金字塔,只需调整内层循环的打印数量,同时补上输入逻辑的小漏洞:
修改后的完整代码
#include <cs50.h> #include <stdio.h> int main(void) { int getHeight; do { // 输入金字塔高度 getHeight = get_int("Height: "); } // 限制高度在1-8之间,不符合则重新输入 while(getHeight < 1 || getHeight > 8); for(int row = 0; row < getHeight; row++) { // 每行打印的#数量随行数递增:第1行1个,第2行2个...最后一行等于高度数 for(int columns = 0; columns < row + 1; columns++) { printf("#"); } printf("\n"); } }
关键改动说明
- 输入逻辑补全:原代码只限制了高度不超过8,但没禁止输入0或负数,新增
getHeight < 1后,确保输入范围严格在1-8之间。 - 内层循环调整:把
columns < getHeight改为columns < row + 1。因为row从0开始计数,第1行(row=0)打印1个#,第2行(row=1)打印2个#,以此类推,最终形成左对齐的金字塔结构。
内容的提问来源于stack exchange,提问作者Jordan
相关产品推荐
相关产品推荐

