首页 > 代码库 > 【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小白成长撸】--计算单词个数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。