如何用C语言实现递增数字三角+递减星号三角的组合图案?
解决C语言星号递减的图案输出问题
需求说明
需要实现由递增数字序列与递减星号序列组合的正方形图案,预期输出如下:
1******** 12******* 123****** 1234***** 12345**** 123456*** 1234567** 12345678* 123456789
现有代码问题
你当前的代码中,星号的循环是固定输出8个,没有根据行数动态调整数量,导致每行星号数一致:
#include <stdio.h> int main() { int i, j; for(i=1; i<=9; i++) { for (j=1; j<=i; j++) { printf ("%d",j); } int k; for(k=8; k>0; k--) { printf("*"); } printf("\n"); } }
当前错误输出:
1******** 12******** 123******** 1234******** 12345******** 123456******** 1234567******** 12345678******** 123456789********
修复方案
问题出在星号的循环条件上:每一行的总字符数是9(数字+星号),数字的个数等于当前行数i,因此星号的数量应为9 - i。修改星号循环的起始值和条件即可:
修改后的代码:
#include <stdio.h> int main() { int i, j; for(i=1; i<=9; i++) { // 打印递增数字 for (j=1; j<=i; j++) { printf("%d", j); } // 打印递减星号:数量为9 - i int k; for(k=9 - i; k>0; k--) { printf("*"); } printf("\n"); } }
验证输出
修改后运行代码,就能得到预期的图案:
1******** 12******* 123****** 1234***** 12345**** 123456*** 1234567** 12345678* 123456789
内容的提问来源于stack exchange,提问作者axesmith99
相关产品推荐
相关产品推荐

