function does not take parameters.c语言题目,统计字母个数
#include<stdio.h>
void small();
void number();
void paixv();
void main()
{
char a[200];
gets(a);
small(a);
int b[25];
number(a,b);
paixv(b);
}
void small(char a[])
{
int i;
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='A'&&a[i]<='Z')
a[i]=+32;
}
}
void number(char a[],int b[])
{
int i,t=0;
for(i=0;i<26;i++)
{
for(t=0;a[t]!='\0';t++)
if(a[t]-97==i)
b[i]=+1;
}
}
void paixv(int b[])
{
int d,k,j;
for(d=0;d<24;d++){
k=d;
for(j=d+1;j<25;j++)
if(b[j]>b[k])
k=j;
printf("%c %d\n",k+97,b[k]);
b[k]=-1;
}
}
追问:排序的同时,还要知道数字所对应的字母b[0]里原来对应的是a,但排序后变成字母频率最高的字母为b[0],就不知道所对应的字母了
其他:排序思路(从大到小):
假如现在有一组数: b[0]: 2,b[1]:4,b[2]:1,b[3]:8,b[4]:9
我们要做的工作是:
第一步:比较b[0] 和b[1] 如果b[1]大,交换 b[0] 和b[1] 的值,否则什么也不做,目的是保证前边的数比较大。因为我们做的是从大到小的排序,反之则要保证前边的比较小。
第二步:b[0] 和b[2]比较,同样的操作
...
一直到 b[0] 和b[4] 结束一遍循环,此时,b[0]中的数已经是这组数中最大的了。
第三步: 让b[1] 和后边的数依次比较
...
代码:
int b[5]={2,4,1,8,9},tmp,i,j;
for(i=0;i<5;i++)
for(j=i+1;j<5;j++)
{
if(b[i]<b[j])
{
tmp=b[i];b[i]=b[j];b[j]=tmp;
}
}
上一个:C语言编程 三个整数求最大值
下一个:关于结构体字节对齐