关于#c语言#的问题,如何解决?

请使用指针,编写程序,从键盘输入一个字符串,并统计各字母出现的次数(不区分大小写)。
如图所示:

img


#include <stdio.h>
#include <ctype.h>

void func(int *num)
{
    char ch;
    // 获取输入
    while ((ch=getchar()) != '\n')
    {
        if (isalpha(ch))
        {
            // 大写转换
            ch = tolower(ch);
            // 计数,+1
            (*(num + (ch - 'a')))++;
        }
    }
}

int main()
{
    // 字母只有26个,定义统计数组
    int num[26] = { 0 };

    printf("请输入字符串:");
    
    func(num);

    // 输出统计
    int i = 0;
    for (i = 0; i < 26; i++)
    {
        if (num[i])
        {
            printf("字母%c的个数为:%d个\n", i + 'a', num[i]);
        }
    }

    return 0;

}

可以在一行输出字母的个数,可以自行修改一下,使符合输出格式

#include<stdio.h>
int main()
{
    char str[100];
    char *p=str;
    int a[26]={0};
    gets(str);
    while(*p!='\0')
    {
        if(*p>='a'&&*p<='z')
            a[*p-'a']++;
        if(*p>='A'&&*p<='Z')
            a[*p-'A']++;
        p++;
    }
    for(int i=0;i<26;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}

其他思路....


#include<stdio.h>
int main()
{
    char a[26]={'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'};
    char b[26]={'\0'};
    char *p,*q;
    int sum=0;
    printf("请输入字符:");
    gets(b);
    p=a;q=b;
    for(p=a;*p!='\0';p++)
    {
        sum=0;
        for(q=b;*q!='\0';q++)
        {
            if(*p==*q||*p==*q+32)
                sum++;
        }
        if(sum)
            printf("字母%c的个数为:%d个\n",*p,sum); 
    }
    return 0;
}