C语言统计字母使用频率
一、题目:统计字母的使用频率
二、功能描述:
本程序的功能,就是要统计英文字母的使用频率。为统计英文字母的使用频率,输入一个不包括空格的由英文字母组成的字符串,长度不超过200个字符。统计26个英文字母的使用频率,不区分大小写。最后按照使用频率从小到大输出字母(小写字母)和使用频率(出现的次数)。
三、解决方案:
第一步:将字符串中的大写字母转换为小写字母 第二步:统计输入的字符串中字母的使用频率。 第三步:按使用频率从大到小输出。
四、主要函数描述:
1)大小写转换:使用strlwr (字符串)实现大写到小写换。
2)频率统计:使用一个一位数组和一个for 循环实现字母出现频率的统计。
3)排序及同步输出字母:利用冒泡排序法实现频率的排序以及对应字母的输出,这是需要重新定义一个字符串数组。
五、主要技术问题:
1)为统计字母的使用频率,定义一个长度为26的int 数组
存放所统计的各个字母的使用频率。
2)在统计字母的使用频率时,不要使用if 语句或switch 语句,利用字母的ASCII 码与数组元素下标之间的关系求得。
3)在使用频率从大到小进行排序时,没有用指针数组法,只是用了冒泡排序法。
六、结论(实验心得):
学会了巧用ASCII 码实现频率统计,冒泡排序。同步排序。
七、程序及结果:
#include
int main()
{
char c[200];
gets(c);
strlwr(c);
int n[26]={0};
char
h[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int i,m,j,t,l;
for(i=0;c[i]!='\0';i++)
{
m=c[i]-'a'; n[m]+=1; }
for(m=0;mn[j]) {t=n[j+1];
n[j+1]=n[j];
n[j]=t;
l=h[j+1];
h[j+1]=h[j];
h[j]=l;
}
for(m=0;m
printf("%c %d\n",h[m],n[m]); return 0;
}