如何实现可重复输出的三角形图案?C语言新手编程求助
解决三角形图案重复生成的问题
你的需求是输入两个整数(比如2 3),第一个控制三角形的重复次数,第二个控制单个三角形的大小,输出对应次数的右对齐三角形。
现有代码的问题
- 只读取了一个输入值,没处理重复次数这个参数
- 没有循环逻辑来重复生成三角形
- 变量
m在生成完一个三角形后没有重置,导致后续三角形的星号数量会持续累加,不符合预期
修改后的代码
#include <stdio.h> int main() { int repeat, size; // 读取两个输入:第一个是重复次数,第二个是三角形的大小 scanf("%d %d", &repeat, &size); // 外层循环控制三角形的重复次数 for(int r = 0; r < repeat; r++) { int m = 1; // 每次生成新三角形时,重置星号计数变量 // 内层循环生成单个三角形 for(int i = size; i >= 1; i--) { // 打印前置空格 for(int j = 1; j <= i - 1; j++) { printf(" "); } // 打印星号 for(int k = 1; k <= m; k++) { printf("*"); } printf("\n"); m++; } } return 0; }
代码改动说明
- 新增
repeat变量存储重复次数,size存储三角形的大小,通过scanf("%d %d", &repeat, &size)读取两个输入参数 - 外层添加
for循环,循环repeat次来生成多个三角形 - 将
m的定义移到外层循环内部,每次生成新三角形时重置为1,保证每个三角形的星号从1开始递增 - 修复了原代码中
printf("\n")的语法错误(原代码里是printf(" "),属于格式问题)
测试效果
输入:
2 3
输出:
* ** *** * ** ***
内容的提问来源于stack exchange,提问作者JonyFishMan
相关产品推荐
相关产品推荐

