输入一个文本。统计文本中一共有几个英文字母。
输入包含若干行,每行是一个英文句子,包含大小写字母、空格和标点符号,每行的总字符数不超过2000。输入一直到EOF结束。
输出仅有一个数字,表示输入中英文字母(包含大小写)的总数。
此题不同于前面几题的地方在于一直到输入结束后才输出结果,而输入又要到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;
}
#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;
}