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

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

让我们用字母 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. 想到数组了,但是没想到int数组,想到字符串数组了,然后就写不出来,就不写数组了
#include<stdio.h>
#include<string.h>

int main(){
    int a;
    scanf("%d",&a);
    int len;
    int b = a / 100;
    int c = a % 100 / 10;
    int g = a % 10;
    if(b!=0) len = 3;
	else if(c != 0) len = 2;
	else len = 1; 
	int t = 1;
	if(len == 3){
		for(int i = 0; i < b; i++){
			printf("B");
		}
		for(int i = 0; i < c; i++){
			printf("S");
		}
		for(int i = 0; i < g; i++){
			printf("%d",t++);
		}
	}else if(len == 2){
		for(int i = 0; i < c; i++){
			printf("S");
		}
		for(int i = 0; i < g; i++){
			printf("%d",t++);
		}
	}else if(len == 1){
		for(int i = 0; i < g; i++){
			printf("%d",t++);
		}
	}
	return 0;
} 

参考代码

#include<stdio.h>
int main(){
	int n;
    scanf("%d", &n);
    int num = 0, ans[5];
    while(n != 0){
		ans[num] = n % 10;
        n = n / 10;
        num++;
    }
    for(int i = num - 1; i >= 0; i--){
		if(i == 2){
			for(int j = 0; j < ans[i]; j++){
                printf("B");
            }
        }else if( i == 1){
			for(int j = 0; j < ans[i]; j++){
				printf("S");
            }
        }else{
            for(int j = 0; j <= ans[i]; j++){
				printf("%d", j);
            }
        }
    }
    return 0;
}
posted @ 2021-08-04 16:35  shiff  阅读(29)  评论(0编辑  收藏  举报