测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A29559. 吃火锅

填空题 中等

题目描述

吃火锅

题目描述

本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有 `chi1 huo3 guo1`。

时间限制:1000        内存限制:65536

输入

输入每行给出一句不超过 80 个字符的、以回车结尾的朋友信息,信息为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。当读到某一行只有一个英文句点 . 时,输入结束,此行不算在朋友信息里。

输出

首先在一行中输出朋友信息的总条数。然后对朋友的每一行信息,检查其中是否包含 chi1 huo3 guo1,并且统计这样厉害的信息有多少条。在第二行中首先输出第一次出现 chi1 huo3 guo1 的信息是第几条(从 1 开始计数),然后输出这类信息的总条数,其间以一个空格分隔。题目保证输出的所有数字不超过 100。 如果朋友从头到尾都没提 chi1 huo3 guo1 这个关键词,则在第二行输出一个表情 `-_-#`。

样例输入

样例1:

Hello!
are you there?
wantta chi1 huo3 guo1?
that's so li hai le
our story begins from chi1 huo3 guo1 le
样例2:
Hello!
are you there?
wantta qi huo3 guo1 chi1huo3guo1?
that's so li hai le
our story begins from ci1 huo4 guo2 le

样例输出

样例1:

5
3 2

样例2:

5
-_-#


参考答案

#include <bits/stdc++.h> #include <string> using namespace std; int main() { string s[100]; //定义数组s,存放输入的朋友信息 int n=0; while(1){ string a; getline(cin,a); //每行输入一条信息 if(a!="."&&a!="\0"){ //如果输入的信息不是单个'.',并且非空 s[n]=a; //则把信息存放到数组s中 n++; }else if(a=="."){ //如果输入的信息是单个'.',则结束循环 break; } } cout<<n<<endl; //输出信息总条数 string b="chi1 huo3 guo1"; //设置需要查找的字符串 int sum=0; //包含字符串b的信息总条数 int sum1=0; //第一次出现字符串b的条数 for(int i=0;i<n;i++){ size_t pos=s[i].find(b); //字符串查找函数find,包含在头文件string中 if(pos != string::npos){ //如果在信息中有找到字符串b if(sum==0){ //是否第一次出现满足条件 sum1=i+1; //则第一次的条数等于数组的行号+1 } sum++; //满足条件的总条数加1 } } if(sum==0) cout<<"-_-#"; //判断满足条件的总条数是否为0,是则输出错误信息 else cout<<sum1<<" "<<sum; //否则输出第一次出现的条数,和满足条件的总条数 return 0; }
上一题 下一题