这个错在哪里了 为什么运行结果不符?

#include<stdio.h>

int main( )


{

        int a[26],max,n,i;

        a[26]=0;

        max=0;

        char c;

        scanf("%d",&n);

        for(i=0;i<n;i++)

        {

                scanf("%c",&c);

                a[c-'a']++;

        }

        for(i=1;i<26;i++)

        {

                if(a[max]<a[i])

                        max=i;

        }

        printf("%c\n",max+'a');

        return 0;

}


qq_乄朩_04191119
浏览 1385回答 3
3回答

qq_雪夜_1

// 看你代码的意思,应该是输入统计n个字符中,哪个字母出现最多。 #include<stdio.h> int main( ) {         int a[26]={0},max,n,i;         //a[26]=0;如果你想每个赋初值可以在声明的同时初始化,对数组a来说,下标是0-25,26会下标越界         max=0;         char c;         scanf("%d",&n);         for(i=0;i<n;i++)         {                 scanf("%c",&c);                 a[c-'a']++;         }         for(i=1;i<26;i++)         {                 if(a[max]<a[i])                         max=i;         }         printf("%c\n",max+'a');         return 0; }

大千纷繁世界

可以问下,你要达到什么目的?而且你数组还没有赋值,怎么比较?逻辑比较混乱。

一叶追寻

数组下标越界,int a[26];这是一个整型的数组a,有26个元素:a[0]-a[25],因为正确的下标应该是从0开始,到25结束
打开App,查看更多内容
随时随地看视频慕课网APP