PAT 乙级题目讲解:1006《换个格式输出整数》

✅ PAT 乙级题目讲解:1006《换个格式输出整数》

摘要:本文讲解 PAT 乙级真题 1006《换个格式输出整数》。题目要求将三位数按百位、十位、个位拆分,并分别以字母BS和自然数序列输出。文章通过样例分析、分步拆解代码、完整实现、常见错误及思维拓展,帮助读者掌握整数数位拆分循环格式化输出的核心技巧。

🧩 题目简介

本题是一道基础模拟题,要求将输入的三位数整数拆分为百位、十位、个位,并按指定的格式输出:

  • B表示百位数字的个数;
  • S表示十位数字的个数;
  • 个位数字用从1开始的自然数序列输出。

核心考察点是整数的数位拆解格式化输出


🧪 样例分析

输入:

234

分析过程:

  • 拆解:

    • 百位:b = 234 / 100 = 2
    • 十位:s = (234 / 10) % 10 = 3
    • 个位:g = 234 % 10 = 4
  • 输出规则:

    • 输出 2 个BBB
    • 输出 3 个SSSS
    • 输出 1~4:1234

因此输出为:

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:格式化输出百位部分

输出bB

for(inti=1;i<=b;i++)cout<<"B";

✅ Step 3:格式化输出十位部分

输出sS

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,容易搞错优先级
输出顺序错误忘记按BS→ 数字顺序输出

✅ 总结归纳

  • 本题核心是掌握整数数位拆分技巧,熟练使用整除/和取余%
  • 同时考察循环输出格式,尤其注意顺序和数量;
  • 是练习输入输出控制与模拟的经典入门题。

🧠 思维拓展

  • 思考:若扩展为支持四位数、五位数该如何处理?
  • 可引入数组或字符串从高位向低位逐位输出进一步增强通用性。