1006 换个格式输出整数
输入格式:
每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。
输出格式:
每个测试用例的输出占一行,用规定的格式输出 n。
输入样例 1:
234
输出样例 1:
BBSSS1234
输入样例 2:
23
输出样例 2:
SS123
题目分析
1、输入
每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。
scanf("%d",&num);
2、输出
每个测试用例的输出占一行,用规定的格式输出 n。
“百”有几个,输出几个“B”;
“十”有几个,输出几个“S”;
“个”位有几个,输出几个“n”(n:1、2、3、4…12);
第一步:分割输入的数,分别用变量记录百位、十位、个位是几;
num/100:去掉后面的个数,算出目前的数的百位是几;
num-(bbai*100):用当前的数,减去他的百位数,然后再/10,取十位的个数;
个位数:等于num减去百位,十位。
bbai=num/100;
sshi=(num-(bbai*100))/10;
ngewei=num-bbai*100-sshi*10;
第二步:建立for循环,打印个数;
for (int i=0;i<bbai;i++){//百位
printf("B");
}
for (int i=0;i<sshi;i++){/十位
printf("S");
}
for (int i=1;i<=ngewei;i++){//个位
printf("%d",i);
}
3、碎碎念
-
这题比较简单,基本按照题目要求,输出就行。
-
算法笔记,用的是数组存储。
代码如下:
1、自己写的
#include<stdio.h>
int main(){
int num,sshi,bbai,ngewei;
scanf("%d",&num);
bbai=num/100;
sshi=(num-(bbai*100))/10;
ngewei=num-bbai*100-sshi*10;
// printf("百:%d 十位:%d 个位:%d",bbai,sshi,ngewei);
for (int i=0;i<bbai;i++){
printf("B");
}
for (int i=0;i<sshi;i++){
printf("S");
}
for (int i=1;i<=ngewei;i++){
printf("%d",i);
}
return 0;
}
2、算法笔记代码
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int num=0,ans[5];//num存放n的位数
while(n!=0){//将n的每一位存放到ans数组中
ans [num]=n%10;
num++;
n=n/10;
}
for (int i=num-1;i>=0;i--){//从高位到低位枚举
if(i==2){//如果是百位
for(int j=0;j<ans[i];j++){
printf("B");//输出ans[i]个B
}
}else if(i==1){//如果是十位
for(int j=0;j<ans[i];j++){
printf("S");//输出ans[i]个S
}
}else{//如果是个位
for (int j=1;j<=ans[i];j++){
printf("%d",j);//输出12...ans[i]
}
}
}
return 0;
}