C++如何实现输入≤9输出无前导0、>9输出两位前导0数字序列
问题修复方案
你现有代码的问题主要有三点:
- 没有区分输入≤9和>9的输出规则,统一输出两位补零格式,不符合≤9时无前置零的要求
- 未实现输入>9时每输出10个数字自动换行的逻辑
- 冗余声明了变量a,存在重复定义的隐患
可直接运行的修改后代码
#include <iostream> #include <iomanip> using namespace std; int main () { int num; cin >> num; // 范围校验逻辑保留 if (num > 100 || num <= 1){ cout << "OUT OF RANGE"; } // 新增≤9的场景分支 else if (num <= 9) { for (int a = 1; a < num; a++){ cout << a << "."; } cout << num; } // 处理>9的场景,补充换行逻辑 else { for (int a = 1; a <= num; a++){ // setw仅对下一次输出生效,setfill会持续生效 cout << setfill('0') << setw(2) << a; // 非最后一个数字补充点分隔符 if (a != num) { cout << "."; } // 每输出10个数字换行 if (a % 10 == 0) { cout << endl; } } // 重置填充符为默认空格,避免影响后续其他输出 cout << setfill(' '); } return 0; }
逻辑说明
- 保留原有范围校验规则,输入≤1或>100时直接输出错误提示
- 输入在2~9区间时,直接输出无前置零的数字,用点分隔即可
- 输入≥10时:
- 所有数字统一用
setw(2)指定输出宽度为2位,setfill('0')指定空位用0填充,实现前置补零效果 - 每输出10个数字触发一次换行,符合格式要求
- 输出完成后重置填充符为默认的空格,避免后续输出被异常补零
- 所有数字统一用
内容的提问来源于stack exchange,提问作者Jaemin Na
相关产品推荐
相关产品推荐

