其实题目很简单,算法就是模拟,但是要注意题目虽然说没有歧义,但要注意理解
。
可能出现的数据情况: no no good。//name 是no 没进球!
no good good。//name是no good 进球了!
所以在处理上要注意:1。字符串输入可以有空格--使用gets();
2。从字符串后面数8个判断是否是“ no good”(注意空格),是则表明没进,不是则表明进球了。
3。怎么处理从字符串后面数8个呢?还记得数组名和指针的关系?
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int n;
while (scanf("%d",&n)&&n)
{
char name[1002];
int goal[20]={0};
getchar();//过滤回车
for (int i=0;i<n;i++)
{
gets(name);
//puts(name);
int len;
len=strlen(name);
if(len>7)
{
if(strcmp(name+(len-8)," no good")==0)//数组名即指针
{
goal[i]=0;
}
else
goal[i]=1;
}
else goal[i]=1;
}
int t;
t=n/2;
if(n%2==1) t++;
for (i=1;i<=t;i++)
{
printf("%d ",i);
}
printf("Score\n");
int j=0,tmp=0;
for (i=1;i<=t;i++)
{
if(goal[j]==1)
{
printf("O ");
tmp++;
}
else printf("X ");
j+=2;
}
printf("%d\n",tmp);
j=1;
tmp=0;
if(n%2==1) t--;
for (i=1;i<=t;i++)
{
if(goal[j]==1)
{
printf("O ");
tmp++;
}
else printf("X ");
j+=2;
}
if(n%2==1) printf("- ");
printf("%d\n",tmp);
}
}