PAT乙级 1006 换个格式输出整数(15分)
让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12…n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。
输入格式:
每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。
输出格式:
每个测试用例的输出占一行,用规定的格式输出 n。
输入样例 1:
234
输出样例 1:
BBSSS1234
输入样例 2:
23
输出样例 2:
SS123
思路:
巧妙利用sprintf()函数分离百位、十位和个位,用for循环逐个输出。
统计数据:
题解 方法一:
#include <cstdio>
using namespace std;
char num[100];
int n;
int main(){
scanf("%d",&n);
sprintf(num,"%3d",n);
for(int i='0';i<num[0];i++) printf("B");
for(int i='0';i<num[1];i++) printf("S");
for(int i='0';i<num[2];i++) printf("%d",i-'0'+1);
return 0;
}
题解 方法二:
#include <cstdio>
using namespace std;
char num[100],dic[20]={"WQBS"}; //这样写的话就算有千和万位也能解决
int n;
int main(){
scanf("%d",&n);
sprintf(num,"%5d",n);
for(int i=0;i<=4;++i)
for(char j='1';j<=num[i];++j)
printf("%c",i==4?j:dic[i]);
return 0;
}