请使用C/C++编写字母统计程序。要求统计给定(英文)文本文件中,各个字母出现的个数,以及单词个数和P(p)开头的单词数
时间: 2024-06-02 19:13:55 浏览: 110
#include <stdio.h>
#include <ctype.h>
int main() {
FILE *fp;
char filename[100], c;
int letter_count[26] = {0};
int word_count = 0, p_word_count = 0;
int in_word = 0;
// 获取文件名
printf("请输入要统计的文件名:");
scanf("%s", filename);
// 打开文件
fp = fopen(filename, "r");
if (fp == NULL) {
printf("文件打开失败!\n");
return 1;
}
// 逐个读取字符并统计
while ((c = fgetc(fp)) != EOF) {
if (isalpha(c)) { // 如果是字母
c = tolower(c); // 统一转为小写
letter_count[c - 'a']++; // 统计该字母出现次数
if (!in_word) { // 如果不在单词中
in_word = 1; // 进入单词
word_count++; // 单词数+1
if (c == 'p') { // 如果单词以P(p)开头
p_word_count++; // P(p)开头单词数+1
}
}
} else { // 如果不是字母
in_word = 0; // 退出单词
}
}
// 输出结果
printf("各个字母出现的个数:\n");
for (int i = 0; i < 26; i++) {
printf("%c: %d\n", 'a' + i, letter_count[i]);
}
printf("单词个数:%d\n", word_count);
printf("以P(p)开头的单词数:%d\n", p_word_count);
// 关闭文件
fclose(fp);
return 0;
}
阅读全文