C语言统计输入字符各个字母出现频率的解题思路

当然!下面是关于\"C语言统计输入字符各个字母出现频率的解题思路\"的完整攻略:

C语言统计输入字符各个字母出现频率的解题思路

... 示例1:使用数组统计字母频率

#include <stdio.h>

int main() {
    char str[100];
    int count[26] = {0}; // 初始化计数数组

    printf(\"请输入一个字符串:\");
    fgets(str, sizeof(str), stdin);

    for (int i = 0; str[i] != '\\0'; i++) {
        if (str[i] >= 'a' && str[i] <= 'z') {
            count[str[i] - 'a']++;
        } else if (str[i] >= 'A' && str[i] <= 'Z') {
            count[str[i] - 'A']++;
        }
    }

    for (int i = 0; i < 26; i++) {
        if (count[i] > 0) {
            printf(\"%c 出现的次数为 %d\
\", 'a' + i, count[i]);
        }
    }

    return 0;
}

在这个示例中,我们首先定义了一个字符数组str来存储输入的字符串,以及一个整型数组count来统计字母出现的频率。然后,我们使用fgets函数从标准输入中获取字符串。接下来,我们使用一个循环遍历字符串中的每个字符,如果字符是小写字母,则将对应的计数数组元素加1;如果字符是大写字母,则同样将对应的计数数组元素加1。最后,我们再次使用循环遍历计数数组,打印出每个字母出现的次数。

... 示例2:使用哈希表统计字母频率

#include <stdio.h>
#include <stdlib.h>

struct Node {
    char letter;
    int count;
    struct Node* next;
};

int main() {
    char str[100];
    struct Node* hashTable[26] = {NULL}; // 初始化哈希表

    printf(\"请输入一个字符串:\");
    fgets(str, sizeof(str), stdin);

    for (int i = 0; str[i] != '\\0'; i++) {
        if (str[i] >= 'a' && str[i] <= 'z') {
            int index = str[i] - 'a';
            struct Node* node = hashTable[index];
            while (node != NULL) {
                if (node->letter == str[i]) {
                    node->count++;
                    break;
                }
                node = node->next;
            }
            if (node == NULL) {
                struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
                newNode->letter = str[i];
                newNode->count = 1;
                newNode->next = hashTable[index];
                hashTable[index] = newNode;
            }
        } else if (str[i] >= 'A' && str[i] <= 'Z') {
            int index = str[i] - 'A';
            struct Node* node = hashTable[index];
            while (node != NULL) {
                if (node->letter == str[i]) {
                    node->count++;
                    break;
                }
                node = node->next;
            }
            if (node == NULL) {
                struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
                newNode->letter = str[i];
                newNode->count = 1;
                newNode->next = hashTable[index];
                hashTable[index] = newNode;
            }
        }
    }

    for (int i = 0; i < 26; i++) {
        struct Node* node = hashTable[i];
        while (node != NULL) {
            printf(\"%c 出现的次数为 %d\
\", node->letter, node->count);
            node = node->next;
        }
    }

    return 0;
}

在这个示例中,我们首先定义了一个结构体Node来表示哈希表中的节点,包含字母和出现次数。然后,我们定义了一个指针数组hashTable来作为哈希表,初始化为NULL。接下来,我们使用fgets函数从标准输入中获取字符串。然后,我们使用一个循环遍历字符串中的每个字符,如果字符是小写字母,则根据哈希函数计算出对应的索引,然后遍历哈希表中的链表,如果找到相同的字母,则将对应的计数加1;如果没有找到相同的字母,则创建一个新的节点,并将其插入到链表的头部。如果字符是大写字母,同样进行相同的操作。最后,我们再次使用循环遍历哈希表,打印出每个字母出现的次数。

希望这个攻略对你有所帮助!如果你还有其他问题,请随时提问。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言统计输入字符各个字母出现频率的解题思路 - Python技术站

(0)
上一篇 2023年8月19日
下一篇 2023年8月19日

相关文章

  • xulrunner是否适合替代其他c桌面应用程序框架(例如qt)?

    XULRunner是一个基于Mozilla技术的应用程序框架,可以用于开发跨平台的桌面应用程序。它提供了丰富的UI组件和API,可以方便地开发出功能强大、界面美观的桌面应用程序。但是,是否适合替代其他C桌面应用程序框架(例如Qt)需要根据具体情况进行判断。以下是详细的攻略: XULRunner的优点 跨平台支持:XULRunner可以在Windows、Lin…

    other 2023年5月8日
    00
  • 软件开发过程之需求分析步骤详解

    软件开发过程之需求分析步骤详解 1. 概述 需求分析是软件开发过程中的关键步骤,它是指对用户需求进行收集、概括和详细描述的过程。需求分析的目的是为了准确的理解用户的需求和目标,并最终制定出能够满足用户需求的软件方案。以下是需求分析的步骤详解。 2. 需求获取 需求获取是指收集用户需求的过程,主要通过以下几种方式: 2.1 用户访谈 通过直接与用户进行交流,收…

    other 2023年6月28日
    00
  • Mybatis resultMap标签继承、复用、嵌套方式

    MyBatis resultMap标签继承、复用、嵌套方式攻略 MyBatis是一个流行的Java持久化框架,它提供了许多强大的功能来简化数据库操作。其中,resultMap标签是一个重要的元素,用于将查询结果映射到Java对象。在本攻略中,我们将详细讲解MyBatis resultMap标签的继承、复用和嵌套方式。 继承方式 使用继承方式可以减少重复的代码…

    other 2023年7月28日
    00
  • Python中关键字global和nonlocal的区别详解

    Python中关键字global和nonlocal的区别详解 在Python中,global和nonlocal是两个关键字,用于在函数内部访问和修改外部作用域的变量。它们的使用方式和作用范围有所不同,下面将详细解释它们的区别。 global关键字 global关键字用于在函数内部声明一个变量为全局变量,使得该变量可以在函数内外进行访问和修改。具体使用方式如下…

    other 2023年7月29日
    00
  • DOS的重定向命令使用方法以及在安全方面的应用

    DOS的重定向命令可以将命令的输出流重定向为一个文件,同时也可以将文件内容重定向成输入流。 一、使用方法 DOS中有两个常用的重定向符号: >:表示将命令的输出重定向为一个文件。如果该文件不存在,则新建文件;如果文件已经存在,则清空文件内容然后再写入内容。 >>:表示将命令的输出追加到一个文件末尾。如果该文件不存在,则新建文件。 在使用这些…

    other 2023年6月26日
    00
  • ping 127.0.0.1和ping本地ip分别测试什么?

    ping 127.0.0.1和ping本地ip分别测试什么? Ping命令是一个用于测试与目标网络设备之间的连通性的网络工具。当我们需要测试本地网络设备的连通性时,可以使用Ping命令进行测试。在本文中,我们将介绍如何使用Ping命令进行测试,并详细说明Ping 127.0.0.1和Ping本地IP的作用。 如何使用Ping命令进行测试? 在Windows操…

    其他 2023年3月28日
    00
  • Mysql创建json字段索引的两种方式

    下面是关于MySQL创建JSON字段索引的两种方式的攻略。 方式一:使用虚拟列 准备工作 在 MySQL 5.7.8 版本及以后,支持通过自定义虚拟列的方式对表中的 JSON 字段进行索引。因此,在开始之前需要确保你的 MySQL 版本不低于 5.7.8。 操作步骤 接下来,我们假设有一个名为 users 的表,其中有一个 JSON 字段 info,现在我们…

    other 2023年6月25日
    00
  • iozone使用方法

    IOzone使用方法 IOzone是一款磁盘性能测试工具,可以测试磁盘的读写速度、随机访问速度等。本文将介绍如何使用IOzone进行磁盘性能测试。 安装IOzone IOzone可以在官方网站下载,也可以使用包管理器安装。在Ubuntu上,可以使用下面的命令安装: sudo apt-get install iozone3 进行测试 使用IOzone进行测试需…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部