c语言 统计一个英文句子中的单词个数

#include<stdio.h>
main()
{
char ch;
int count=1;
do{
ch=getchar();
if(ch==' ')count++;
}while(ch!='.');
printf("%d",count);
return 0;
}

题目描述:输入任意一句英文句子, 以“.”结束,统计句子中出现的单词数。
输入:输入任意一句英文句子, 以“.”结束
输出:一行:单词个数
样例输入:Where there is will, there is a way.

样例输出:8

我想问一下用我的这种方法,为什么虽然测试数据能通过,但是放到评测系统里面进行评测,有些数据点无法通过?这种方法有什么问题?请多多指教!谢谢!

存在两个问题:

1、单词与单词之间的空格不止一个,如there   is

2、单词与单词之间只有标点符号分隔,没有空格,如will,there


建议可使用 char *strtok(char s[], const char *delim); 函数

例如:

char a[] = "Where there is will, there is a way.";
char *p = strtok(a, " ,.!");
int count = 0;
if (p != NULL)
{
   ++count;
   printf("%d:%s\n", count, p);
}
while ((p = strtok(NULL, " ,.!")) != NULL)
{
   ++count;
   printf("%d:%s\n", count, p);
}

//包含<string.h> <stdio.h> ,代码没有测试过,不一定要采纳我,我是来学习的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-07
是否存在连续多个空格的情况(程序中没考虑)?是否存在以非空格分隔单词的情况(比如,;!.... 等,程序中没考虑)?
另外相同的单词只算一个,还是出现几次算几个?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网