首页 > 代码库 > PAT 1006 换个格式输出 C语言

PAT 1006 换个格式输出 C语言

让我们用字母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 #include<stdio.h>
 2 #include<string.h>
 3 #define MAXN 9
 4 int c1[MAXN];
 5 char c2[MAXN];
 6 char c3[MAXN];
 7 int main()
 8 {
 9     int i,j,tmp,j1,j2;
10     char shi,bai;
11     scanf("%d",&i);
12 
13     j = i % 10;
14     tmp = 0;
15     shi = S;
16     bai = B;
17     
18     memset(c1,0,sizeof(c1));
19     memset(c2,0,sizeof(c2));
20     memset(c3,0,sizeof(c3));
21 
22     //个位数
23     for(;tmp< j; tmp++){
24         c1[tmp] = tmp+1;
25     }
26     //十位数
27     if((j1 = i /10) > 0){
28         j1 = j1 % 10;
29         for(tmp = 0;tmp < j1; tmp++){
30             c2[tmp] =S;
31         }
32     }
33     //百位数
34     if((j2 = i / 100) > 0){
35         for(tmp = 0;tmp < j2; tmp++){
36             c3[tmp] = B;
37         }
38     }
39     
40     //输出
41     if(j2 > 0){
42         for(tmp = 0; tmp < j2; tmp++){
43             printf("%c",c3[tmp]);
44         }
45     }
46     if(j1 > 0){
47         for(tmp = 0; tmp < j1; tmp++){
48             printf("%c",c2[tmp]);
49         }
50     }
51     for(tmp = 0; tmp < 9; tmp++){
52             if(c1[tmp] == 0) break;
53             printf("%i",c1[tmp]);
54         } 
55 
56     return 0;
57 }