📌  相关文章
📜  C程序,找出字符串中字符出现的频率(1)

📅  最后修改于: 2023-12-03 14:40:27.196000             🧑  作者: Mango

使用C程序计算字符串中字符出现的频率

本篇文章将介绍如何使用C程序计算字符串中每个字符出现的频率,并给出相应的代码示例。首先,我们需要了解一下字符串的基本概念以及C语言中字符串的表示方式。

字符串概念与表示

在计算机程序中,字符串是一系列字符的序列,通常以空字符\0作为结尾。在C语言中,字符串可以使用字符数组或指向字符的指针来表示。例如:

char str1[] = "hello world";      // 使用字符数组表示
char* str2 = "hello world";       // 使用指针表示

上述代码中,str1str2分别表示相同的字符串。

计算字符出现的频率

要计算字符串中每个字符出现的频率,我们需要遍历字符串,并记录每个字符出现的次数。一种简单的实现方式是使用一个大小为256的整型数组来记录每个字符出现的次数,数组下标为字符的ASCII码。例如,要统计字符串"hello world"中字母l出现的次数,可以使用以下代码:

char str[] = "hello world";
int freq[256] = {0};    // 初始化每个字符出现次数为0
int i, ascii;
for(i = 0; str[i] != '\0'; i++)
{
    ascii = (int) str[i];    // 将字符转换成对应的ASCII码
    freq[ascii]++;           // 对应字符次数加1
}
int l_freq = freq[(int) 'l'];   // 获取字母'l'的出现次数

上述代码中,freq数组用于记录每个字符出现的次数,ascii变量表示当前字符的ASCII码,l_freq变量表示字母l的出现次数。

为了计算字符串中每个字符的出现次数,我们可以进一步封装上述代码,如下所示:

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

void calc_freq(char* str, int* freq)
{
    int i, ascii;
    for(i = 0; str[i] != '\0'; i++)
    {
        ascii = (int) str[i];
        freq[ascii]++;
    }
}

int main()
{
    char str[] = "hello world";
    int freq[256] = {0};
    calc_freq(str, freq);
    
    int i;
    for(i = 0; i < 256; i++)
    {
        if(freq[i] > 0)
        {
            printf("'%c': %d\n", (char) i, freq[i]);
        }
    }
    
    return 0;
}

上述代码中,calc_freq函数用于计算字符串中每个字符的出现次数,并将结果存储在freq数组中。main函数中首先调用calc_freq函数,然后遍历freq数组,输出每个字符的出现次数。

总结

本篇文章介绍了如何使用C程序计算字符串中每个字符出现的频率。除了上述方法之外,还可以使用哈希表等其他数据结构来实现该功能。无论哪种实现方式,都可以通过遍历字符串并记录每个字符的出现次数来实现。