C语言联系第二天
计算字符个数
https://www.nowcoder.com/practice/a35ce98431874e3a820dbe4b2d0508b1?tpId=37&tqId=21225&tPage=1&rp=&ru=%2Fta%2Fhuawei&qru=%2Fta%2Fhuawei%2Fquestion-ranking
题目描述
写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
输入描述:
第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符。
输出描述:
输出输入字符串中含有该字符的个数。
示例1
输入
ABCDEF
A
输出
1
include <stdio.h>
include <string.h>
int main(void)
{
char word[5000] = { 0 };
char ch_ar;
char* str_p = word;
int count = 0;
fgets(word, sizeof(word), stdin); ch_ar = fgetc(stdin); int str_len = strlen(word) - 1; if (0 >= str_len) { printf("%d", 0); return 0; } for (int i=0;i < str_len;i++) { if ((ch_ar >= 'A') && (ch_ar <= 'Z')) { if ((ch_ar == *str_p) || ((ch_ar + 32) == *str_p)) { count++; } } if ((ch_ar >= 'a') && (ch_ar <= 'z')) { if ((ch_ar == *str_p) || ((ch_ar - 32) == *str_p)) { count++; } } else if (*str_p == ch_ar) { count++; } str_p++; } printf("%d", count); return 0;
}
知识点:
1.C语言中获得输入字符的库函数:int fgetc(FILE *stream) ,这个函数输入为stdin,返回值为用户输入的单个无符号字符;
2.获取输入字符转的库函数:char *fgets(char *str, int n, FILE *stream),这个函数的第一个参数是目标地址,第二个函数是目标地址最大可以存储字符串的长度,第三个参数是stdin,即从用户输入的字符串;
3.ASCII码中,A-Z为65-90;a-z为:97-122,所以每个小写字母比它对应的大写字母大22.此题中由于不区分大小写,因此要考虑大小写的情况。