C语言特定直角三角形数字图案生成代码调试求助
解决直角三角形数字图案的输出问题
你的问题出在当数字超过9时,代码直接输出了完整的整数(比如10、11),导致每行出现多位数,不符合预期的单个数字循环显示要求。我们需要让数字在到达9之后回到0,并且每个位置只显示个位数字。
修正思路
核心是对每个要输出的数字取模10,这样任何数字都会被转换成它的个位数字,实现9之后回到0的循环效果。只需要把原来的printf("%d",k+j);改成printf("%d", (k + j) % 10);即可。
修正后的完整代码
#include <stdio.h> int main() { int rows, i, j, k = 0; printf("Enter the height: \n"); scanf("%d", &rows); printf("The pattern is: \n"); for(i = 1; i <= rows; i++) { for(j = 1; j <= i; ++j) printf("%d", (k + j) % 10); // 添加取模10操作,确保只输出个位数字 ++k; printf("\n"); } return 0; }
测试验证
当输入行数为7时,输出结果为:
1
23
345
4567
56789
678901
7890123
完全符合你预期的图案效果。
补充说明
- 取模10操作
(k + j) % 10会将任何整数转换为0-9之间的个位数字,完美实现数字循环的需求。 - 原代码中
k的递增逻辑是正确的,它保证了每行的起始数字依次加1,不需要修改。
内容的提问来源于stack exchange,提问作者Howard Foo
相关产品推荐
相关产品推荐

