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