注意题目讲的输入规则 输入到文件结束 统计对话段数和 呵呵的句数就OK 了 字符串的处理要小心
http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11660
#include<stdio.h>
#include<string.h>
char str[1010];
char gg[1010];
bool vis[1010][1010];
int main()
{
int k=0;
char ch1,ch2,t;
int sum=0;
int i,j,flag;
memset(vis,0,sizeof(vis));
while(gets(gg))
{
ch1=gg[0];
ch2=gg[3];
if(ch2<ch1)
{
t=ch1;
ch1=ch2;
ch2=t;
}
if(vis[ch1-'A'][ch2-'A']==0)
{
k++;
vis[ch1-'A'][ch2-'A']=1;
}
int j=0;
for(i=5; gg[i]!=0; i++)
{
if(gg[i]>='A'&&gg[i]<='Z')
{
str[j++]=gg[i]+32;
continue;
}
if(gg[i]>='a'&&gg[i]<='z')
{
str[j++]=gg[i];
continue;
}
str[j++]=' ';
}
str[j]=0; //补零
j++;
str[j]=0;
for(i=0; str[i]!=0; i++)
{
flag=1;
if(str[i]=='h'&&str[i-1]==' ')//细节
{
j=i;
for(; str[i]!=' '&&str[i]!=0; i++)//细节
{
if(str[i]==str[i+1])
{
flag=0;
break;
}
if(str[i]!='h'&&str[i]!='e')
{
flag=0;
break;
}
}
if(flag&&((i-j)%2==0))
{ //puts(str);
sum++;
break;
}
}
}
}
// printf("%d %d\n",sum,k);
double ans=sum*1.0/k;
ans=ans*100+0.5;
int fan=ans;
printf("%d%%\n",fan);
return 0;
}