7-6 统计字符出现次数

 

分数 20

全屏浏览题目

切换布局

作者 C课程组

单位 浙江大学

本题要求编写程序,统计并输出某给定字符在给定字符串中出现的次数。

输入格式:

输入第一行给出一个以回车结束的字符串(少于80个字符);第二行输入一个字符。

输出格式:

在一行中输出给定字符在给定字符串中出现的次数。

输入样例:

programming is More fun!
m

输出样例:

2

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

我的答案:

分析过程:

本题的核心是统计给定字符在给定字符串中出现的次数。解决该问题的直接方法是使用循环遍历字符串的每个字符,然后检查当前字符是否与给定字符相匹配。如果匹配,我们增加计数器。

解题步骤:

  1. 读取给定的字符串。
  2. 读取给定的字符。
  3. 初始化一个计数器为0。
  4. 遍历字符串的每个字符,检查它是否与给定字符相匹配。
  5. 如果匹配,增加计数器。
  6. 输出计数器的值。

C语言:

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

int main() {
    char str[80];
    char ch;
    int count = 0;

    // 读取字符串和字符
    fgets(str, sizeof(str), stdin);
    scanf("%c", &ch);

    // 计算字符出现的次数
    for (int i = 0; i < strlen(str); i++) {
        if (str[i] == ch) {
            count++;
        }
    }

    // 输出结果
    printf("%d\n", count);
    return 0;
}

C++:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str;
    char ch;
    int count = 0;

    // 读取字符串和字符
    getline(cin, str);
    cin >> ch;

    // 计算字符出现的次数
    for (int i = 0; i < str.length(); i++) {
        if (str[i] == ch) {
            count++;
        }
    }

    // 输出结果
    cout << count << endl;
    return 0;
}

这两个解决方案都遵循了上述的解题步骤,并且都非常直观和简单。

总结:

这道题目虽然简单,但对于初学者来说,它提供了一些重要的学习点:

1. **基本输入/输出**:学习如何从标准输入读取数据(如字符串和字符)并输出到标准输出是编程的基本技能。在C中我们使用`scanf`和`printf`,而在C++中我们使用`cin`和`cout`。

2. **字符串操作**:这题让我们操作字符串,进行遍历并访问它的每一个字符。在C中,字符串被视为字符数组,而在C++中,我们有专门的`string`类来进行操作。

3. **循环结构**:通过遍历字符串,我们加深了对for循环的理解和应用。

4. **条件判断**:我们使用了条件语句来检查当前字符是否与给定字符相同,从而加深对`if`语句的理解。

5. **计数模式**:这是一个典型的计数问题,我们要对满足某个条件的事物进行计数。这种模式在实际编程中非常常见。

6. **细节处理**:对于所有的编程问题,都需要注意一些细小的细节。例如,在C中使用`fgets`读取字符串可以确保读取整行(包括空格),而不是只读取到空格为止。

7. **代码调试**:对于初学者,可能会遇到一些错误,如忘记初始化计数器,或者在C++中混淆使用`cin`和`getline`。通过错误和调试,我们可以学习并加强编程技能。

8. **代码优化**:虽然这个问题的直接方法很简单,但在处理更大的数据或更复杂的问题时,效率和优化可能会成为考虑的问题。思考如何使代码更高效或更简洁是进阶的学习点。

总的来说,尽管这个题目相对简单,但它为初学者提供了一个很好的实践机会,可以帮助巩固基础知识,并为更复杂的问题打下基础。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值