2022年冬pat乙级考试题目及代码解析附部分错误原因

打印 上一主题 下一主题

主题 987|帖子 987|积分 2961

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
快考pat乙级了,花了十块钱做了一下去年冬天的pat乙级,不难,现在在花ac之后的时间来写文章,默默许愿几天后的也不难,但是我们也要做好准备啊~
B-1 谣言检测仪

分数 15               作者 陈越                       单位 浙江大学
喜欢用大图看题目的点这里哦,为你们准备啦
谣言有很多种,本题请你设计一种检测仪,专门针对一类吹牛话术进行验证。有人喜欢吹牛,说自己做一场报告有 N 次掌声。现给定这个人的报告录音文字版,其中如果有掌声,记录中会出现 (zhangsheng) 字样。请你统计一下报告过程中到底出现了多少次掌声,并且与其说出的掌声次数做个比较,来判断这是不是谣言。
输入格式:

输入在第一行给出一个不超过 100 的正整数 N,即某人号称自己收获的掌声次数。
随后给出由英文字母、数字、标点符号(包括 ,.;:!)、空格、回车、以及 (zhangsheng) 组成的报告文本,为不超过 10^5个字符的非空字符串,其中语音记录的文本以 #结尾。
输出格式:

首先输出语音记录中真实的掌声次数。如果真实次数不小于 N,则随后空 1 格输出 True;否则输出 False。
  1. 输入样例 1:
  2. 3
  3. Hello (zhangsheng).  Glad to meet everyone(zhangsheng).
  4. See you (zhangsheng) next time.#
  5. 输出样例 1:
  6. 3 True
  7. 输入样例 2:
  8. 3
  9. Hello (zhangsheng).  Glad to meet everyone(zhang
  10. sheng). Let me hear your zhangsheng!\#
  11. 输出样例 2:
  12. 1 False
复制代码
思路:

一看这道题,要读入含回车的字符串好麻烦,没法使用string直接读入。那只能转c语言里面的getchar(),只需要判断以'#'结尾就行。
其实你硬要使用string读也可以,只是我这样更简单,完全可以在每次读入后做一次检查,然后结束输入就行
代码

[code]#includeusing namespace std;char a[100010];int main(){    int n,i=0;cin>>n;    do{        a[i++]=getchar();    }while(a[i-1]!='#');    string b(a,a+i);    //string c="(zhangsheng)";    int cnt=0;//count(b.begin(),b.end(),'(');没有使用count直接数字符串的功能    while(b.find("(zhangsheng)")!=string::npos){        b.erase(b.find("(zhangsheng)"),12);        cnt++;//使用计数    }    cout
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

耶耶耶耶耶

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表