description |
<span style="font-family:SimSun;font-size:14px;">我们每天都面临着要学习大量的英文单词,但我最喜欢good这个词,这个词见到的越多,我的生活就越幸福和愉快!给你一些英文单词,你能统计出good有多少个吗?</span> |
input |
<span style="font-family:SimSun;font-size:14px;">输入数据的第1行一个N (1 < N < 100),代表输入的数据组数,然后有N 行,每行有很多个单词,单词之间用空格隔开;每行的长度不超过100.</span> |
output |
<span style="font-family:SimSun;font-size:14px;">对于每行数据,输出其中含good单词的个数。</span> |
sample_input |
<span style="font-family:SimSun;font-size:14px;">2 i am a good boy! goof good good dood good</span> |
sample_output |
<span style="font-family:SimSun;font-size:14px;">1 3 </span> |
题解:这是标准的水题,但不代表他不是一道好题,陈宇大大出的题,经过一段时间的学习,现在自己搞出了三种写法,思路有所不同,分别陈述咯;
code1:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char s[105];
int n,i,len,j,k;
scanf("%d",&n);
getchar();
while(n--)
{
gets(s);
len=strlen(s);
k=0;
for(i=0;i<=len;i++)
{
if(i==0&&s[i]=='g'&&s[i+1]=='o'&&s[i+2]=='o'&&s[i+3]=='d'&&(s[i+4]==' '||s[i+4]=='\0'))
k++;
if(i!=0&&s[i-1]==' '&&s[i+1]=='o'&&s[i+2]=='o'&&s[i+3]=='d'&&(s[i+4]==' '||s[i+4]=='\0'))
k++;
}
printf("%d\n",k);
}
return 0;
}
笔记:这个方法的思路就是数空格,good前后都是空格才能算是一个good;但是这个代码不严谨,题目数据不严所以过了,而且代码冗长,不推荐哦~十一月份写的,刚刚接触编程,写成这样我也算是满意了;
code2:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
int n;
char s[1005];
cin>>n;
while(n--)
{
int num=0;
char c;
while(~scanf("%s",s))
{
if(strcmp(s,"good")==0)
num++;
c=getchar();
if(c=='\n') break;
}
cout<<num<<endl;
}
return 0;
}
笔记:这个方法比起来就好多了,用的是scanf来进行输入,但是依旧不严谨,因为最后一个“good!”的话它是不算做good的,但是依旧能过;
code3:
#include <sstream>
#include <string>
using namespace std;
{
int n;
string s;
string in;
cin>>n;
cin.get();
while(n--)
{
getline(cin,in);
int len=in.size();
for(int i=0; i<len; i++)
{
if(!isalpha(in[i]))
in[i]=' ';
}
stringstream ss(in);
int ans=0;
while(ss >> s)
{
//cout<<s<<endl;
if(s=="good")
ans++;
}
cout<<ans<<endl;
}
return 0;
}