编程c语言-新手OJ, 找出字符串中出现最多的字母,本机运行正确, 但是wrong answer, 求大神指点

问题描述

新手OJ, 找出字符串中出现最多的字母,本机运行正确, 但是wrong answer, 求大神指点

Description

钟Sir是一个迷信的(superstitious)家伙。他相信每一个字符串(string)里都有一个幸运字符。我们可以通过以下方法找到这个字符。例如,在字符串abbccc中,c 出现的次数最多,所以这个幸运字符就是 c 啦!(>_<) ?(钟Sir的想法好简单啊…)

Input

第一行是测试数据的组数n,接下来的每组测试数据占一行,每行数据不超过1000个字符且非空。

字符串里只含小写字母。

Output

每组数据对应输出一行,包括出现次数最多的字符和该字符出现的次数,中间是一个空格。如果有多个字符出现的次数相同且最多,那么输出ASCII码最小的那一个字符。

Sample Input

2
abbccc
adfadffasdf

Sample Output

c 3
f 4
=====t===t

#include
#include
int main(void){
int n, g, i, z[28], max, xia;
char c[1050], ch;
scanf("%d", &n);
ch=getchar();
for(g=1; g<=n; g++){

for(i=0; i<=27; i++)
z[i]=0;

i=0;
while((c[i]=getchar())!=0&&c[i]!='n')
i++;

for(i=0; i<strlen(c); i++)
switch(c[i]){
case 'a': z[0]++; break;
case 'b': z[1]++; break;
case 'c': z[2]++; break;
case 'd': z[3]++; break;
case 'e': z[4]++; break;
case 'f': z[5]++; break;
case 'g': z[6]++; break;
case 'h': z[7]++; break;
case 'i': z[8]++; break;
case 'j': z[9]++; break;
case 'k': z[10]++; break;
case 'l': z[11]++; break;
case 'm': z[12]++; break;
case 'n': z[13]++; break;
case 'o': z[14]++; break;
case 'p': z[15]++; break;
case 'q': z[16]++; break;
case 'r': z[17]++; break;
case 's': z[18]++; break;
case 't': z[19]++; break;
case 'u': z[20]++; break;
case 'v': z[21]++; break;
case 'w': z[22]++; break;
case 'x': z[23]++; break;
case 'y': z[24]++; break;
case 'z': z[25]++; break;
}

max=z[0]; xia=0;
for(i=1; i<=25; i++)
if(z[i]>max){
max=z[i];
xia=i;
}

ch='a'+xia;
if(c[0]=='n')
printf("");
else
printf("%c %dn", ch, max);
}
return 0;
}

复制可运行。

解决方案

 #include <string.h>
#include"stdio.h"
int main(void)
{
    int n,i, z[26], max, xia;
    char c[1050], ch;

    scanf("%d",&n);
    while(n>0)
    {
        n--;
        scanf("%s", c);

        for(i=0; i<26; i++)
            z[i]=0;
        xia=strlen(c);

        for(i=0; i<xia; i++)
            z[c[i]-'a']++;

        max=z[0]; xia=0;
        for(i=1; i<=25; i++)
        if(z[i]>max){
            max=z[i];
            xia=i;
        }

        ch='a'+xia;
        printf("%c %dn", ch, max);
    }

    return 0;
}
时间: 2024-10-12 19:13:55

编程c语言-新手OJ, 找出字符串中出现最多的字母,本机运行正确, 但是wrong answer, 求大神指点的相关文章

c语言-VC++6.0开发工具,打开串口,重叠IO操作,提示有访问冲突,求大神指点

问题描述 VC++6.0开发工具,打开串口,重叠IO操作,提示有访问冲突,求大神指点 #include #include LRESULT CALLBACK WndProc (HWND hwnd UINT msg WPARAM wParam LPARAM lParam); #define WM_TRANSFINISHED (WM_USER + 1) typedef struct{ HWND hwnd; HANDLE hComm;}PARAMS *PPARAMS; int WINAPI WinMai

指针-新手OJ,C语言 去除字符串中的所有空格模块, 不知为何出错,求大神指点

问题描述 新手OJ,C语言 去除字符串中的所有空格模块, 不知为何出错,求大神指点 作用: 把数组a中的所有空格去除, 并把后面的往前移动.例如: a b c变成:abc 字符指针 *p *q 数组a[] for(p=&a[0]; p!=''; p++)if(*p==' ')for(q=p; *(q+1)!=''; q++)*q=(q+1); //去除a字符串中的空格 但总是不对, 求大神指点. 解决方案 #include<stdio.h>int main(){ char str[20

[华为机试练习题]61.找出字符串中第一个出现次数最多的字符

题目 描述: 找出字符串中第一个出现次数最多的字符 详细描述: 接口说明 原型: bool FindChar(char* pInputString, char* pChar); 输入参数: char* pInputString:字符串 输出参数(指针指向的内存区域保证有效): char* pChar:出现次数最多的字符 返回值: false 异常失败 true 输出成功 练习阶段: 初级 代码 /*--------------------------------------- * 日期:2015

JavaScript实现找出字符串中第一个不重复的字符_javascript技巧

此算法仅供参考,小菜基本不懂高深的算法,只能用最朴实的思想去表达. //找出字符串中第一个不重复的字符 // firstUniqueChar("vdctdvc"); --> t function firstUniqueChar(str){ var str = str || "", i = 0, k = "", _char = "", charMap = {}, result = {name: "",i

acm的c语言扫雷编程题目,求大神指点

问题描述 acm的c语言扫雷编程题目,求大神指点 解决方案 这是输出的部分,待会附上我的代码 解决方案二: 你是要找人代写,还是说代码需要debug? 解决方案三: 这是哪个acm平台呀,这个算法应该就是算临域,完后计数加加的吧 解决方案四: 问题出在最后和标准差个空格 #include #include #include int main(){ int c,b,i,j; int x=1; char a[1000][1000]; while(scanf("%d%d",&c,&a

c语言-菜鸟OJ, C语言数简单列求和, 感觉测试没错, 但是wrong answer, 求大神指点

问题描述 菜鸟OJ, C语言数简单列求和, 感觉测试没错, 但是wrong answer, 求大神指点 Description 有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13... 求出这个数列的前n项之和. Input 多测试用例,每个测试用例一行,每行是一个正整数n Output 为每个测试用例单独输出一行:该数列的前n项之和.结果均保留小数点后10位. Sample Input 1 2 3 Sample Output 2.0000000000 3.5000000000

Linux下网络编程read,write问题(C语言),求大神指点阿!!!

问题描述 Linux下网络编程read,write问题(C语言),求大神指点阿!!! zuijzuj.最近学习socket编程的时候调试代码出现了一些问题,求大神们指导阿!!!我要实现的功能是客户端输入两个操作数和一个运算符,在服务端进行运算再把结果返回到客户端.现在的bug是客户端输入第一个操作数的时候没问题,输入运算符的时候客户端可以通过write函数写入但是服务端读出的结果不是输入的运算符,客户端输入第二个操作数的时候write函数无法写入,这是缓冲区满了吗?缓冲区大小不是由内核自己决定的

c语言,自己编了个直接插入排序,可是却输出不了正确的结果,找不到哪里错了,求大神指点

问题描述 c语言,自己编了个直接插入排序,可是却输出不了正确的结果,找不到哪里错了,求大神指点 #include #include void Straightinsertionsort(int a[]) { int i,j,k; int b[10]={0}; b[0]=a[0]; for(i=1;i { for(j=i-2;j>=0;j--) { if(a[i]>b[j]) { for(k=i-2;k>j;k--) { b[k+1]=b[k]; } b[j+1]=a[i]; } } }

c语言编程-小白一枚!求大神指点如何学习C

问题描述 小白一枚!求大神指点如何学习C 如题,我之前学习过java现在也在从事这方面的工作,想学习c确不知道从哪里下手 解决方案 我给一个过来人的答案吧 虽说不适什么大牛,但是也有一些小小的体会! 上了大学才知道有编程!开始就接触c语言,但就是不知道c能干啥!然后就是玩玩单片机,本科偏硬件专业,所以单片机和c搞了搞!最后也没干出来啥明堂!后来学了数据结构,卧槽-一下子感觉c语言脑洞大开!体会真的不一样!再后来看Java,搞安卓开发到现在!越来越体会到c是必须要学的!我支持你学c!!!首先把语法