PAT 乙级题目讲解:1006《换个格式输出整数》
📅 2026/7/4 9:03:10
👁️ 阅读次数
📝 编程学习
✅ PAT 乙级题目讲解:1006《换个格式输出整数》
摘要:本文讲解 PAT 乙级真题 1006《换个格式输出整数》。题目要求将三位数按百位、十位、个位拆分,并分别以字母
B、S和自然数序列输出。文章通过样例分析、分步拆解代码、完整实现、常见错误及思维拓展,帮助读者掌握整数数位拆分与循环格式化输出的核心技巧。
🧩 题目简介
本题是一道基础模拟题,要求将输入的三位数整数拆分为百位、十位、个位,并按指定的格式输出:
- 用
B表示百位数字的个数; - 用
S表示十位数字的个数; - 个位数字用从
1开始的自然数序列输出。
核心考察点是整数的数位拆解与格式化输出。
🧪 样例分析
输入:
234分析过程:
拆解:
- 百位:
b = 234 / 100 = 2 - 十位:
s = (234 / 10) % 10 = 3 - 个位:
g = 234 % 10 = 4
- 百位:
输出规则:
- 输出 2 个
B:BB - 输出 3 个
S:SSS - 输出 1~4:
1234
- 输出 2 个
因此输出为:
BBSSS1234🔍 解题思路
📎 变量说明
| 变量名 | 含义 |
|---|---|
x | 输入的整数 |
b | 百位数字 |
s | 十位数字 |
g | 个位数字 |
i | 循环变量,用于格式化输出 |
本题的解决流程可以分为以下几个步骤:
✅ Step 1:输入整数并拆分为三位
使用整除与取余操作获得各数位:
intx;cin>>x;intb,s,g;b=x/100;s=x/10%10;g=x%10;✅ Step 2:格式化输出百位部分
输出b个B:
for(inti=1;i<=b;i++)cout<<"B";✅ Step 3:格式化输出十位部分
输出s个S:
for(inti=1;i<=s;i++)cout<<"S";✅ Step 4:格式化输出个位部分
输出从 1 到g的数字:
for(inti=1;i<=g;i++)cout<<i;✅ 完整代码
#include<bits/stdc++.h>usingnamespacestd;intmain(){intx;cin>>x;intb,s,g;b=x/100;s=x/10%10;// bsg -> bs -> sg=x%10;for(inti=1;i<=b;i++)cout<<"B";for(inti=1;i<=s;i++)cout<<"S";for(inti=1;i<=g;i++)cout<<i;return0;}🚧 常见错误提醒
| 错误类型 | 具体表现 |
|---|---|
| 数位拆分错误 | 十位写成x % 100 / 10,容易搞错优先级 |
| 输出顺序错误 | 忘记按B→S→ 数字顺序输出 |
✅ 总结归纳
- 本题核心是掌握整数数位拆分技巧,熟练使用整除
/和取余%; - 同时考察循环输出格式,尤其注意顺序和数量;
- 是练习输入输出控制与模拟的经典入门题。
🧠 思维拓展
- 思考:若扩展为支持四位数、五位数该如何处理?
- 可引入数组或字符串从高位向低位逐位输出进一步增强通用性。
编程学习
技术分享
实战经验