gpt4 book ai didi

c - 如何创建一个函数来计算每个字母的出现次数?

转载 作者:太空宇宙 更新时间:2023-11-04 05:21:39 25 4
gpt4 key购买 nike

在 C 中,我需要创建一个函数,用于输入,计算并显示每个字母出现的次数。

对于“Lorem ipsum dolor sit amet”的输入,该函数应返回类似于以下内容的内容:

a: 0
b: 0
c: 0
d: 1
e: 2
f: 0
...

最佳答案

因此,您基本上需要逐个字符地通读整个文件。假设你知道文件读取是如何工作的,你将需要做一些类似的事情(抱歉,我已经有一段时间没做 C 了):

if (isalpha(ch)) {
count[ch-'a']++;
}
/* rest of code where char pointer is moved on etc. */

您需要为此导入 ctype 库:

#include <ctype.h>

** 忘了提,假设你会推断出以下内容:ch 是指向当前读入字符的指针,而 count[] 是一个 int[],初始化为全零,大小为 (26 * 2) = 52 以适应大写和小写。如果大写和小写应该被同等对待,您可以使用 ctype 库中也包含的 tolower(int c) 函数。在这种情况下,您只需要一个 26 大小的数组。

if (isalpha(ch)) {
count[tolower(ch)-'a']++;
}

然后 count[] 应该包含每个字符的计数。

/* ***** */

如果您只想使用 stdio.h 库执行此操作,您可以实现 ctype.h 库中使用的两个函数。

isalpha(int c) 函数的简单实现可能是这样的:

if (((int)c >= 'a' && (int)c <= 'z') || ((int)c >= 'A' && (int)c <= 'Z') {
return TRUE;
} else {
return FALSE;
}

(其中 TRUE 和 FALSE 是您的返回类型和您定义的类型)。

一个真正简单的 tolower 版本可能是这样的:

if ((int)c >= 'A' && (int)c <= 'Z') {
return (int)c - 'a';
} else {
return (int)c;
}

你可能没有所有的 Actor ......

关于c - 如何创建一个函数来计算每个字母的出现次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4121589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com