PAT B1043 输出PATest(C++)

PAT甲级目录 | PAT乙级目录

题目描述

B1043 输出PATest

解题思路

利用一个 hash 数组记录每个英文字母出现的次数。

也许陌生的知识点

  • while(scanf("%c", &temp) != EOF){ }
    • 可用于判断输入是否结束,自己测试运行时可用 ctrl + z 作为输入结束,程序可识别

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <cstdio>
int main(){
char temp, list[] = {'P', 'A', 'T', 'e', 's', 't'};
int cnt[6] = {0}, n = 0;
while(scanf("%c", &temp) != EOF){
for(int i = 0; i < 6; i++){
if(list[i] == temp){
cnt[i]++;
n++;
}
}
}
while(n > 0){
for(int i = 0; i < 6; i++){
if(cnt[i] > 0){
cnt[i]--;
n--;
printf("%c", list[i]);
}
}
}
return 0;
}