dya2408561264 2023-01-02 15:20 采纳率: 0%
浏览 20

段错误,求大家看看,能不能解决

在玩了一段时间字符串后,小t对字符串失去了兴趣,于是他将这个字符串送给了syx,不过在送给syx之前,小t还要问syx一些问题,聪明的你快来帮syx解答吧!

已知小t总共有q次询问,对于小t的每次询问,他都会给你一个区间,你需要回答他在这个区间中出现最多的字母是谁,如果有两个及以上的字母都是出现最多的,则输出字典序小的那个(该字符串仅包含小写拉丁字母
代码出现了段错误,但自己发现不了,不知道哪有问题
#include<stdio.h>
#include<math.h>
#include<string.h>

char a[30001];
int x[30001];
char a1[260]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

int main(void)
{
int n,q,l,r,ii,i,j,i1;
memset(x,0,sizeof(x));

scanf("%d %d",&n,&q);
scanf("%s",a);

//printf("%c",a1[25]);
for(ii=0;ii<q;ii++)
{
    memset(x,0,sizeof(x));
    scanf("%d %d",&l,&r);
    for(i=l-1;i<=r-1;i++)
    {
        if(a[i]=='a')
        {
            x[0]++;
            
        }
        if(a[i]=='b')
        {
            x[1]++;
        }
        if(a[i]=='c')
        {
            x[2]++;
        }
        if(a[i]=='d')
        {
            x[3]++;
        }
        if(a[i]=='e')
        {
            x[4]++;
        }
        if(a[i]=='f')
        {
            x[5]++;
        }
        if(a[i]=='g')
        {
            x[6]++;
        }
        if(a[i]=='h')
        {
            x[7]++;
        }
        if(a[i]=='i')
        {
            x[8]++;
        }
        if(a[i]=='j')
        {
            x[9]++;
        }
        if(a[i]=='k')
        {
            x[10]++;
        }
        if(a[i]=='l')
        {
            x[11]++;
        }
        if(a[i]=='m')
        {
            x[12]++;
        }
        if(a[i]=='n')
        {
            x[13]++;
        }
        if(a[i]=='o')
        {
            x[14]++;
        }
        if(a[i]=='p')
        {
            x[15]++;
        }
        if(a[i]=='q')
        {
            x[16]++;
        }
        if(a[i]=='r')
        {
            x[17]++;
        }
            if(a[i]=='s')
        {
            x[18]++;
        }
            if(a[i]=='t')
        {
            x[19]++;
        }
            if(a[i]=='u')
        {
            x[20]++;
        }
            if(a[i]=='v')
        {
            x[21]++;
        }
            if(a[i]=='w')
        {
            x[22]++;
        }
            if(a[i]=='x')
        {
            x[23]++;
        }
            if(a[i]=='y')
        {
            x[24]++;
        }
            if(a[i]=='z')
        {
            x[25]++;
        }
    }
    int max=x[0],max1;
    max1=0;
    for(i1=0;i1<26;i1++)
    {
        //printf("%d\n",x[i]);
        if(max>=x[i1])
        {
            
        }
        else
        {
            max=x[i1];
            max1=i1;
            
        }
    }
    printf("%c\n",a1[max1]);
    
}

return 0;
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2023-01-02 16:13
    关注

    修改如下,供参考:

    #include<stdio.h>
    #include<string.h>
    char a[30001];
    int  x[26];
    int main()
    {
        int q,l,r,i,max;
        memset(x,0,sizeof(x));
        scanf("%d",&q);
        scanf("%s",a);
        while (q--)
        {
            memset(x,0,sizeof(x));
            scanf("%d %d",&l,&r);
            for (i = l; i <= r; i++)
            {
                x[a[i]-'a']++;
            }
            max = x[0]
            for (i = 0; i < 26; i++)
            {
                if (max < x[i])
                    max = x[i];
            }
            for (i = 0; i < 26; i++)
            {
                if (max == x[i])
                {
                    printf("%c\n", i+'a');
                    break;
                }
            }
        }
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 1月2日

悬赏问题

  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
  • ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
  • ¥15 io.jsonwebtoken.security.Keys
  • ¥15 急,ubuntu安装后no caching mode page found等
  • ¥15 联想交换机NE2580O/NE1064TO安装SONIC