PTA 乙级 1057 数零壹 (20分) C++

 

 

思路:getline获取一行字符串,之后利用字母范围,字母 - ‘a’('A') + 1,得到字母序号,求和,对求和结果用除二取余的方法对0和1计数

测试点0,4 :用string定义的要小心,输入的数据(测试点0和4)里有带空格的,所以这种情况下就不能只是单纯的用cin输入了(输入空格,Tab,回车则结束输入),而要用getline(cin,string变量名)。

测试点2:不能用do-while循环数0和1(如果sum = 0,则会多数0的个数),只能用while

 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 int main() {
 6     string s;
 7     int sum = 0;
 8     int one = 0, zero = 0;
 9     getline(cin, s);                
10     for (int i = 0; i < s.size(); ++i) {
11         if (s[i] <= 'z' && s[i] >= 'a') {            //A~Z a~z两种情况
12             sum += s[i] - 'a' + 1;
13         }
14         else if (s[i] <= 'Z' && s[i] >= 'A') {
15             sum += s[i] - 'A' + 1;
16         }
17     }
18     while (sum > 0) {
19         if (sum % 2 == 0) one++;
20         else zero++;
21         sum /= 2;
22     } 
23     cout << one << ' ' << zero;
24     return 0;
25 }

 

posted @ 2020-08-24 03:42  上帝的绵羊  阅读(261)  评论(0编辑  收藏  举报