PAT B1057 数零壹(C++)

PAT甲级目录 | PAT乙级目录

题目描述

B1057 数零壹

解题思路

字符串处理和进制转换。

也许陌生的知识点

  • ctype 头文件
    • 该头文件包含一系列处理单个字符的函数:
    • isalpha()
      • 判断字符是否为字母
    • isdigit()
      • 判断字符是否为数字
    • islower()
      • 判断字符是否为小写字母
    • isupper()
      • 判断字符是否为大写字母
    • y = tolower(x)
      • 将大写字母转换为小写字母
    • y = toupper(x)
      • 将小写字母转换为大写字母

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <cstdio>
#include <cctype>
int main(){
char x;
int N = 0, cnt[2] = {0};
while(scanf("%c", &x) != EOF){
if(isalpha(x)){
if(isupper(x)) x = tolower(x);
N += (int)(x - 'a' + 1);
}
}
while(N != 0){
cnt[N % 2]++;
N /= 2;
}
printf("%d %d\n", cnt[0], cnt[1]);
return 0;
}