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; }
上一篇:
92天倒计时,蓝桥杯省赛备赛攻略来啦~
下一篇:
最近一些的有意思的思考-记录成长