在文章撰写中,经常需要统计文本的段落数、单词数、字符数和标点符号数。请编写程序统计英文文本的段落数、单词数、字符数和标点符号数,并输出统计结果。 提示:(1)统计字符数时不统计空格; (2)统计英文标点符号时只统计11种,.;'":-!?() (3)统计段落时,空行不计算 【输入形式】如果若干段英文文本。【样例输入】 【输出形式】依次输出英文文本中的单词数、字符数和标点符号数,用空格分开。 We need a way to ingest whatever data we have at hand We somehow need to define the deep learning machine .【样例输出】221872 【样例说明】上述英文中有2个段落,21个单词,87个字符,2个标点符号。c语言
时间: 2024-02-15 07:01:59 浏览: 186
C++统计中英文大小写字母、数字、空格及其他字符个数的方法
以下是C语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAX_LEN 10000 // 文本最大长度
int main() {
char text[MAX_LEN];
int word_count = 0, char_count = 0, punct_count = 0, para_count = 0;
int i, len;
// 读入文本
fgets(text, MAX_LEN, stdin);
len = strlen(text);
// 统计单词数、字符数和标点符号数
for (i = 0; i < len; i++) {
if (isspace(text[i])) { // 遇到空格,单词数加1
word_count++;
} else if (ispunct(text[i])) { // 遇到标点符号,标点符号数加1
if (strchr(".;':\"-!?()", text[i]) != NULL) {
punct_count++;
}
} else { // 遇到字符,字符数加1
char_count++;
}
}
word_count++; // 最后一个单词没有空格结尾
// 统计段落数
para_count = 1; // 第一段不算空行
for (i = 0; i < len - 1; i++) {
if (isspace(text[i]) && isspace(text[i+1])) { // 遇到连续两个空格,表示空行
para_count++;
}
}
// 输出统计结果
printf("%d %d %d\n", word_count, char_count, punct_count);
printf("%d\n", para_count);
return 0;
}
```
代码逻辑如下:
1. 定义一个长度为 MAX_LEN 的字符数组 `text`,用于存储输入的文本;
2. 读入文本,使用 `fgets` 函数,可以读入空格和换行符;
3. 遍历文本,统计单词数、字符数和标点符号数;
4. 遍历文本,统计段落数,根据空行的定义,判断是否遇到连续两个空格;
5. 输出统计结果,注意最后一个单词没有空格结尾。
注意:这里的空格指的是空格字符,包括空格、制表符和换行符。
阅读全文