当前位置:首页 > 统计字母的使用频率c语言实现
字母频率计1
#include
main() {
int x; //数组下标变量,详情看代码 int max; //出现频率最高的字母
int char_count[26]; //26个字母出现字数的统计 char c;
/*将数组初始化,因为我们还没有输入嘛,所以a~z都为0啦*/ for( x= 0; x < 26; x++) {
char_count[x] = 0; }
while((c = getchar()) != EOF) {
if(isalpha(c)) /*详情见文末*/ {
c = tolower(c); //大写转换为小写 ++char_count[c-'a']; } }
max = 0; //初始化
/*找出出现频率最高的字母*/ for(x = 0; x < 26; x++) {
if(char_count[x] > max) {
max = char_count[x]; printf(\ } }
/*打印直方图*/
for(; max > 0; max--) {
for(x = 0; x < 26; x++) {
if(char_count[x] >= max) {
putchar('x'); } else
putchar(''); }
putchar('\\n'); }
/*打印下标,即abcdefghijklml....*/ for(x = 0; x < 26; x++) {
putchar('a'+x); }
return 0; }
字母频率计2
#include
void main() {
char ch; //ch用来每次接收一个字符
int i,s[26]={0}; //数组s[]用来统计每个小写字母的个数
printf(\
scanf(\
while(ch!='\\n') //输入一行字符,以回车键结束
{
if(ch>'A'&&ch<'Z') //遇到大写字母时,转换成小写来处理 ch+=32;
s[ch-'a']++; //0~25对应a~z scanf(\}
printf(\
for(i=0;i<26;i++)
if(s[i]) //只输出输入过的字母统计
printf(\
//(char)(i+'a')用强制类型转换,输出对应字母 }
字母频率计3
《统计字母的使用频率》实验报告
一、问题描述:
为统计英文字母的使用频率,输入一个不包括空格的由英文字母组成的字符串,长度不超过200个字符。统计26个英文字母的使用频率,不区分大小写。最后按使用频率从大到小输出字母(小写字母)和使用频率(出现次数)。
二、程序设计的基本思想,原理和算法描述:
定义一个将大写字母转化为小写字母的函数:char alphabet(char y) 程序的代码:定义三个数组a[200],b[26],c[26] 并把c[26]赋初值0 定义变量x,i,j,k 输入英文字符串 将大写字母改写成小写字母 统计每个字母的个数,存在数组c[26]中 将26个字母赋值给b[26] 比较字母个数大小,个数多的排到前面 按频率大小输出字母和频率 结束
三、源程序及注释: #include\#include\void main()
{ char alphabet(char y);//声明alphabet函数 char a[200],b[26];//a表示输入的字母,b表示26个字母 int c[26]={0};//c代表字母出现的次数 char x; int i,j,k; printf(\请输入一个不包括空格的英文字符串:\\n\ scanf(\输入字符;gets(a),可以有空格 for(i=0;i<200;i++)//将大写字母改成小写字母 a[i]=alphabet(a[i]); for(j=0,x='a';j<26;j++,x++)//统计每个字母个数 for(i=0;i<200;i++) if(a[i]==x) c[j]++; for(k=0;k<26;k++)//将26个字母赋值给b b[k]='a'+k; for(i=0;i<25;i++)//比较字母个数大小,个数多的排到前面 for(j=25;j>i;j--) if(c[j]>c[j-1]) { k=c[j-1];
共分享92篇相关文档