编写程序,输入一句话,要求将这句话中所有的字母都变成大写字母并打印输出,然后再打印输出出现次数最多的字母及其出现的次数(次数一样的情况下,仅输出字母顺序的第一个最大值的字母信息即可)。
输入格式:
输入一句话(最多80个字符)。
输出格式:
将这句话中所有的字母都变成大写字母并打印输出,然后再打印输出出现次数最多的字母及其出现的次数(次数一样的情况下,仅输出字母顺序的第一个最大值的字母信息即可)
输入样例:
Which question do you like? 1, 2 or 3?
输出样例:
WHICH QUESTION DO YOU LIKE? 1, 2 OR 3?
O:4
一步一步的进行编写,难度在"仅输出字母顺序的第一个最大值的字母信息即可"
#include <stdio.h>
int main()
{
char ch[1000]; //题目中给的是80字符,但是多多益善,防止pta节点错误
int c[26]={0}; //设置一个计数数组,并置零,一个空保存一个字母的数量
gets(ch);
int i,max,flag[26]={0},j; //注意flag数组
for (i=0;ch[i] != 0;i++) //检查大小写,并转换,其实可以考虑string.h中的strupr
{
if (ch[i]>='a' && ch[i]<='z')
ch[i]=ch[i]-32;
}
for (i=0;ch[i] != 0;i++) //存入计数数组
{
if (ch[i]>='A' && ch[i]<='Z')
c[ch[i]-'A']++;
}
max=c[0];
j=0;
for (i=0;i<26;i++) //查找数量最多的字母的数量
{
if (c[i] > max)
max = c[i];
}
for (i=0;i<26;i++) //列出和数量最多的字母一样的数量的字母
{ //然后保存在flag,因为是i++的形式判断并保存
if (c[i]==max) //所以flag[0]存的字母就是最大的位置
{ //即题中所给(输出字母顺序的第一个最大值的字母信息)
flag[j]=i;
j++;
}
}
puts(ch);
printf("%c:%d",'A'+flag[0],max); //注意%c的输出
}