PAT-B 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

思路分析:

直接 scanf 读取输入,按照 3字符宽度(%03d) 打印到当做暂存的字符数组 chr 中,从左至右,按顺序处理。

输出转换用了 (%.*s) 占位符格式, 星号表示一个 int 类型,作为 sprintf 的参数提供,表示输出的字符串长度。

代码:

#include <stdio.h>

int main()
{
    char chr[4], out[3][11] = {"BBBBBBBBB", "SSSSSSSSS", "123456789"};
    int n;

    scanf("%d", &n);
    sprintf(chr, "%03d", n);
    for (int i = 0; i < 3; i++)
        printf("%.*s", chr[i]-48, out[i]);

    return 0;
}

点这里进入试题网页

你可能感兴趣的:(pat,乙级,简洁代码)