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
结尾无空行
作者
CHEN, Yue
单位
浙江大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
题目解析:
这道题是道入门提,用面向对象来弄确实有点大材小用,不过我最近在学面向对象,所以就当练下手,这个题的演示容易把人带入一个误区,因为题目上给的输入示例是234和23,而后面输出确实1234和123,如果没有仔细读题,真的会认为就是在前面加一个1(注意的地方我标红了),这道题也比较简单,主要考察的是用 “/"和”%“来取出数字的每一位以及循环,所以也没有什么难度,直接上代码(代码中的注释去掉也可以)
#include <iostream>
using namespace std;
class Num{
private:
int Bai;
int Shi;
int Ge;
public:
int GET_Bai();
int GET_Shi();
int GET_Ge();
Num(int Num);
};
Num::Num(int Num){
Bai=Num/100;
Shi=Num/10%10;
Ge=Num%10;
}
int Num::GET_Bai(){
/* if(Bai)*/return Bai;
/* else return 0; */
}
int Num::GET_Shi(){
/* if(Shi) */return Shi;
/*else return 0; */
}
int Num::GET_Ge(){
/*if(Ge) */return Ge;
/* else return 0; */
}
int main(){
int b;
cin>>b;
Num a(b);
/* if(a.GET_Bai()) */for(int i=0;i<a.GET_Bai();i++) cout<<"B";
/* if(a.GET_Shi()) */for(int i=0;i<a.GET_Shi();i++) cout<<"S";
/*if(a.GET_Ge()) */for(int i=1;i<=a.GET_Ge();i++) cout<<i;
return 0;
}