描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)
数据范围: 1 \le n \le 1000 \1≤n≤1000
输入描述:
第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符。
输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)
示例1
输入:
ABCabc A
输出:
2
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
int findnum(char *str,char cha,char ch)
{ int i = 0;
int num = 0;
while(str[i] != '\0') {
if((str[i] == cha) || (str[i] == ch)) {
num++;
}
i++;
}
return num;
}
int main()
{
char str[1000];
char cha;
char ch;
int num;
scanf("%[^\n]",str);
scanf(" %c",&cha);
if(isupper(cha)) {
ch = tolower(cha);
}
else {
ch = toupper(cha);
}
printf("%d",findnum(str, cha,ch));
}
这道题也非常简单;需要留意的就是 统计字符出现个数的时候是不区分大小写的;这样就设计到大小写的转换;
读取到需要判断的字符后,我先对其进行了大小写的判断,如果是大写,将其对应的小写保存至ch;反之。在遍历字符串的时候,会同时跟字符本身以及相对应的大小写进行比较;
这道题需要注意的点就是 输入字符串后会有\n,我们在读取字符的时候需要处理一下;
读取一行带空格的字符串可以使用gets();也可以使用上述代码中的:scanf("%[^\n]",str);
意思是读取所有输入,直到遇到\n;这样也可以实现用scanf读取带空格的字符串
C语言库函数学习:
1、判断大小写函数
判断是否为大写字母 isupper()
判断是否为小写字母islower()
2、大小写字母转换函数
将小写转换为大写:toupper()
将大写转换为小写:tolower()
需要注意的是使用上面四个库函数的时候需要加上头文件#include<ctype.h>