OJ之字母的争论

来源:互联网 发布:营销软件代理加盟 编辑:程序博客网 时间:2024/05/02 01:47
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作    者:刘佳琦 * 完成日期:2014年 12 月 27 日 * 版 本 号:v1.0 * * 问题描述:某一天,26个小写的英文字母争论了起来,它们都想当老大,闹得不可开交。这时逗比的小甲想到了一个好办法使它们平息了下来,规则是这样的:读入一行仅由小写英文字母组成的字符串,统计这26个小写英文字母在这串字符中出现的次数,谁出现的此数多谁就是老大。另外,没有出现在这串字符中的小写英文字母就只能甘拜下风了。虽然这种办法对有些字母有些不公平,但是大家还是硬着头皮接受了。那么好了,现在问题来了,聪明的 * 程序输入:一行仅由小写英文字母组成的字符串,不包含其他的各类字符。 * 程序输出:输出出现次数最多的字母和次数,如果出现次数相同则输出ASCII码大的 */#include<iostream>#include<cstdio>using namespace std;int main(){    char str[100];    int t,i,j,a[26]= {0},max=0;    gets(str);    for(i=0; str[i]!='\0'; ++i)    {        if(str[i]>='a'&&str[i]<='z')            a[str[i]-'a']++;    }    for(i=0;i<26;i++)    {    if(a[i]>max)    {    max=a[i];    t=i;    }    }    for(i=0; i<26; i++)    {        if(a[i]==max)        {            if(t<i)                t=i;        }    }    cout<<char(t+97)<<":"<<a[t];    return 0;}


运行结果:

知识点总结:

定义一个数组分别统计各个字母的个数并且比较大小,1~26分别代表字母a~z,把最大的复制给max,再从中找是否有相同数目的字母,比较ASCII码的大小,最后输出。

0 0