26个英文字母按使用频率的排序

如题... 如题 展开
 我来答
赫敏的校友
2008-05-18
知道答主
回答量:39
采纳率:0%
帮助的人:19.7万
展开全部
一、题目:统计字母的使用频率

二、功能描述

输入一个不包括空格的由英文字母组成的字符串,长度不超过200个字符。统计26个英文字母的使用频率,不区分大小写。最后按使用频率从大到小输出字母(小写字母)和使用频率(出现的次数)。

三、解决方案(流程图)

提示用户输入字母

获取字母,并存在数组c[]中

计算每个字母使用的次数,存在数组sum[]中

显示结果

字母排序

四、主要函数描述

void sort(char *a,int *sum) //定义函数 函数功能:排序

{

int i,j,k,temp1,temp2;

for(i=0;i<26;i++) //采用选择排序

{

for(j=i+1;j<26;j++)

{

if(sum[j]>sum[i])

{k=j;

temp1=a[i];temp2=sum[i];

sum[i]=sum[k];sum[k]=temp2;

a[i]=a[k];a[k]=temp1;}

}

}

}

void main()

{

char c[200];

int sum[26],i,j;

char a[26];

printf("1.欢迎使用字母频数统计程序\n");

printf("2.请输入字母~(^-^)~\n");

for(i=0;i<26;i++) //初始化数组

{ a[i]=i;

sum[i]=0;

}

for(i=0;(c[i]=getchar())!='\n';i++);//输入选项

c[i]='\0';

for(i=0;c[i]!='\0';i++)

{

if(c[i]>='A'&&c[i]<='Z') c[i]+=32; //大写字母转小写

sum[c[i]-'a']++;

}

sort(a,sum); //执行函数排序

for(j=0;j<26;j++)

{

printf("%c\t",a[j]+'a');

printf("%d",sum[j]);

printf("\n");

}

}

五、主要技术问题

1) 为统计字母的使用频率,定义一个长度为26的int数组存放所统计的各个字母的使用频率。

2) 在统计字母的使用频率时,不要使用if语句或switch语句,利用字母的ASCII码与数组元素下标之间的关系来求得。

3) 按使用频率从大到小进行排序时,建议使用指针数组更为方便。

六、结论

此次编程实现了统计字母的使用频率功能。

通过编程实现本题所述的功能,锻炼了我综合利用C语言进行程序设计的能力,熟悉了字符串的操作方法,加强了函数的运用,提高了软件系统分析能力和程序文档建立、归纳总结的能力。
格物敬知
2008-05-18 · TA获得超过2.3万个赞
知道大有可为答主
回答量:2317
采纳率:100%
帮助的人:2848万
展开全部
E是使用频率最高的,下面是英文字母使用频率表:(%)
A 8.19 B 1.47 C 3.83 D 3.91 E 12.25 F 2.26 G 1.71
H 4.57 I 7.10 J 0.14 K 0.41 L 3.77 M 3.34 N 7.06
O 7.26 P 2.89 Q 0.09 R 6.85 S 6.36 T 9.41
U 2.58 V 1.09 W 1.59 X 0.21 Y 1.58 Z 0.08

参考资料: http://zhidao.baidu.com/question/7200965.html

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式