//一开始无数次wa
//因为可能会出现 数据类似这样的: simple no good good 即一个人的名字可能是 simple no good :(鄙视
//但是不管是不是会有这样的数据 我们可以用一个很巧的方法 就是从最后面去判断 即判断倒数第8个字符是不是空格 倒数第七个是不是n 第八个是不是o 第9个是不是空格
//如果同时满足是 就可以断定一定是 X了(狗
#include <iostream> #include <string.h> #include <stdio.h> using namespace std; int find_no(char *ch) { int i,flag=1; i=strlen(ch); if(ch[i-8]==‘ ‘&&ch[i-7]==‘n‘&&ch[i-6]&&ch[i-5]==‘ ‘)//关键在于判断no而且no的位置很重要,而且no前后要有空格 flag=0; /*for(i=0;ch[i]!=‘\0‘;i++) { if(ch[i]==‘ ‘&&ch[i+1]==‘n‘&&ch[i+2]==‘o‘&&ch[i+3]==‘ ‘&&ch[i+4]==‘g‘) {flag=0;break;} }*/ return flag; } int main() { char data[120][120]; int n,i,j,sum_1,sum_2,k; while(cin>>n) { getchar(); if(n==0) break; sum_1=0;sum_2=0;k=n; for(i=1;i<=n;i++) gets(data[i]);//二维字符数组输入 if(n%2!=0) k=n+1;//这只是为了写1 2 3 方便 for(j=1;j<=k/2;j++)//接下来是打分表 cout<<j<<" "; cout<<"Score"<<endl; for(i=1;i<=n;i+=2)//第一队的打分 { if(find_no(data[i])) {cout<<"O"<<" ";sum_1++;} else cout<<"X"<<" "; } cout<<sum_1<<endl; for(i=2;i<=n;i+=2)//第2队的打分 { if(find_no(data[i])) {cout<<"O"<<" ";sum_2++;} else cout<<"X"<<" "; } if(k!=n) cout<<"-"<<" "; cout<<sum_2<<endl; } return 0; }
原文:http://www.cnblogs.com/nefu929831238/p/5203805.html