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);
}
额外的函数:



京公网安备 11010502036488号