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
我想问一下用我的这种方法,为什么虽然测试数据能通过,但是放到评测系统里面进行评测,有些数据点无法通过?这种方法有什么问题?请多多指教!谢谢! 展开
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
我想问一下用我的这种方法,为什么虽然测试数据能通过,但是放到评测系统里面进行评测,有些数据点无法通过?这种方法有什么问题?请多多指教!谢谢! 展开
2个回答
展开全部
存在两个问题:
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);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询