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

#include<stdio.h>main(){charch;intcount=1;do{ch=getchar();if(ch=='')count++;}while(ch... #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

我想问一下用我的这种方法,为什么虽然测试数据能通过,但是放到评测系统里面进行评测,有些数据点无法通过?这种方法有什么问题?请多多指教!谢谢!
展开
 我来答
墨夷欣笑Lf
推荐于2017-12-16 · TA获得超过839个赞
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:75.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> ,代码没有测试过,不一定要采纳我,我是来学习的。

bignode
2014-12-07 · TA获得超过2664个赞
知道大有可为答主
回答量:1427
采纳率:75%
帮助的人:553万
展开全部
是否存在连续多个空格的情况(程序中没考虑)?是否存在以非空格分隔单词的情况(比如,;!.... 等,程序中没考虑)?
另外相同的单词只算一个,还是出现几次算几个?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式