PAT乙级真题 | 1006 换个格式输出整数

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
作者: CHEN, Yue
单位: 浙江大学
时间限制: 400 ms
内存限制: 64 MB

 

思路: 注意到测试样例是 n < 1000 的正整数,

    那么n有三种情况,三位数、两位数和一位数,

    根据三种不同的情况,将个位、十位、百位分离,

    存入变量中,最后根据个位、百位、十位的数字进行输出。

 

 1 /-----------C语言实现-----------/
 2 #include <stdio.h>
 3 
 4 int main(void)
 5 {
 6     int i, num;         //计数变量i,测试样例num 
 7     int one, ten, hundred;  //个位、十位、百位
 8     
 9     
10     scanf("%d", &num);
11     //根据三种情况分离个位、十位、百位
12     if (num >= 100)
13     {
14         one = num % 10;
15         ten = (num / 10) % 10;
16         hundred = num / 100;
17     }
18     else if (num >= 10)
19     {
20         one    = num % 10;
21         ten = num / 10;
22     }
23     else
24     {
25         one = num;
26     }
27     
28     //根据不同的情况进行输出
29     if (num >= 100)
30     {
31         for (i = 0; i < hundred; i++)
32         {
33             printf("B");
34         }
35     }
36     if (num >= 10)
37     {
38         for (i = 0; i < ten; i++)
39         {
40             printf("S");
41         }
42     }
43     for (i = 1; i <= one; i++)
44     {
45         printf("%d", i);
46     }
47 
48     
49     return 0;
50 }

 

 

posted @ 2019-07-15 19:49  DylanLiuH2O  阅读(106)  评论(0编辑  收藏  举报