题目描述

写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。

输入描述:

第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符。

输出描述:

输出输入字符串中含有该字符的个数。

示例1

输入

ABCDEF
A

输出

1

分析思路

1.输入处理

  • gets(sp);//处理字符串输入。
  • scanf("%c",&ch);//处理字符输入

    2.匹配字符ch的大小写判断

    题目要求不区分大小写,所以需要判断匹配字符的大小写。方便后续匹配

    3. 遍历字符串,并与ch比较

4.输出

5.c语言实现

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    //1. 输入处理
    char* head,*sp = NULL;
    char ch;
    sp = (char*)malloc(sizeof(char));
    head = sp;
    gets(sp);
    scanf("%c",&ch);

    // 2. 确定是大写、小写或数字
    enum CharType{other,Upper,Lower};
    int type = -1;
    if (ch >= 'a' && ch <= 'z')
    {
        type = Upper;
    }
    else if(ch >= 'A' && ch <= 'Z')
    {
        type = Lower;
    }
    else
    {
        type = other;
    }

    int count = 0;
    // 2. 匹配字符
    while(*sp != '\0')
    {
        if(type == Upper)
        {
            if((*sp) == ch || (*sp) == (ch -32))
            {
                count++;
            }

        }
        else if(type == Lower)
        {
            if (*sp == ch || *sp == (ch+32))
            {
                count++;
            }

        }
        else
        {
            if (*sp == ch)
            {
                count++;
            }

        }
        sp++;
    }
    printf("%d\n",count);
    free(head);
    return 0;
}