请编写c语言程序统计英文文本的段落数、单词数、字符数和标点符号数,并输出统计结果。 提示:(1) 统计字符数时不统计空格; (2) 统计英文标点符号时只统计11种 , . ; ' " : - ! ? ( ) (3) 统计段落时,空行不计算
时间: 2023-12-06 19:39:45 浏览: 87
以下是一个简单的 C 语言程序,可以实现对英文文本的段落数、单词数、字符数和标点符号数的统计。
```c
#include <stdio.h>
#include <ctype.h>
#define MAX_LINE 1000
int main() {
int c, words = 0, chars = 0, parag = 0, puncts = 0;
char line[MAX_LINE];
int in_word = 0, in_parag = 0, in_punct = 0;
while ((c = getchar()) != EOF) {
chars++;
if (c == '\n') {
if (in_parag) {
parag++;
}
in_parag = 0;
} else {
in_parag = 1;
}
if (isspace(c)) {
in_word = 0;
} else if (!in_word) {
in_word = 1;
words++;
}
if (c == ',' || c == '.' || c == ';' || c == '\'' || c == '\"' || c == ':' || c == '-' || c == '!' || c == '?' || c == '(' || c == ')') {
in_punct = 1;
puncts++;
} else {
in_punct = 0;
}
}
if (in_parag) {
parag++;
}
printf("段落数:%d\n", parag);
printf("单词数:%d\n", words);
printf("字符数(不含空格):%d\n", chars - words + 1);
printf("标点符号数:%d\n", puncts);
return 0;
}
```
该程序使用了 getchar() 函数来逐个读取输入的字符,并根据各种条件对其进行分类统计。其中,in_word、in_parag 和 in_punct 均为标志位,用于标记当前是否处于单词、段落或标点符号的内部。isspace() 函数可以判断一个字符是否为空白字符,而标点符号则可以直接通过比较字符值来判断。
在程序结束后,我们可以通过 printf() 函数输出统计结果,以便查看。
阅读全文