1006 换个格式输出整数——C++实现

题目

1006 换个格式输出整数 (15 point(s))

让我们用字母 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是从C的角度出发,建立对应的数组。

方法2是从string类的角度出发,判断输入是几位数字,这里要先将数字转化为字符串,用到了一个很好用的to_string(),这个函数要包含在中。

方法3是柳婼大神的思路,显然使用while将各位数字取出来,再输出也是一个好方法。

方法4是12.01再次刷题的代码

思路

方法1

//pat1006V1
 #include 
 int main(){
 	int value,i,bai,shi,ge;	//value save the user's input
 	char BaiArray[][10]={"B","BB","BBB","BBBB","BBBBB","BBBBBB","BBBBBBB","BBBBBBBB","BBBBBBBBB"};
 	char ShiArray[][10]={"S","SS","SSS","SSSS","SSSSS","SSSSSS","SSSSSSS","SSSSSSSS","SSSSSSSSS"};
 	char GeArray[][10]={"1","12","123","1234","12345","123456","1234567","12345678","123456789"};
 	scanf("%d",&value);
 	
 	ge=value%10;
 	shi=value/10%10;
 	bai=value/100;
 //	printf("%d %d %d\n",bai,shi,ge);
 	for(i=0;i<9;i++)
 		if(bai==i+1)
 			printf("%s",BaiArray[i]);
	for(i=0;i<9;i++)
 		if(shi==i+1)
 			printf("%s",ShiArray[i]);
	 for(i=0;i<9;i++)
 		if(ge==i+1)
 			printf("%s",GeArray[i]);
	 return 0;
 }

方法2

#include 
#include 
using namespace std;
int main(){
	int n;	cin>>n;
	char c[2]={'S','B'};
	string str=to_string(n);
	if(str.length() ==1){
		for(int i=1;i<=n;i++)
			cout<

方法3

#include 
#include 
using namespace std;
int main(){
	int n,i=0;	cin>>n;
	int b[3]={0};
	while(n){
		b[i++]=n%10;	//依次取出最后一位数字
		n/=10; 
	}
	for(int j=0;j

代码4

#include 
using namespace std;
int main(){
	int n;	cin>>n;
	for(int i=0;i

 

你可能感兴趣的:(PAT,C,C)