C语言程序差最后的一步了,难受啊,请帮我看看吧

输入字符串,统计各小写字母出现的频次,输出出现频次最高的2个字母


#include <stdio.h>
#include <string.h>
int main()
{
    int i, fre[26] = {0};
    char str[1024];
    gets(str);
    for(i = 0;i < strlen(str);i++){
        if(str[i] >= 'a' && str[i] <= 'z'){
            fre[str[i] - 'a'] ++;
        }
    }
    int max1 = fre[0],max2 = fre[0],m1 = 0,m2 = 0;
    for(i = 0;i < 26;i++){
        printf("%c:%d\n",i +'a',fre[i]);
        if(fre[i] >= max1){
            max2 = max1;
            m2 = m1;
            max1 = fre[i];
            m1 = i;
        }else if(fre[i] > max2){
            max2 = fre[i];
            m2 = i;
        }
    }
    printf("%c %c",m1 + 'a', m2 + 'a');
    return 0;
}

/*
输入字符串,统计各小写字母出现的频次,
输出出现频次最高的2个字母
*/
#include <stdio.h>
#include <string.h>
int main(){
    char str[1024] = {};
    scanf("%s", &str);
    int num[26] = {0};
    int i = 0;
    while (str[i]!='\0') {
        switch (str[i])
        {
        case 'a':
            num[0]++;
            break;
        case 'b':
            num[1]++;
            break;
        case 'c':
            num[2]++;
            break;
        case 'd':
            num[3]++;
            break;
        case 'e':
            num[4]++;
            break;
        case 'f':
            num[5]++;
            break;
        case 'g':
            num[6]++;
            break;
        case 'h':
            num[7]++;
            break;
        case 'i':
            num[8]++;
            break;
        case 'j':
            num[9]++;
            break;
        case 'k':
            num[10]++;
            break;
        case 'l':
            num[11]++;
            break;
        case 'm':
            num[12]++;
            break;
        case 'n':
            num[13]++;
            break;
        case 'o':
            num[14]++;
            break;
        case 'p':
            num[15]++;
            break;
        case 'q':
            num[16]++;
            break;
        case 'r':
            num[17]++;
            break;
        case 's':
            num[18]++;
            break;
        case 't':
            num[19]++;
            break;
        case 'u':
            num[20]++;
            break;
        case 'v':
            num[21]++;
            break;
        case 'w':
            num[22]++;
            break;
        case 'x':
            num[23]++;
            break;
        case 'y':
            num[24]++;
            break;
        case 'z':
            num[25]++;
            break;
        default:
            break;
        }
        i++;
    }
    int max1=num[0], max2=num[1],temp;
    int i1=0, i2=1,it;
    for (int i = 0; i < 26; i++)
    {
        if (num[i] > max2)
        {
            max2 = num[i];
            i2 = i;
        }
        if (max2>max1)
        {
            temp = max1;
            max1 = max2;
            max2 = temp;
            it = i1;
            i1 = i2;
            i2 = it;
        }
    }
    switch (i1)
    {
    case 0:
        printf("a");
        break;
    case 1:
        printf("b");
        break;
    case 2:
        printf("c");
        break;
    case 3:
        printf("d");
        break;
    case 4:
        printf("e");
        break;
    case 5:
        printf("f");
        break;
    case 6:
        printf("g");
        break;
    case 7:
        printf("h");
        break;
    case 8:
        printf("i");
        break;
    case 9:
        printf("j");
        break;
    case 10:
        printf("k");
        break;
    case 11:
        printf("l");
        break;
    case 12:
        printf("m");
        break;
    case 13:
        printf("n");
        break;
    case 14:
        printf("o");
        break;
    case 15:
        printf("p");
        break;
    case 16:
        printf("q");
        break;
    case 17:
        printf("r");
        break;
    case 18:
        printf("s");
        break;
    case 19:
        printf("t");
        break;
    case 20:
        printf("u");
        break;
    case 21:
        printf("v");
        break;
    case 22:
        printf("w");
        break;
    case 23:
        printf("x");
        break;
    case 24:
        printf("y");
        break;
    case 25:
        printf("z");
        break;
    default:
        break;
    }
    printf("\n");
    switch (i2)
    {
    case 0:
        printf("a");
        break;
    case 1:
        printf("b");
        break;
    case 2:
        printf("c");
        break;
    case 3:
        printf("d");
        break;
    case 4:
        printf("e");
        break;
    case 5:
        printf("f");
        break;
    case 6:
        printf("g");
        break;
    case 7:
        printf("h");
        break;
    case 8:
        printf("i");
        break;
    case 9:
        printf("j");
        break;
    case 10:
        printf("k");
        break;
    case 11:
        printf("l");
        break;
    case 12:
        printf("m");
        break;
    case 13:
        printf("n");
        break;
    case 14:
        printf("o");
        break;
    case 15:
        printf("p");
        break;
    case 16:
        printf("q");
        break;
    case 17:
        printf("r");
        break;
    case 18:
        printf("s");
        break;
    case 19:
        printf("t");
        break;
    case 20:
        printf("u");
        break;
    case 21:
        printf("v");
        break;
    case 22:
        printf("w");
        break;
    case 23:
        printf("x");
        break;
    case 24:
        printf("y");
        break;
    case 25:
        printf("z");
        break;
    default:
        break;
    }
    return 0;
}

#include "stdio.h"

void main()
{
int i,j,k,temp,a[26][2];/26表示26个序号从1到26/
char b[10];/假设用户只输入10各字符,可以更改/
for(i=0;i<10;i++)/用户输入字符/
{
scanf("%c",&b[i]);
}
for(j=0;j<26;j++)/定义数组j0对应的的小写字母的ASCll码,j1对应小写字母的数量/
{
a[j][0]=j+97;
a[j][1]=0;
}
for(j=0;j<26;j++)/统计用户输入字母的数量/
{
for(i=0;i<10;i++)
{
if(a[j][0]==b[i])
{
a[j][1]=a[j][1]+1;
}
}
}
for(k=0;k<26;k++)/冒泡数列,求出数量最多的两个字母/
{
for(j=0;j<26-k;j++)
{
if(a[j][1]<a[j+1][1])
{
temp=a[j][0];
a[j][0]=a[j+1][0];
a[j+1][0]=temp;
}
}
}
printf("zui duo de 2 zi mu is %c and %c",a[0][0],a[1][0]);
}

代码呢?

没有看到代码,建议将字符串转化为char[]数组,然后根据ASCII码去记录数量,找到最多的两个