题目链接:[CSP-J2019] P5660
题目描述
小 K 同学向小 P 同学发送了一个长度为 8
的 01
字符串来玩数字游戏,小 P 同学想要知道字符串中究竟有多少个 1
。
注意:01
字符串为每一个字符是 0
或者 1
的字符串,如“101
”(不含双引号)为一个长度为 3
的 01
字符串。
样例输入
输入#1
00010100
输出#1
2
(更多样例见洛谷原站)
这题目竟然能作为2019年的试题,真的是太水了
代码实现
首先,我们创建一个计数器(用于计算数字1
的个数)
int cnt=0; //计数器归零
然后,创建一个字符串,存储输入的“01
字符串”
string ch;
getline(cin,ch); //用cin也可以
接下来,循环操控当前的字符,将它与1
比较,如果当前字符与1
相同,cnt
就加1
,否则不变。最后输出。
for(int i=0;i<8;i++) { //执行8次
if(ch[i]==1) cnt++;
}
cout<<cnt;
整合代码如下:
#include <bits/stdc++.h>
using namespace std;
int main ()
{
int cnt=0;
string ch;
cin>>ch;
for(int i=0;i<8;i++) {
if(ch[i]==1) cnt++;
}
cout<<cnt;
return 0;
}
我刚把代码交上去,系统提示:错了!
我们检查一下代码,在第10
行的if
语句比较中,我们把一个string
类型和int
比较,出现了错误,所以:
AC Code
#include <bits/stdc++.h>
using namespace std;
int main ()
{
int cnt=0;
string ch;
cin>>ch;
for(int i=0;i<8;i++) {
if(ch[i]=='1') cnt++;
}
cout<<cnt;
return 0;
}