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

时间:2023-03-08 23:27:24
【ACM小白成长撸】--计算单词个数

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

分情况

  • 当没有单词的时候

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

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

注意事项

  • 当输入组数时,最后回车输入缓冲区里面,gets会得到一个回车符号,所以为了消除缓冲区的回车,需要利用fflush函数
  • 当遇到最后一个‘\0’时,要在已有的words数目上加一,比如,"i love you",这儿有2个空格,不加一的话,words数目就2个,显然不符合要求。  
 /*程序的版权和版本声明部分:
*Copyright(c) 2016,电子科技大学本科生
*All rights reserved.
*文件名:ACM_UESTC_OJ60
*程序作用:统计单词个数
*作者:Amoshen
*完成日期:2016.9.26
*版本号:V1.0
*/ #include <stdio.h>
#include <stdlib.h> int main(void)
{
int i,m;
int j;//j为计数器
char *p;
char b[];
int a[]; scanf("%d",&i);
fflush(stdin);//清除缓冲区,避免到后面直接跳过gets for(m = ;m < i;m++)
{
gets(b); if(b[] == '\0')//当不输入任何单词时,最后有回车符号,排除此情况,gets不能读换行符,遇到'\0'结束输入
{
a[m] = ;
continue;
}
else
{
if(b[] == '\0')
{
a[m] = ;
free(p);
continue;
}
} p = b; for(j = ;;p++)
{
if((*p == ' ')&& (*(p - ) != ' ')&&(*(p + ) != ' '))
{
j = j + ;
}
if(*p == '\0'&& j != )
{
j = j + ;
a[m] = j;
break;
}
}
} for(m = ;m < i;m++)
{
printf("%d\n",a[m]);
} return ();
}