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;
}
上一题
下一题