97]++;Рelse Рif(s[i]>='A'&&s[i]<='Z') Рnum[s[i]-65]++;Р }Рprintf("文本文件中各字符(不区分大小写)数量:\n");Рfor(j=0; j<26; j++)Р{ РM[j]=num[j]; Рprintf("%4c:%d\t",j+65,M[j]);?/*输出格式,%3c在该字符前在空三个空格*/РL++; Рif(L==5) /*输出格式,每行五个字母*/Р{Рprintf("\n");РL=0;Р} Р} Рprintf("空格:%d\t",num[26]); Р/*****计算各个字母、空格出现概率****/ Рprintf("\n文本文件中各个字符概率:\n");Рfor(i=0; i<26; i++)Р{ Рp[i]=(double)num[i]/strlen(s); printf("%3c:%f\t",i+65,p[i]);Рn++;Рif(n==5) /*输出格式,每行五个字母概率*/Р{ Рprintf("\n");Рn=0;Р}Р} Рp[26]=(double)num[26]/strlen(s);Рprintf("空格:%f\t",p[26]);Рprintf("\n"); Р/**********计算信源熵**********/ Рfor(i=0; i<27; i++) Р{ Рif (p[i]!=0) Рresult=result+p[i]*log(p[i])*1.433;/*信源熵,I(x)=-logp(x)*/Р} Рresult=-result; Рprintf("信源熵为:%f",result); Рprintf("\n");Рreturn 0; Р} Р香农编码Р#include <stdio.h> Р#include <math.h> Р#include <stdlib.h>