CodeForces 312A Whose sentence is it?
程序员文章站
2022-06-17 19:54:48
...
题目链接:CodeForces 312A Whose sentence is it?
cin>> 和 getline 混用需谨慎。
- 我们先看下 cin>> 与 getline 的工作方式,流提取运算符根据它后面的变量类型读取数据,从非空白符号开始,遇到 Enter、Space、Tab 键时结束。getline函数从istream中读取一行数据,当遇到“\n”时结束返回。
- 造成程序错误结果的原因是,用户输入完年龄后按回车结束输入,把“\n”留在了输入流里,而 cin 不会主动删除输入流内的换行符,这样换行符就被 getline 读取到,getline 遇到换行符返回,因此程序不会等待用户输入。
- 解决的办法是手动清除换行符,在cin>>后加上 cin.ignore();,这样即可得到正确结果。
#include<iostream>
#include<algorithm>
#include<string>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<stack>
#include<queue>
using namespace std;
const int maxn = 1010;
int a[maxn];
int f(string str)
{
int len = str.length();
string tmp = str.substr(len-5,5);
if(tmp=="lala.")
return 1;
else
return 0;
}
int r(string str)
{
string tmp = str.substr(0,5);
if(tmp=="miao.")
return 1;
else
return 0;
}
int main()
{
int n;
cin>>n;
cin.ignore(); //消除回车
string s;
for(int i=1;i<=n;i++)
{
getline(cin,s);
int l = s.length();
if(l<5)
{
cout<<"OMG>.< I don't know!"<<endl;
continue;
}
if(f(s)==1&&r(s)==0)
cout<<"Freda's"<<endl;
else if(f(s)==0&&r(s)==1)
cout<<"Rainbow's"<<endl;
else
cout<<"OMG>.< I don't know!"<<endl;
}
return 0;
}
上一篇: 查找数据里的中位数