一、题目:统计字母的使用频率 二、功能描述:本程序的功能,就是要统计英文字母的使用频率。为统 计英文字母的使用频率c语言用什么定义字母,输入一个不包括空格的由英文字母 组成的字符串,长度不超过 200 个字符。统计 26 个英文字 母的使用频率,不区分大小写。最后按照使用频率从小到大 输出字母(小写字母)和使用频率(出现的次数) 。三、解决方案:第一步:将字符串中的大写字母转换为小写字母 第二步:统计输入的字符串中字母的使用频率。 第三步:按使用频率从大到小输出。四、主要函数描述:1)大小写转换:使用 strlwr(字符串)实现大写到小写换。 2)频率统计:使用一个一位数组和一个 for 循环实现字母出 现频率的统计。 3)排序及同步输出字母:利用冒泡排序法实现频率的排序 以及对应字母的输出,这是需要重新定义一个字符串数组。五、主要技术问题:1)为统计字母的使用频率,定义一个长度为 26 的 int 数组存放所统计的各个字母的使用频率。 2)在统计字母的使用频率时,不要使用 if 语句或 switch 语 句,利用字母的 ASCII 码与数组元素下标之间的关系求得。 3)在使用频率从大到小进行排序时,没有用指针数组法c语言用什么定义字母, 只是用了冒泡排序法。
六、结论(实验心得) :学会了巧用 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;m<26;m++) for(j=0;j<25-m;j++) if(n[j+1]>n[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<26;m++) printf("%c %d\n",h[m],n[m]); return 0; }
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-250229-1.html