首页 > 代码库 > 【ACM小白成长撸】--计算单词个数

【ACM小白成长撸】--计算单词个数

我判断单词个数的方法,根据空格‘ ’的个数

分情况

  • 当没有单词的时候

        判断第一个符号,即a[0] == ‘\0’时,赋值给存储个数的数组

  • 当遇到空格时,只有前面一个字符不是空格字符,后面一个字符不是空格字符,才能判断一个word

 

注意事项

  • 当输入组数时,最后回车输入缓冲区里面,gets会得到一个回车符号,所以为了消除缓冲区的回车,需要利用fflush函数
  • 当遇到最后一个‘\0’时,要在已有的words数目上加一,比如,"i love you",这儿有2个空格,不加一的话,words数目就2个,显然不符合要求。  
 1 /*程序的版权和版本声明部分: 2 *Copyright(c) 2016,电子科技大学本科生 3 *All rights reserved. 4 *文件名:ACM_UESTC_OJ60 5 *程序作用:统计单词个数 6 *作者:Amoshen 7 *完成日期:2016.9.26 8 *版本号:V1.0 9 */10 11 #include <stdio.h>12 #include <stdlib.h>13 14 int main(void)15 {16     int i,m;17     int j;//j为计数器18     char *p;19     char b[100];20     int a[9999];21 22     scanf("%d",&i);23     fflush(stdin);//清除缓冲区,避免到后面直接跳过gets24 25     for(m = 0;m < i;m++)26     {27         gets(b);28 29         if(b[0] == \0)//当不输入任何单词时,最后有回车符号,排除此情况,gets不能读换行符,遇到‘\0‘结束输入30         {31             a[m] = 0;32             continue;33         }34         else35         {36             if(b[1] == \0)37             {38                 a[m] = 1;39                 free(p);40                 continue;41             }42         }43 44         p = b;45 46         for(j = 0;;p++)47         {48             if((*p ==  )&& (*(p - 1) !=  )&&(*(p + 1) !=  ))49             {50                 j = j + 1;51             }52             if(*p == \0&& j != 0)53             {54                 j = j + 1;55                 a[m] = j;56                 break;57             }58         }59     }60 61     for(m = 0;m < i;m++)62     {63         printf("%d\n",a[m]);64     }65 66     return (0);67 }

 

【ACM小白成长撸】--计算单词个数