题目大意:题意很简单,直接讲思路。
思路:分两步完成
1、判断是否押韵。分别判断上句和下午,看最后三个字母是否是"ing",放心的判断,不用担心越界;也不用担心最后一个汉字的拼音只有两个字母(当时在考场,这点浪费了将近半小时的时间,吐血啊!),只有两个字母一定不符合"ing"。
2、输出。找到倒数第三个汉字的位置。
提交代码(参考了别人):
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
getchar();
while(n--){
string s;
bool flag=true;
getline(cin,s);
for(int i=0;i<s.size();i++){
if(s[i]==','){
if(s[i-1]!='g') { flag=false; }
if(s[i-2]!='n') { flag=false; }
if(s[i-3]!='o') { flag=false; }
}
if(s[i]=='.'){
if(s[i-1]!='g') { flag=false; }
if(s[i-2]!='n') { flag=false; }
if(s[i-3]!='o') { flag=false; }
}
}
if(flag){
int cnt=0;
int j;
for( j=s.size()-1;j>=0;j--){
if(s[j]==' ') cnt++;
if(cnt==3) break;
}
for(int i=0;i<=j;i++){
cout<<s[i];
}
cout<<"qiao ben zhong."<<endl;
}else cout<<"Skipped"<<endl;
}
return 0;
}
带注释的代码:
#include<iostream>
#include<vector>
#include<string>
#include<cstdio>
using namespace std;
int main(){
int n;
cin>>n;
//别忘了这句!!!
getchar();
while(n--){
string s;
bool flag=true;
getline(cin,s);
for(int i=0;i<s.size();i++){
//判断后缀是否是"ing"
if(s[i]==','){
if(s[i-1]!='g') { flag=false; }
if(s[i-2]!='n') { flag=false; }
if(s[i-3]!='o') { flag=false; }
}
if(s[i]=='.'){
if(s[i-1]!='g') { flag=false; }
if(s[i-2]!='n') { flag=false; }
if(s[i-3]!='o') { flag=false; }
}
}
if(flag){
int cnt=0;
int j;
//寻找位置
for( j=s.size()-1;j>=0;j--){
if(s[j]==' ')
cnt++;
if(cnt==3)
break;
}
for(int i=0;i<=j;i++){
cout<<s[i];
}
cout<<"qiao ben zhong."<<endl;
}else cout<<"Skipped"<<endl;
}
return 0;
}