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

版权声明:本文为博主原创文章,转载请务必注明出处和作者,谢谢合作! https://blog.csdn.net/zhanshen112/article/details/84311167

题目

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(),这个函数要包含在<string>中。

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

思路

方法1

//pat1006V1
 #include <stdio.h>
 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 <iostream>
#include <string>
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<<i;
	}
	if(str.length() ==2){
		for(int i=0;i<n/10;i++)
			printf("%c",c[0]);
		for(int i=1;i<=n%10;i++)
			cout<<i;
	}
	if(str.length() ==3){
		for(int i=0;i<n/100;i++)
			printf("%c",c[1]);
		for(int i=0;i<n%100/10;i++)
			printf("%c",c[0]);
		for(int i=1;i<=n%100%10;i++)
			cout<<i;
	}
	return 0;
} 

方法3

#include <iostream>
#include <string>
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<b[2];j++)	cout<<"B";
	for(int j=0;j<b[1];j++)	cout<<"S";
	for(int j=0;j<b[0];j++)	cout<<j+1;
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/zhanshen112/article/details/84311167