题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=165
这题卡了好久,结果最后跟大兵讨论了下发现自己的思路就是错的,吐了。不过通过这题还是学到很多东西。比如scanf的缓冲区,清空缓冲区就用fflush
(stdin);
但空格后面的还是不能读入进去。用gets不能单独对单词进行比较,而且gets可能会溢出,不推荐使用。用scanf可以输入空格的, char str[1001];scanf("%d[^\n]",str);但是貌似不能无限输入(不知道对不对!!!)。代码很简单,直接就能看懂,就直接贴出来了。
代码:
#include<stdio.h>
#include<string.h>
struct byq
{
char str[101];
}w[10001];
int main()
{
int s,n,i,k,count;
char ch,a[10001];
scanf("%d",&s);
while(s--)
{
memset(w,0,sizeof(w));
count=0;k=0;
scanf("%d",&n);
for(i=0;i<=n-1;i++)
{
scanf("%s",w[i].str);
}
while(scanf("%c",&ch)&&ch!='@')
{
if((ch>='a'&&ch<='z')||(ch>='0'&&ch<='9')||ch=='_')
{
a[k++]=ch;
}
else
{
for(i=0;i<n;i++)
{
if(strcmp(a,w[i].str)==0)
{
count++;
}
}
memset(a,0,sizeof(a));
k=0;
}
}
printf("%d\n",count);
}
return 0;
}