C语言统计单词数

来源:百度知道 编辑:UC知道 时间:2024/05/05 12:18:28
#include<stdio.h>
int main()
{
int T;
scanf("%d",&T);
getchar();
while(T--)
{
int sum,i,s=0,k=0;
scanf("%d",&sum);
getchar();
char ch[100];
gets(ch);
for(i=0;ch[i]!='\0';i++)
{
if(ch[i]!=' ')
s++;
if(ch[i+1]==' '||ch[i+1]=='\0')
{
if(s==sum)
k++;
s=0;
}
}
printf("%d\n",k);
}
return 0;
}

题目如下:
Problem Description

输入1行长度不超过80的英文文本,统计该文本中长度为n的单词总数(单词之间只有一个空格)。(参看 Sample Output )。

Input

输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据.
每组数据首先是1个正整数n(1<=n<=50),然后是1行长度不超过80的英文文本(只含英文字母和空格)。

Output

对于每一组数据,输出长度为n的单词总数。

注意:不要忘记在输入一行文本前吸收回车换行符。

Sample Input
3
5
hello world
5
acm is a hard game
3
acm is

给你提供一个库函数
相信不难解决
char *strtok(char *s, char *delim);
http://baike.baidu.com/view/1028553.htm

int main()
{
int T;
scanf("%d",&T);
getchar();
while(T--)
{
int sum,i,s=0,k=0;
scanf("%d",&sum);
getchar();
char ch[100];
gets(ch);
for(i=0;ch[i]!='\0';i++)
{
if(ch[i]!=' ')
s++;
if(ch[i+1]==' '||ch[i+1]=='\0')
{
if(s==sum)
k++;
s=0;
}
if (ch[i]==' ')//s清零
s = 0;
}
printf("%d\n",k);
}
return 0;
}