0
点赞
收藏
分享

微信扫一扫

HJ2 计算某字符出现次数 HJ02 忽略大小写


​​HJ2计算某字符出现的个数​​

// HJ02.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

int chcmp_i(char c1, char c2) {
// 都转换大写比较
return (c1 & 0xdf) - (c2 & 0xdf);
}

int charOccur(char *s, char c, int (*cmp)(char, char)) {
// 空字符串
if (s[0] == '\0') {
return 0;
}
// 单个字符的字符串
if (s[1] == '\0') {
return cmp(s[0], c) == 0 ? 1 : 0;
}
size_t occur = 0;
for (; *s != '\0'; s += 1) {
if (cmp(*s, c) == 0) {
occur += 1;
}
}
return occur;
}

int mystrcpy(char* s, const char* cs) {
const char* p = cs;
while (*p) {
*s++ = *p++;
}
*s = '\0';
return p - cs;
}

int main()
{
char s[BUFSIZ] = { '\0' };
char c;

std::cin.get(s, BUFSIZ).get();
std::cin.get(c);

// mystrcpy(s, "ABCabc"); c = 'A';
// mystrcpy(s, "c"); c = 'j';
// mystrcpy(s, "8 8 8 8A i i OOI IIIaa"); c = 'A';
// std::cout << s << "\n";
// std::cout << c << "\n";

std::cout << charOccur(s, c, chcmp_i);
}

读取1行

########### C++ ###########

#include <iostream>

char s[BUFSIZ]={'\0'};

std::cin.get(s, BUFSIZ).get();  // 去掉结尾'\n'

########### C ###########

#include <stdio.h>
#include <string.h>

 char str[5000] = {0};

 fgets(str, sizeof(str), stdin);

读取1个字符

char c;

std::cin.get(c);

int c = 0;

fgetc(c);

下一篇:

HJ4 字符串分隔

举报

相关推荐

0 条评论