题目描述
写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
输入描述:
第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符。
输出描述:
输出输入字符串中含有该字符的个数。
示例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; }