C语言实现基于数字总数的弗洛伊德三角形(非行数驱动)求助
实现以数字总数为输入的类弗洛伊德三角形
问题说明
需要实现类弗洛伊德三角形效果,输入值为要显示的数字总数(而非行数):
- 输入总数9时,输出到数字9为止的三角形:
Enter a number: 9 1 23 456 789
现有代码是按输入行数生成三角形(输入9为行数时会输出9行,显示到数字45),不符合需求。
现有代码
#include <stdio.h> int main() { int rows, i, j, number = 1; printf("Enter a number: "); scanf("%d", &rows); for (i = 1; i <= rows; i++) { for (j = 1; j <= i; ++j) { printf("%d ", number); ++number; } printf("\n"); } return 0; }
修改后的代码
#include <stdio.h> int main() { int total_num, i = 1, j, number = 1; printf("Enter a number: "); scanf("%d", &total_num); while (number <= total_num) { // 每行输出i个数字,同时确保不超过总数 for (j = 1; j <= i && number <= total_num; ++j) { printf("%d", number); ++number; } printf("\n"); i++; } return 0; }
关键改动说明
- 变量语义优化:将原变量
rows改为total_num,明确表示输入的是数字总数 - 循环逻辑重构:外层用
while循环控制数字不超出输入总数,替代原有的固定行数循环 - 边界控制:内层循环增加
number <= total_num的判断,避免最后一行输出多余数字 - 格式调整:移除原输出中的空格,让每行数字连续显示,匹配需求示例的格式
内容的提问来源于stack exchange,提问作者LittleBeginner
相关产品推荐
相关产品推荐

