UVA 494 Kindergarten Counting Game

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

// 错误思路一:用gets,空间不确定
//int main ()
//{
//	char s[100000];
//	while (gets(s))
//	{
//		int n = strlen(s);
//		int k = 0;
//		int index_i = 0;
//		for (int i=0; i<n; i++)
//		{
//			if (s[i] == ' ' || i == n-1)
//			{
//				if (s[index_i] >= 'A' && s[index_i] <= 'Z' ||
//					s[index_i] >= 'a' && s[index_i] <= 'z')
//				{
//					k++;
//				}
//				index_i = i+1;
//			}
//		}
//		cout << k << endl;
//	}
//	return 0;
//}

//错误思路二:遇到字母且flag标志为false时标记flag为true,
//然后遇到空格或回车且flag为true时算作一个单词,再将flag置为false
//错误原因分析:[由特殊情形导致]:对于and/or 这个正确答案算作是2个单词,而此程序算作1个单词,
//由此把else if (c == ' ')里的内容写到下面的else 里可以AC
//int main ()
//{
//	char c;
//	bool flag = false;
//	int k = 0;
//	while ((c = getchar()) != EOF)
//	{
//		if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
//		{
//			if (!flag) flag = true; 
//		}
//		else if (c == ' ')
//		{
//			if (flag) 
//			{
//				k++;
//				flag = false;
//			}
//		}
//		else if (c == '\n')
//		{
//			if (flag) 
//			{
//				k++;
//			}
//			flag = false;
//			cout << k << endl;
//			k = 0;
//		}
//		else
//		{
//			;
//		}
//	}
//	return 0;
//}

// 正确思路:遇到第一个字母,且flag为false时算为一个单词(即只要首字符是字母的都算一个单词),其他情况都置false
int main ()
{
	char c;
	bool flag = false;
	int k = 0;
	while ((c = getchar()) != EOF)
	{
		if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
		{
			if (!flag)
			{
				flag = true;
				k++;
			}
		}
		else if (c == '\n')
		{
			flag = false;
			cout << k << endl;
			k = 0;
		}
		else
		{
			flag = false;
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值