302班

java突击队
posts - 151, comments - 74, trackbacks - 0, articles - 14
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

计算一段文本的单词数

Posted on 2007-07-06 23:49 停留的风 阅读(426) 评论(0)  编辑  收藏 所属分类: C语言学习历程

为了使得程序更加灵活,我们将不限制用户输入的行数。因此,我们需要找到一种方式,用于通知程序用户已经完成输入。有一个简单的方法可以完成这个任务,那就是当用户输入最后一行文字以后,再额外加一个空行。当我们使用readLine()函数读取这个额外的空行时,程序将在用作缓冲区的数组的第一个位置上存储一个空字符。我们程序可以专门检查这种特殊的情况,并由此得知用户已经完成了输入。
#include <stdio.h>

//判断是否是字母
bool alphabetic(const char c)
{
  if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
  {
    return true;
  }
  else
   return false;
}
//计算单词的个数
int countWords(const char string[])
{
   int i,wordCount=0;
   bool lookingForWord=true,alphabetic(const char c);

   for(i=0;string[i]!='\0';++i)
   {
     if(alphabetic(string[i]))
  {
    if(lookingForWord)
    {
      wordCount++;
   lookingForWord=false;
    }    
  }
  else
   lookingForWord=true;
   }
   return wordCount;
}

//得到一个字符串
void readLine(char buffer[])
{
  char character;
  int i=0;
  do
  {
    character=getchar();
 buffer[i]=character;
 ++i;
  }while(character!='\n');

  buffer[i-1]='\0';
}

int main(void)
{
  char text[81];
  int totalWords=0;
  void readLine(char buffer[]);
  bool endOfText=false;

  printf("Type in your text.\n");
  printf("When you are done,press'RETURN'.\n\n");

  while(!endOfText)
  {
    readLine(text);
 if(text[0]=='\0')
 {
     endOfText=true ;
 }
 else
 totalWords+=countWords(text);
  }

  printf("\nThere are %i words in the above text.\n",totalWords);
  return 0;
}

测试运行图:

只有注册用户登录后才能发表评论。


网站导航: