一、题目
让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。
输入格式:
每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。
输出格式:
每个测试用例的输出占一行,用规定的格式输出 n。
输入样例 1:
234
输出样例 1:
BBSSS1234
输入样例 2:
23
输出样例 2:
SS123
二、代码与分析
- 本题中我采用了string字符串,string字符串的好处在于直接加某个字符,str+=‘B’; 不用使用下标来访问修改。
但是其缺点也就是不能通过下标来改变字符串。
- 本题我原来打算用char数组来存储转变之后的字符串,发现太麻烦,因为你不仅要考虑添加几个字符B或者S,还要通过考虑它添加的位置,这就不只需要一个i了,所以干脆使用string。(使用何种,需要根据题目来定)
- 这里由于知道位数, 所以我们直接定义了百、十、个变量,更方便!!!!更容易访问!!!!
- 关于此题目中的零,由于题目要求不为零的个位数, 所以零不要去考虑!!!
#include <iostream>
#include <string.h>
using namespace std;
int main() {
int inNum;
int tens = 0, hundred = 0, singel = 0;
string transferNum = "";
cin>>inNum;
if(inNum >= 1000 || inNum < 0) {
return 0;
}
int i, a;
hundred = inNum / 100;
tens = inNum / 10 % 10;
singel = inNum % 10;
for(i=0; i<hundred; i++) {
transferNum += 'B';
}
for(i=0; i<tens; i++) {
transferNum += 'S';
}
// if(singel == 0) {
// transferNum += 0 + '0';
/// }else{
for(i=1; i<=singel; i++) {
transferNum += i + '0';
}
// }
cout<<transferNum;
return 0;
}