To my CSDN

随笔——统计单词个数

要学会使用宏定义,善于使用宏定义可以让我们的程序阅读起来更加方便,逻辑更加清晰更易于理解。

BEGIN 表示开始统计单词
IN_WORD表示当前循环变量下标所指位置处于某一个单词中
OUT_WORD表示,结束上一个单词的遍历,代表可以对计数加一
END循环结束,在本程序中未使用


#include <ctype.h>
#define BEGIN	1
#define IN_WORD	2
#define OUT_WORD	3
#define EDF		4
int main()
{
	// 翻译:每一个新的日子都是一个机会,让你能变成更好的人。
	char str[] = { "Each new day is...it's a chance to be somebody better." };
	int i = 0;
	int num = 0;
	int tag = BEGIN;
	for (i = 0; str[i] != '\0'; ++i)
	{
		switch (tag)
		{
		case BEGIN:
			if (isalpha(str[i]))
			{
				tag = IN_WORD;
			}
			else
			{
				tag = OUT_WORD;
			}
			break;
		case IN_WORD:
			if (!isalpha(str[i]))
			{
				tag = OUT_WORD;
				num += 1;
			}
			break;
		case OUT_WORD:
			if (isalpha(str[i]))
			{
				tag = IN_WORD;
			}
			break;
		}
	}
	if (tag == IN_WORD)
	{
		num += 1;
	}

	printf("word size: %d \n", num);
	return 0;
}

输出:word size: 12

posted @ 2020-02-26 13:48  我叫RT  阅读(125)  评论(0编辑  收藏  举报