一、知识点
fgets(),getchar()
1、fgets()的参数
第一个参数是buffer
第二个参数是要读取的字节的数目
第三个参数是读取的源,是FILE*类型的,stdin表示从标准输入(键盘)读取
如果数据范围是n,考虑到回车和'\0',则buffer的大小和要读取的字节的数目都建议设为n+2
1、数字的ASCII码
字符‘0’的ASCII码是48
字符‘9’的ASCII码是57
从字符‘0’到字符‘9’的ASCII码是递增的
字母A的ASCII码是65
所有字母的ASCII码都大于数字字符的ASCII码
二、题目
描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符出现的次数。(不区分大小写字母)
数据范围:1<= n <=1000
输入
第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)
输出
输出输入字符串中该字符出现的次数(不区分大小写字母)
三、自己写的代码
#include<stdio.h>
int main() {
char line[1002];
int c, i = 0, res = 0;
fgets(line, 1002, stdin);
c = getchar();
if (c >= '0' && c <= '9') {
while (line[i] != '\0' && line[i] != 10) {
if (line[i] == c) {
res++;
}
i++;
}
} else if (c >= 'a' && c <= 'z') {
while (line[i] != '\0' && line[i] != 10) {
if (line[i] == c || line[i] == c - 32) {
res++;
}
i++;
}
} else {
while (line[i] != '\0' && line[i] != 10) {
if (line[i] == c || line[i] == c + 32) {
res++;
}
i++;
}
}
printf("%d\n", res);
return 0;
}