该程序的输出是获取句子中的单词数,而不考虑问题中提到的空格数或任何符号。
以下是问题:
将给出一行英文文本,其中单词以1分隔 以下符号:
' ',' \ t','。',','和';'
每个单词可以与下一个和前一个单词分开 更多以下符号。你必须计算单词的数量 在句子中。
请注意,要读取输入,您必须阅读,直到EOF符号为止 阅读,如下例所示。
int main()
{
int c;
c = getchar();
while ( c != EOF ) {
c = getchar();
}
return 0;
}
注意:没有数组就可以解决这个问题,所以 线的最大长度并不重要。
一行英文文字,其中的单词彼此相隔一个或 更多出现的符号
' ',' \ t','。',','和';'
该行中的字数。
This is a sentence, it has words separated by spaces and fullstops.
12
我知道我必须使用问题中给出的格式,但我不知道如何使用它。
我只知道当单词只用单个空格或单个\ t分隔时,查找句子中单词数的程序。但是,我没有任何想法来解决这个问题。
答案 0 :(得分:1)
[one of delimiters]...[one of delimiters][not one of delimiters]...
^^ count this edge.
像这样
#include <stdio.h>
#include <stdbool.h>
bool IsDelimiter(char ch, const char *delimiters){
while(*delimiters)
if(*delimiters++ == ch)
return true;
return false;
}
int main(void){
bool prev_is_delmiter = true;
int ch, wc = 0;
while((ch = getchar()) != EOF && ch != '\n'){
bool current_is_delmiter = IsDelimiter(ch, " \t,.;");
if(prev_is_delmiter && !current_is_delmiter){
++wc;
}
prev_is_delmiter = current_is_delmiter;
}
printf("%d\n", wc);
}
答案 1 :(得分:0)
这是四个元素的简单应用。
以下代码显示了实现该功能的一种方法:
#include <stdio.h> // getchar(), EOF, printf()
int main( void )
{
int wordCount = 0;
int ch;
int inWord = 0;
while( (ch = getchar()) != EOF )
{
switch( ch )
{
case ' ':
case '\t':
case '.':
case ',':
case ';':
inWord = 0;
break;
default:
if ( !inWord )
{
wordCount++;
inWord = 1;
}
break;
} // end switch
} // end while
printf( "\n%d\n", wordCount );
return 0;
}