📜  C测验– 105 |问题4(1)

📅  最后修改于: 2023-12-03 15:00:12.544000             🧑  作者: Mango

C测验– 105 | 问题4

在这个C测验中,我们将讨论问题4并提供解决方案。

问题描述

问题4要求编写一个程序,该程序接受一个字符串作为输入,并统计该字符串中每个字符出现的次数。程序应该忽略字符的大小写。

示例输入:Hello, World!

示例输出:

h: 1
e: 1
l: 3
o: 2
,: 1
(space): 1
w: 1
r: 1
d: 1
!: 1
解决方案

下面是问题4的解决方案的代码片段:

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

// 定义字符计数函数
void countCharacters(char* str) {
    int count[26] = {0};  // 用于计数的数组,每个字母对应一个元素

    // 遍历输入的字符串,并统计出现次数
    for (int i = 0; i < strlen(str); i++) {
        char c = tolower(str[i]);  // 将字符转换为小写,以忽略大小写

        // 检查字符是否为字母
        if (isalpha(c)) {
            count[c-'a']++;  // 增加相应字母的计数器
        }
    }

    // 打印字符出现次数
    for (int i = 0; i < 26; i++) {
        if (count[i] > 0) {
            printf("%c: %d\n", i+'a', count[i]);
        }
    }
}

int main() {
    char str[100];  // 声明一个足够大的字符数组,用于存储输入的字符串

    printf("请输入一个字符串:");
    fgets(str, sizeof(str), stdin);  // 从标准输入读取字符串

    // 移除换行符
    if ((strlen(str) > 0) && (str[strlen(str) - 1] == '\n')) {
        str[strlen(str) - 1] = '\0';
    }

    // 调用字符计数函数
    countCharacters(str);

    return 0;
}
程序说明

这个程序实现了一个字符计数功能。它接受一个字符串作为输入,并统计该字符串中每个字符出现的次数。程序会忽略字符的大小写。

函数countCharacters通过遍历输入的字符串并使用一个长度为26的整型数组进行计数。每个字母对应数组中的一个元素,即count[0]对应字母'a',count[1]对应字母'b',以此类推。

在遍历字符串时,使用tolower函数将字符转换为小写,以便忽略大小写。然后,使用isalpha函数检查字符是否为字母。如果是字母,则增加相应字母的计数器。

最后,通过循环遍历计数数组,并打印出现次数大于0的字符及其出现次数。

程序通过主函数main接收用户输入的字符串,并调用countCharacters函数进行计数。

如何编译和运行程序

要编译并运行上述程序,您需要一个C编译器。打开一个文本编辑器,将代码复制并保存为char_count.c

然后,在终端中使用以下命令编译程序:

gcc -o char_count char_count.c

最后,运行生成的可执行文件:

./char_count

程序将提示您输入一个字符串,并输出每个字符的计数。

这就是问题4的解决方案!希望对您有所帮助!