C++打印数字三角图案时添加数字间空格导致样式错乱问题咨询
C++数字三角图案空格分隔异常解决方案
问题根因
你在每个数字后追加空格后,单个数字的实际输出占位从1个字符变为2个字符(数字本身+1个分隔空格),但你原先的前导填充逻辑还是按照每个数字占1个字符计算缩进量,所以会出现缩进不足、图案错位的问题。
修复方案
只需要调整前导空格的打印次数,将原先的n-i次修改为2*(n-i)次即可,保证前导缩进和后续数字的占位宽度匹配。
修改后的完整代码
#include<iostream> using namespace std; int main(){ int i,j=1,space,star,n; cin>>n; i=1; while(i<=n){ space = 2*(n-i); // 仅修改这一行,前导空格数翻倍匹配数字占位宽度 while(space){ cout<<" "; space--; } star=i; while(star){ cout<<j<<" "; j++; star--; } cout<<"\n"; i++; } return 0; }
输出验证(n=4时)
输入4后输出结果如下,符合预期的对齐效果:
1 2 3 4 5 6 7 8 9 10
注:你提供的预期输出中第三行开头为
3属于笔误,按照连续递增的逻辑第三行应为4 5 6,若你需要数字行首重置的特殊逻辑可以自行调整j的赋值规则。
内容的提问来源于stack exchange,提问作者user16233625
相关产品推荐
相关产品推荐

