如何用C语言统计一个文档中每个字母的个数和出现的频率
就是用C语言实现~~~!注意是每个字母的个数和他们每个出现的频率~!还需要记录字母个数和频率都需要打印出来的~~!...
就是用C语言实现~~~!注意是每个字母的个数和他们每个出现的频率~!
还需要记录字母个数和频率都需要打印出来的~~! 展开
还需要记录字母个数和频率都需要打印出来的~~! 展开
3个回答
展开全部
用文件操作函数打开文件,挨着读入字符,统计每个字符出现了多少次,最后用每个字符出现的次数除以所有次数,得到出现频率。
例程:
/*统计一个文件里各个字符出现的次数,这里只统计了26个字母,如果还有更多的字符的话,将数组再扩大就行了*/
#include<stdio.h>
#include<math.h>
void stat(char *file,int *statistic)
{
int i=0;
while(file[i++]!=0)
statistic[file[i-1]-97]++;
}
int main()
{
char file[100]={0};
int statistic[26]={0};
int i=0,j;
double s=0;
FILE *fp;
if((fp=fopen("1.txt","r"))==NULL)
{
printf("can't open 1.txt");
return 1;
}
while(!feof(fp))
fread(&file[i++],1,1,fp);
fclose(fp);
j=i;
stat(file,statistic);
for(i=0;i<26;i++)
printf("%c:%d\n",97+i,statistic[i]);
return 0;
}
展开全部
不就是比较每个字母出现的次数么,用一个循环从字母A循环到字母Z,再用一个循环从第一个字母比较到最后一个字母看有几次相等的就可以
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2023-05-18
展开全部
以下是用C统计文档中每个字母的个数和出现频率的代码示例:```c#include \u003cstdio.h\u003e#include \u003cctype.h\u003e#define MAX_SIZE 128int main(){ char filename[100]; FILE *fp; int i, ch, freq[MAX_SIZE]; for (i = 0; i \u003c MAX_SIZE; i++) { freq[i] = 0; } printf(\"请输入要统计的文件的路径:\"); scanf(\"%s\", filename); fp = fopen(filename, \"r\"); if (fp == NULL) { printf(\"文件打开失败!\"); return 1; } while ((ch = fgetc(fp)) != EOF) { if (isalpha(ch)) { freq[toupper(ch)]++; } } fclose(fp); for (i = 65; i \u003c= 90; i++) { // 打印出现频率 printf(\"%c: %d\\", i, freq[i]); } return 0;}```该程序首先定义了常量`MAX_SIZE`,用于定义字符集的大小。然后,定义了整型数组`freq`,用于记录每个字符出现的次数。接下来,通过用户输入文件名,打开文件,并逐个读取文件中的字符。如果读到了字母,则将该字母的出现次数加一,这里用到了`toupper()`函数将小写字母转化为大写字母,从而使程序不区分大小写。最后,程序遍历整个字符集,打印每个字符出现的次数。如果需要打印出现频率,只需在遍历时除以总字符数即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询