请编写c语言程序统计英文文本的段落数、单词数、字符数和标点符号数,并输出统计结果。 提示: (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. 【样例输出】2 21 87 2
时间: 2023-12-06 17:39:43 浏览: 132
输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数(C语言代码)
以下是一个简单的实现,可以实现统计段落数、单词数、字符数和标点符号数的功能。注意,本程序对输入的文本格式有一定要求,每段之间必须用空行隔开。
```
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char buffer[1000]; // 用于存储输入文本的缓冲区
int paragraph_count = 0; // 段落数
int word_count = 0; // 单词数
int char_count = 0; // 字符数
int punctuation_count = 0; // 标点符号数
int in_paragraph = 0; // 是否在段落中
// 逐行读入文本
while (fgets(buffer, 1000, stdin) != NULL) {
// 如果读入的行是空行,说明当前段落结束
if (strcmp(buffer, "\n") == 0) {
if (in_paragraph) {
in_paragraph = 0;
paragraph_count++;
}
} else {
// 如果当前行不是空行,说明当前段落还在进行中
in_paragraph = 1;
int i = 0;
while (buffer[i] != '\0') {
char c = buffer[i];
if (isspace(c)) {
// 如果遇到空格或换行符,说明一个单词结束
word_count++;
} else if (isalpha(c)) {
// 如果遇到字母,说明一个字符结束
char_count++;
} else if (strchr(".,;:'\"-!?()", c) != NULL) {
// 如果遇到标点符号,统计标点符号数量
punctuation_count++;
}
i++;
}
}
}
// 输出统计结果
printf("%d %d %d %d\n", paragraph_count, word_count, char_count, punctuation_count);
return 0;
}
```
阅读全文