一、题目
输入描述:
第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符。
输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)
示例1
输入:
ABCabc
A
输出:
2
二、代码
#include <stdio.h>//strlen()函数所在的头文件#include <string.h>#define cmp ('a'-'A')//预处理器定义函数#define Com(x,y) ((x>y?x:y)-(x<y?x:y))int main(void) {char str[1024];char ch;int i;int count = 0;//sizeof()函数,获取str函数所占的字节数fgets(str, sizeof(str), stdin);scanf("%c", &ch);for (i = 0; i < strlen(str); i++) {if ((str[i]-ch) == 0 || Com(str[i], ch) == cmp)count++;}printf("%d", count);return 0;}
scnaf()函数,读取字符串中的一个单词,而不是一整句。scnaf()在遇到空格时就停止读取。
三、fgets()函数解释
fgets()函数,用于读取一串字符,包括换行符’\n’。fgets() 和 gets() 一样,最后的回车都会从缓冲区中取出来。只不过 gets() 是取出来丢掉,而 fgets() 是取出来自己留着。但总之缓冲区中是没有回车了!所以与 gets() 一样,在使用 fgets() 的时候,如果后面要从键盘给字符变量赋值,那么同样不需要清空缓冲区。示例如下:#include <stdio.h>int main(void) {char str[50];char ch;printf("input a string:\n");fgets(str, sizeof(str), stdin);printf("input a character:\n");scanf("%c", &ch);//无需在printf()函数中加入换行符。//因为在fgets()函数中,已经读取到键盘输入的换行符,并且放入到了str字符串中。//在打印str时,会把其中的换行符也打印出来printf("str=%s", str);//此处,无需额外添加换行符printf("ch=%c\n", ch);return 0;}
写出一个程序 接受一个由字母 数字和空格组成的字符串 和一个字符 然后输出输入字符串中该字符的出现次数。(不区分大小写字母)