PTA | 程序设计类实验辅助教学平台 (pintia.cn) 刚开始是这样写的:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cin >> s;
unsigned sum = 0;
int cnt0 = 0, cnt1 = 0;
for (int i = 0; i < s.size(); ++i) {
if (isalpha(s[i])) {
sum += tolower(s[i]) - 'a' + 1; // 将字母转换为对应的序号
}
}
// 转化为二进制,统计0和1的个数
while (sum) {
if (sum & 1) {
cnt1++;
} else {
cnt0++;
}
sum >>= 1;
}
cout << cnt0 << " " << cnt1 << endl;
return 0;
}
答案不对:
原因是cin读取没把读取到空格就中断读取了:
改成getline之后就可以了: