HZNUOJ

Input-Output Lecture (7) for ACM Freshman

Tags:   正则表达式    字符串模拟  EOF结束
Time Limit:  1 s      Memory Limit:   32 MB
Submission:1397     AC:1114     Score:37.81

Description

输入一个文本。统计文本中一共有几个英文字母。

Input

输入包含若干行,每行是一个英文句子,包含大小写字母、空格和标点符号,每行的总字符数不超过2000。输入一直到EOF结束。

Output

输出仅有一个数字,表示输入中英文字母(包含大小写)的总数。

Samples

input
I am an ACMer. My school is HZNU. I love them, and love you, too!
output
46

Hint

此题不同于前面几题的地方在于一直到输入结束后才输出结果,而输入又要到EOF时才结束。如果不结束,则无法在调试过程中查看输出结果。因此我们需要模拟文件结束,在调试过程中。EOF可以通过按Ctrl+Z来实现。另外,gets和getline在遇到EOF时的返回值与cin一样,都是0。
C语言版:

#include<stdio.h>
#include<ctype.h>
#include<string.h>
int main() {
	char line[2002];
	int i, len, cnt = 0;
	while (gets(line)) {
		len = strlen(line);
		for (i = 0; i<len; i++) {
			if (isalpha(line[i])) cnt++;
		}
	}
	printf("%d\n", cnt);
	return 0;
}

C++版:
#include<iostream>
#include<cctype>
#include<string>
using namespace std;
int main() {
	string line;
	int cnt = 0;
	while (getline(cin, line)) {
		int len = line.length();
		for (int i = 0; i<len; i++) {
			if (isalpha(line[i])) cnt++;
		}
	}
	cout << cnt << endl;
	return 0;
}

Author

CHEN, Yupeng