首页 > 试题广场 >

计算某字符出现次数

[编程题]计算某字符出现次数
  • 热度指数:1302484 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)

数据范围:

输入描述:

第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。



输出描述:

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

示例1

输入

ABCabc
A

输出

2
推荐
import java.util.*;
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner s=new Scanner(System.in);
        String all="";
        String one="";
        char[] ac;
        char temp;
        int num=0;
        while(s.hasNext())
        {
            //s.toUpperCase(),String 转化为大写
            //s.toLowerCase(),String 转化为小写
            //String字符转换,s.toCharArray()与s.charAt(index)
            //char字符转换,String.valueOf(c)转化为String
        	all=s.nextLine();
            one=s.nextLine();
            //存放原来所有的
            ac=all.toCharArray();
            //存放要的字符
            //temp=one.charAt(0);
            for(int i=0;i<ac.length;i++)
            {
            	if(one.equalsIgnoreCase(String.valueOf(ac[i])))    
                    num++;
            }
            System.out.println(num);
        }
        
    }
    
}

编辑于 2017-03-04 16:05:10 回复(45)
加油呀
#include<stdio.h>
#include<string.h>

int main(void){
   char str[1000];
 char a;
    int count = 0;
    fgets(str,sizeof(str),stdin);
    scanf("%c",&a);
    for(int i = 0; i < strlen(str); i++){
         if(a == str[i]){
         count++;
          }
       }
    printf("%d\n",count);
    return 0;
    }
编辑于 2024-04-24 15:11:09 回复(0)
#include <stdio.h>
#include <string.h>

#define MaxInputLength  1010
int main()
{
    char strRev[MaxInputLength] = {0};
    char checkChar = 0, checkChar2 = 0;
    int num = 0;
    int check2Flag = 0;
    fgets(strRev,MaxInputLength,stdin);
    do
    {
        checkChar = getchar();
    }while(checkChar =='\n');
    
    if(checkChar>='a' && checkChar<='z')
    {
        checkChar2 = checkChar+'A'-'a';
        check2Flag = 1;
    }
    else if(checkChar>='A' && checkChar<='Z')
    {
        checkChar2 = checkChar+'a'-'A';
        check2Flag = 1;
    }
    else {
        check2Flag = 0;
    }
    for(int i=0;i<MaxInputLength;i++)
    {
        if(check2Flag)
        {
            if(strRev[i] == checkChar || strRev[i] == checkChar2)
                num++;
        }
        else {
            if(strRev[i] == checkChar)
                num++;
        }
        
    }
    printf("%d",num);
    return 0;
}

编辑于 2024-04-15 12:10:08 回复(0)
#include <string.h>
#include <stdio.h>

int main() {
    int n=0;  
    char str[1000];
    char a;
    while (scanf("%s", str) != EOF) {

        scanf("%s", &a);
        for (int b=0; b<=strlen(str); b++) {
        if (str[b]==a||str[b]==a+32||str[b]==a-32) {n++;
       
        }
        }
        printf("%d",n);
    }
    return 0;
}为什么我一直输出上面声明的int n=0这个值啊
编辑于 2024-03-12 16:40:02 回复(1)
#include <stdio.h>
#include<string.h>

int main() {
    char str[1000],a;
    int len,count=0,i;
    gets(str);
    scanf("%c",&a);
    len=strlen(str);
    for(i=0;i<len;i++)
    {
        if(a>='0'&& a<='9')
        {
            if(str[i]==a)
            count++;
        }
        else if(str[i]==a||str[i]+32==a||str[i]-32==a)
        count++;

    }
    printf("%d",count);

    return 0;
}
如果是数字要单独排除

编辑于 2024-03-02 16:37:22 回复(0)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
/*匹配大小写的个数*/
int Lowercase_Capital_Nums(char *pInputBuf,char *pMatchChar)
{
    int nums = 0;
    int i = 0;
    char *pTmp = pInputBuf;
    char MatchCharTmp = *pMatchChar;
    if('a' <= MatchCharTmp && MatchCharTmp <= 'z'){
        MatchCharTmp -= 32;
    }
    for(i = 0 ; i < strlen(pInputBuf) ; i++) {
        if('A' <= *pTmp && *pTmp <= 'Z'){
            if(*pTmp == MatchCharTmp){    
                nums++;
            }
        }else if('a' <= *pTmp && *pTmp <= 'z'){
            if((*pTmp - 32) == MatchCharTmp){
                nums++;
            }
        }else{
            if(*pTmp == MatchCharTmp){    
                nums++;
            }
        }
        pTmp++;
        continue;  
    }
    return nums;
}

int main()
{
    char str[1002] = {0};
    char ch = 0;
    fgets(str, sizeof(str), stdin);/*fget需要1002个字节保存*/
    //gets(str);
    scanf("%c", &ch);
    printf("%d",Lowercase_Capital_Nums(str,&ch));
    return 0;
}
发表于 2024-02-24 21:28:03 回复(0)
纯C语言笨解法。。。
#include <stdio.h>
#include <string.h>
int main() {
    char str1[1000];
    char str2;
    int num = 0;
    gets_s(str1);
    scanf("%c", &str2);
    if (65 <= str2 && str2<= 90) {
        for (int i = 0; i < strlen(str1); i++) {
            if (str2 == str1[i])
            {
                num = num + 1;
            }
            if (str2 == str1[i] - 32) 
            {
                num = num + 1;
            }
            
        }
    }
    if (97 <= str2 && str2 <= 122) {
        for (int i = 0; i < strlen(str1); i++) {
            if (str2 == str1[i])
            {
                num = num + 1;
            }
            else if (str2 == str1[i] + 32) {
                num = num + 1;
            }
        }
    }
    if (str2 < 65 || str2>122) {
        for (int i = 0; i < strlen(str1); i++) {
            if (str2 == str1[i]) {
                num = num + 1;
            }
        }
    }
    printf("%d", num);
}

发表于 2024-02-20 21:35:41 回复(0)
#include <stdio.h>
#include <string.h>

int main( )
{
    char strArr[ 1001 ] = { 0 };
    char str;
    gets( strArr );
    scanf( "%c", &str );
    int sz = strlen( strArr );
    int cnt = 0;
    int i = 0;
    for( i = 0; i < sz; i++ )
    {
        if( ( str == strArr[ i ] ) ||
            ( ( str | 0x20 ) == strArr[ i ] ) ||
            ( ( strArr[ i ] | 0x20 ) == str ) )
        {
            cnt++;
        }
    }

    printf( "%d\n", cnt );

    return 0;
}

发表于 2024-01-16 21:35:30 回复(0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    char str[1002] = {0};//测1000个用例,多出的2个字节是保存'\0''\n'的?
    int num = 0;
    fgets(str,sizeof(str), stdin);
    char ch = 0;
    scanf("%c", &ch);
    if((ch >= 'a') && (ch <= 'z') )
    {
        ch -= 32;
    }
    for (int i = 0;i < strlen(str);i++) 
    { 
        if((str[i] >= 'a') && (str[i] <= 'z') )
         {
            if (ch == (str[i] - 32))
            {
                num++;
            }
         }
       else if (ch == str[i])
       {
            num++;
       }   
    }
    printf("%d\n", num);
    return 0;
}

发表于 2023-10-18 16:50:18 回复(0)
案例跑过,不知道输入空格匹配,还有问题
#include
<ctype.h>
#include <limits.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>

int main() {
    char str[1001]={0},inc;    
    int anum=0;
    gets(&str);
    scanf("%c",&inc);
    if (inc >='0' && inc<='9' || inc == ' ')  {
        for(int i=0;i<=strlen(str);i++){
            if(inc==str[i]) anum++;
        }
    }else {
        for(int i=0;i<=strlen(str);i++){
            if(toupper(inc)== toupper(str[i])) anum++;
        }
    }
    printf("%d",anum);

}
发表于 2023-09-14 13:49:42 回复(0)
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#define STLEN 1010

// 1.处理输入
// 2、统计个数strchr
//     2.1、若是数字
//     2.2、若是字母,则要分别统计大写字母和小写字母的个数再相加

int main() {
    
    char str[STLEN] = {0};
    char ch;
    unsigned count = 0;

    fgets(str, STLEN, stdin);
    ch = getchar();

    char *find = NULL;
    if(isdigit(ch))
    {
        // while((find = strchr(str, ch)))
        // {
        //     ++ count;
        // }
        find = strchr(str, ch);
        while(find)
        {
            count ++;
            find = strchr(find+1, ch);
        }
    }

    if(isalpha(ch))
    {
        ch = tolower(ch);
        find = strchr(str, ch);
        while(find)
        {
            count ++;
            find = strchr(find+1, ch);
        }

        ch = toupper(ch);
        find = strchr(str, ch);
        while(find)
        {
            count ++;
            find = strchr(find+1, ch);
        }

    }


    printf("%u", count);

    return 0;
}

发表于 2023-09-03 00:02:26 回复(0)
#include<stdio.h>
#include<ctype.h>
void string_test(const char [], char);

int main() {
    char arr[1000];
    char ch;
    fgets(arr, 1000, stdin);
    scanf("%c", &ch);
    string_test(arr, ch);
}

void string_test(const char arr[], char ch) {
    int count = 0;
    while (*arr) {
        if (toupper(*arr) == toupper(ch)) {
            count++;
        }
        arr++;
    }
    printf("%d", count);
}
/* 使用了toupper函数来实现不区分大小写,而且如果不是小写字符原函数返回原参数,这样理解起来应该是对数字检测没有影响的,但是没通过最好一个很长的测试示例 */
发表于 2023-08-28 10:13:19 回复(1)
#include <stdio.h>
#include <string.h>

int main() {
    char str[1000];
    int i=0,n=0;
  //  printf("请输入字符串:");
    gets(str);
 //   printf("输入字符:");
    char c = getchar();
    int str_len = strlen(str);
    for(i=0;i<=str_len;i++){
        if(c >='A' && c <= 'Z'){
            if((str[i] == c)||(str[i] == c+32))
                n++;
        }
        else if(c >='a' && c <= 'z'){
            if((str[i] == c)||(str[i] == c-32))
                n++;
        }
        else {
            if(str[i] == c)
                n++;
        }
    }
    printf("%d",n);
    return 0;
}
发表于 2023-07-17 11:22:56 回复(0)
#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main() {
    char str[1002];
    char word;
    //fgets()函数,从文件或标准输入中读取一行文本
    fgets(str, sizeof(str), stdin);
    scanf("%c", &word);

    int len = strlen(str); 
    int count = 0;
    for(int i=0; i<len-1; i++)
    {
        //tolower()函数,将字母字符转换为小写形式
        if(tolower(word) == tolower(str[i]))
            count++;
    }

    printf("%d\n", count);
    return 0;
}

发表于 2023-07-13 13:22:41 回复(0)
#include <stdio.h>

int main() {
    char str[1000];
    gets(str);
    char a = getchar();
    int len = strlen(str);
    int i;
    int times= 0;

    for (i=0;i<len;i++)
    {
        if (str[i] == a)
        {
            times++;
        }
        else if (65<=str[i]&&str[i]<=90&&str[i]==a-32)//小写
        {
            times++;
        }
        else if (97<=str[i]&&str[i]<=122&&str[i]==a+32)//大写
        {
            times++;
        }
        else {
        
        }
    }
    printf("%d\n",times);
}

发表于 2023-07-11 21:46:29 回复(0)
#include <stdio.h>
#include <string.h>
int length();
int main() {
 int num;
  num=length();
  printf("%d",num);
}
int length()
{
     char b;
   int i=0;
   char str[1000];
   int num=0;
   int length;
   for(i=0;i<=1000;i++)
   {
    char c;
    c=getchar();
    if (c=='\n')
    {
    b=getchar();
    break;
    }
    str[i]=c;
   
   }
   length=strlen(str);
    for(i=0;i<length;i++)
    {
    if(str[i]==b||(str[i]-b==32)||(str[i]-b==-32))
    num++;
   
    }
     return num;
}
发表于 2023-07-10 15:19:45 回复(0)
#include "stdio.h"
#include "string.h"
int main()
{
   char str[1000]={0},c={0};
   int length=0;
    scanf("%[^\n]",str);
    scanf("%c",&c);
    for(int i=0;str[i]!='\0';i++)
    {
    if((c>=0)&&(c<=9)&&(c==str[i]))
    {
    length++;
    }
    else if((c>='a')&&(c<='z'))
    {
    if((c==str[i])||((c-32)==str[i]))
    
        length++;
    }
    else if((c>='A')&&(c<='Z'))
    {
if((c==str[i])||((c+32)==str[i]))
length++;
    }
    }
    printf("%d",length);
  
}

发表于 2023-07-06 18:15:15 回复(2)
#include <stdio.h>
#include <string.h>
#include <ctype.h>

// 1001 -- 通过 12/13 测试用例,1002 -- 通过全部测试用例 (疑惑)
#define MAX 1002                            

int main(int argc, char* argv[]) {
    int i, count = 0, len;               // count 用于统计输入字符串中含有该字符的个数
    char temp, str[MAX];                  // str[MAX] 数组用于存储字符串
    fgets(str, sizeof(str), stdin);               // 输入一行字符串
    len = strlen(str);                   // 统计字符串的长度
    scanf("%c", &temp);                   // 第二行输入一个字符
    temp = toupper(temp);                 // 如果 temp 是小写字母, 则 toupper(c) 返回相应的大写字母, 否则返回 temp
    for (i = 0; i < len - 1; i ++) {
        char c = toupper(str[i]);           // 不区分大小写
        if (c == temp) {                    
            count ++;
        }
    }
    printf("%d\n", count);
    return 0;
}

发表于 2023-06-29 16:46:37 回复(0)