列表

详情


HJ2. 计算某字符出现次数

描述

写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)

数据范围:

输入描述

第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符。

输出描述

输出输入字符串中含有该字符的个数。(不区分大小写字母)

示例1

输入:

ABCabc
A

输出:

2

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 1ms, 内存消耗: 260KB, 提交时间: 2021-01-30

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

int main(void)
{
    char* s[100] = {0};//s是一个字符指针数组,包含100个char类型的指针。同时还有指针数组的初始化。
    char* p = s;//p是指向指针数组的指针
    char input = {0};//定义一个字符变量,并初始化
    int i = 0;
    int j = 0;
    
    gets(s);//这个是获取一行所有的字符,在遇到换行符后返回所有的字符。
    scanf("%c", &input);//获取一个字符,注意scanf获取的停止标志是EOF///这里犯了错,字符应该是%c而不是%d,除了字符串都要&
    
    while (p[i] != '\0')
    {
        if (tolower(p[i]) == tolower(input))//tolower是将字母转换为小写字母的函数
        {
            j++;
        }
        i++;
    }
    printf("%d", j);
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 280KB, 提交时间: 2021-04-17

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
	int cnt[128] = {0};
	char ch;
	for( ; (ch=getchar())!=EOF; ){
		if(ch == '\n'){
			ch = tolower( getchar() );
			printf("%d\n", cnt[ch]+cnt[ ch-32 ]);
			memset(cnt, 0, sizeof(cnt));   getchar();
			continue;
		}
		cnt[ tolower(ch) ]++;
	}
	return 0;
}

上一题