当前位置:编程学习 > C/C++ >>

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语言编程 三个整数求最大值
下一个:关于结构体字节对齐

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,