求助:编写C语言嵌套循环实现2的幂三角形图案
实现2的幂三角形的C语言程序
你的原代码存在三个核心问题:
- 外层循环步长
i+=2会跳过一半的行,无法生成完整的三角形 - 内部逻辑计算的是组合数(对应杨辉三角),而非你需要的2的幂值
- 前置空格的计算逻辑有误,导致居中效果不符合预期
以下是修正后的代码,完全实现2的幂三角形的需求:
#include <stdio.h> int main() { int no_row = 5; // 取消下方注释可支持用户自定义行数 // printf("Input number of rows: "); // scanf("%d", &no_row); // 遍历每一行 for (int i = 0; i < no_row; i++) { // 打印前置空格,实现三角形居中对齐 for (int blk = 0; blk < no_row - i - 1; blk++) { printf(" "); } // 打印当前行的2的幂序列 int current_val = 1; // 初始为2^0 for (int j = 0; j <= i; j++) { printf("%4d", current_val); current_val *= 2; // 递推得到下一个2的幂 } printf("\n"); } return 0; }
代码说明
- 完整行遍历:外层循环
i从0到no_row-1,确保每一行都被输出 - 居中对齐:通过
no_row - i - 1个双空格控制每行的缩进,让三角形整体居中 - 2的幂生成:每行从
2^0开始,每次乘以2得到后续的2^1、2^2...2^i,逻辑直接且高效 - 格式对齐:用
%4d格式化输出,保证每个数字占4个字符宽度,让三角形的每列对齐整齐
内容的提问来源于stack exchange,提问作者Sandeepa_Dilshan_Alagiyawanna
相关产品推荐
相关产品推荐

