我的代码:

#include<stdio.h>
#include<string.h>
int main(){
    char s[1001],c;
    gets(s); //注:scanf()不能接受带空格的字符串
    {
        int count=0,len=strlen(s);  
        scanf("%c",&c);
        for(int i=0;i<len;i++)
            //判断,注意不区分大小写。
            if(s[i]==c||(s[i]==c+32&&s[i]>='a'&&c<='Z')||(s[i]==c-32&&s[i]<='Z'&&c>='a')) 
                count++;
        printf("%d\n",count);
    }
}

讨论区学到的,用字符串库函数tolower()将字符串和判定字符都转化为小写字母进行比较:

#include<stdio.h>
#include<string.h>
int main()
{
    char str[1000]={0};
    char flag={0};
    int i=0;
    gets(str);
    int count=0;
    scanf("%c",&flag);
    while(str[i]!='\0')
    {
        if(tolower(str[i])==tolower(flag))
        {
            count++;
        }
        i++;
    }
    printf("%d",count);
    return 0;
}