如何用C语言统计一个文档中每个字母的个数和出现的频率

就是用C语言实现~~~!注意是每个字母的个数和他们每个出现的频率~!还需要记录字母个数和频率都需要打印出来的~~!... 就是用C语言实现~~~!注意是每个字母的个数和他们每个出现的频率~!
还需要记录字母个数和频率都需要打印出来的~~!
展开
 我来答
tattackor
2015-06-09 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:857万
展开全部
  1. 用文件操作函数打开文件,挨着读入字符,统计每个字符出现了多少次,最后用每个字符出现的次数除以所有次数,得到出现频率。

  2. 例程:

    /*统计一个文件里各个字符出现的次数,这里只统计了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;
    }
户寻春2h
2009-09-12
知道答主
回答量:13
采纳率:0%
帮助的人:5.3万
展开全部
不就是比较每个字母出现的次数么,用一个循环从字母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()`函数将小写字母转化为大写字母,从而使程序不区分大小写。最后,程序遍历整个字符集,打印每个字符出现的次数。如果需要打印出现频率,只需在遍历时除以总字符数即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式