条件:
让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12…n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。
输入格式:
每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。
输出格式:
每个测试用例的输出占一行,用规定的格式输出 n。
解题思路:
- 读题发现,除了个位数,其他的字母输出与位数上的数字有着关系,也就是位数是几,就输出多少个字母
- 设置长度为3的数组,将对测试数字的余数放入数组当中
- 逐个取出数组当中的数字,除了[0](因为里面放的是个位数,只有一个的),得到百位和十位的数字(可以从最高位往下读取,也方便输出)
- 使用switch对读取的数字进行判断,然后打印出来
代码:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93#include<stdio.h> int main(void) { short input; int array[3]; int n = 0; //用作数组的计数 scanf("%hd",&input); int fin_input = input; //最后输出使用 while (input != 0) { array[n] = input % 10; input = input / 10; if (input != 0) { n++; } } for (;n >= 0;n--) { if (n == 1) { switch (array[1]) { case 1: printf("S"); break; case 2: printf("SS"); break; case 3: printf("SSS"); break; case 4: printf("SSSS"); break; case 5: printf("SSSSS"); break; case 6: printf("SSSSSS"); break; case 7: printf("SSSSSSS"); break; case 8: printf("SSSSSSSS"); break; case 9: printf("SSSSSSSSS"); break; default: // printf(""); break; } } if (n == 2) { switch (array[2]) { case 1: printf("B"); break; case 2: printf("BB"); break; case 3: printf("BBB"); break; case 4: printf("BBBB"); break; case 5: printf("BBBBB"); break; case 6: printf("BBBBBB"); break; case 7: printf("BBBBBBB"); break; case 8: printf("BBBBBBBB"); break; case 9: printf("BBBBBBBBB"); break; default: // printf(""); break; } } if (n == 0) { for (int i = 1;i <= array[0];i++) { printf("%d",i); } } } }
总结:
- 挺无语的…尽然理解错了,以为个位数那里是1就行
- 更简单的写法应该是把打印B、S那里改成循环,但是这样子做的话会随着n不断增长,但是switch的方式又过于复杂,不知道有没有更好的办法
- 学到了取百位数的方法(n % 100) / 10,如果去任一位置还是需要知道数字的长度
最后
以上就是无情羊最近收集整理的关于【PAT】换个格式输出整数的全部内容,更多相关【PAT】换个格式输出整数内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复