数目字母出现个数
数字母出现个数
字母统计
时间限制:3000 ms | 内存限制:65535 KB
难度:1
描述
现在给你一个由小写字母组成字符串,要你找出字符串中出现次数最多的字母,如果出现次数最多字母有多个那么输出最小的那个。
输入
第一行输入一个正整数T(0<T<25)
随后T行输入一个字符串s,s长度小于1010。
输出
每组数据输出占一行,输出出现次数最多的字符;
样例输入
3
abcd
bbaa
jsdhfjkshdfjksahdfjkhsajkf
样例输出
a
a
j
#include<stdio.h>
#include<string.h>
int main()
{
int t,k=0,i,j,max,len,l[26]={0};
char s[1010];
scanf("%d",&t);
getchar();
while(t--)
{
gets(s);
len=strlen(s);
for(i=0;i<len;i++)
{
j=s[i]-'a';
l[j]++;
}
max=l[0];
for(i=0;i<26;i++)
{
if(l[i]>max)
{
max=l[i];
k=i;
}
}
printf("%c\n",'a'+k);
}
return 0;
}
这是我写的代码,不知怎么就通过不了。。求解
------解决方案--------------------

------解决方案--------------------
你没有调试吧
代码逻辑是对的,不过数组重复使用,没有清0,上次的数据还都保留着。这是自己挖坑自己跳啊。
你把计算部分程序,写成函数。然后循环调用,就没有这个问题了。
字母统计
时间限制:3000 ms | 内存限制:65535 KB
难度:1
描述
现在给你一个由小写字母组成字符串,要你找出字符串中出现次数最多的字母,如果出现次数最多字母有多个那么输出最小的那个。
输入
第一行输入一个正整数T(0<T<25)
随后T行输入一个字符串s,s长度小于1010。
输出
每组数据输出占一行,输出出现次数最多的字符;
样例输入
3
abcd
bbaa
jsdhfjkshdfjksahdfjkhsajkf
样例输出
a
a
j
#include<stdio.h>
#include<string.h>
int main()
{
int t,k=0,i,j,max,len,l[26]={0};
char s[1010];
scanf("%d",&t);
getchar();
while(t--)
{
gets(s);
len=strlen(s);
for(i=0;i<len;i++)
{
j=s[i]-'a';
l[j]++;
}
max=l[0];
for(i=0;i<26;i++)
{
if(l[i]>max)
{
max=l[i];
k=i;
}
}
printf("%c\n",'a'+k);
}
return 0;
}
这是我写的代码,不知怎么就通过不了。。求解
c
字母
记数
------解决方案--------------------
#include<stdio.h>
#include<string.h>
int main()
{
int t,k=0,i,j,max,len;
char s[1010];
scanf("%d",&t);
getchar();
while(t--)
{
l[26]={0}//把这个数组初始化放在这里面貌似就好了
gets(s);
len=strlen(s);
for(i=0;i<len;i++)
{
j=s[i]-'a';
l[j]++;
}
max=l[0];
for(i=0;i<26;i++)
{
if(l[i]>max)
{
max=l[i];
k=i;
}
}
printf("%c\n",'a'+k);
}
return 0;
}
------解决方案--------------------
你没有调试吧
#include<stdio.h>
#include<string.h>
int main()
{
int t,k=0,i,j,max,len,l[26]={0};
char s[1010];
scanf("%d",&t);
getchar();
while(t--)
{
memset (l,0,sizeof (l));//每次清0,或者改在这里定义int l[26]={0};
gets(s);
len=strlen(s);
for(i=0;i<len;i++)
{
j=s[i]-'a';
l[j]++;
}
max=l[0];
for(i=0;i<26;i++)
{
if(l[i]>max)
{
max=l[i];
k=i;
}
}
printf("%c\n",'a'+k);
}
return 0;
}
代码逻辑是对的,不过数组重复使用,没有清0,上次的数据还都保留着。这是自己挖坑自己跳啊。
你把计算部分程序,写成函数。然后循环调用,就没有这个问题了。
#include<stdio.h>
#include<string.h>
void alphacount(){
int k=0,i,j,max,len,l[26]={0};
char s[1010];
gets(s);
len=strlen(s);
for(i=0;i<len;i++)
{
j=s[i]-'a';
l[j]++;
}
max=l[0];
for(i=0;i<26;i++)
{
if(l[i]>max)
{
max=l[i];
k=i;
}
}
printf("%c\n",'a'+k);
}
int main()
{
int t;
scanf("%d",&t);
getchar();
while(t--)
alphacount();
return 0;
}