HJ2 计算某字符出现次数
描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)
数据范围: 1 \le n \le 1000 \1≤n≤1000
输入描述:
第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符。
输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)
示例1
输入:
ABCabc A复制
输出:
2复制
#include <stdio.h> #include <string.h> #include <ctype.h> int main(void) { char buffer[1000] = {0}; char ch = 0; int i = 0; int result = 0; char check1 = 0; //fgets(buffer, sizeof(buffer), stdin); //ch = getchar(); ////scanf 会读取并忽略在 stdin 中下一个非空白字符之前的所有空白字符(空格、换行和 tab) // scanf("%[^\n]",&buffer); // scanf(" %c",&ch); //忽略前面的\n scanf("%[^\n]\n",&buffer); // "\n"读取\n不记录 scanf("%c",&ch); /* //先读一行字符串, //再将格式化字符串中的 '\t' (空白字符)与缓冲区中0个或多个空白字符匹配并清除(规则1), //最后读取一个整数 */ // scanf("%[^\n]\t%c",&buffer,&ch); /* 对于 stdin 中的字符的读取,scanf 、 getchar 等函数会读取缓冲区中的第一个字符,包括空白字符和非空白字符。 可能存在首先通过 scanf 读取了数据,如一个带换行的数字,之后再用 "%c" 读取字符时,字符读取的是换行符 '\n' 的情况。 为了消除该换行符对正常逻辑的影响,可以在格式化字符串前面加入一个空格作为空白字符,如" %c", 此时对于字符的读取会首先跳过上一次输入留下的换行符(前面的规则1),从而保证读取数据的正确性 */ //scanf("%[^\n] %c",&buffer,&ch); #if 0 if(ch >='a' && ch<='z') check1 = ch- ('a' - 'A'); else if(ch >='A' && ch<='Z') check1 = ch+ ('a' - 'A'); else check1 = ch; for(i=0;i<strlen(buffer);i++) { if(buffer[i] == ch || buffer[i] == check1) result++; } #endif #if 0 for(i=0;i<strlen(buffer);i++) { if(tolower(buffer[i]) == tolower(ch)) result++; } #endif while(buffer[i]!='\0') { if(tolower(buffer[i]) == tolower(ch)) result++; i++; } printf("%d", result); }
额外的函数: