pat乙级1006 换个格式输出整数

让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。 输入格式: 每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。 输出格式: 每个测试用例的输出占一行,用规定的格式输出 n。 输入样例 1: 234 输出样例 1: BBSSS1234 输入样例 2: 23 输出样例 2: SS123

平平无奇的一道题目,有两个点需要注意:

1.string变量初始化时:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s1;
    string s2 = "string";
    string s3 = s2;
    string s4 (10, s);
    return 0;
}

直接string s4 (10, s);不是string s4 = (10, s);

2.再次提醒,C语言不能连着两个比较符号。像这道题因为前面if里已经有<10了,else if里只需要<100就行。

3.关于int和string的互相转化:

源代码:

#include <iostream>
#include <string>

using namespace std;

string ge(int g){
	string back="";	

	for(int i=1;i<(g+1);i++){
		back += to_string(i);
		
	}
    return back;
}

string shi(int s){
	string back(s,S);
	
    return back;
}

string bai(int b){
	string back(b,B);
	
    return back;
}

int main(){
    int in;
    string out;
    scanf("%d", &in);
    int g = in%10;
    int s = (in%100)/10;
    int b = (in-10*s-g)/100;
    
    if(in<10){
    	out = ge(g);
	}
	else if(in<100){
		out = shi(s) + ge(g);
	}
	else if(100<in){
		out = bai(b) + shi(s) + ge(g);
	}
	cout<<out;
    return 0;
}
经验分享 程序员 微信小程序 职场和发展