qidao123.com技术社区-IT企服评测·应用市场

标题: 2022年冬pat乙级考试题目及代码解析附部分错误原因 [打印本页]

作者: 耶耶耶耶耶    时间: 2023-2-27 22:24
标题: 2022年冬pat乙级考试题目及代码解析附部分错误原因
快考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




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4