gpt4 book ai didi

c - 字符串中不属于字符串一部分的字符的频率。

转载 作者:行者123 更新时间:2023-11-30 15:11:58 25 4
gpt4 key购买 nike

我需要打印字符串中字符的频率,我已经为其开发了一个代码。但是,我的代码只会显示字符串中的字符。但我希望它显示从 a 到 z 的所有字符例如:

hello.
A 0
B 0
C 0
D 0
E 1

等等。

无论如何,这是我的代码:

#include <stdio.h>

int main(){
char string[100];
int index, frequency[256] = {0};
printf("Enter a String\n");
fgets(string,99,stdin);
fflush(stdin);
for(index=0; string[index] != '\0'; index++){
frequency[string[index]]++;
}

printf("\nCharacter Frequency\n");
for(index=0; index < 256; index++){
if(frequency[index] != 0){
printf("%5c%10d\n", index, frequency[index]);
}
}

return 0;
}

最佳答案

首先,如果你想打印每个字符(包括0频率字符)的频率,你不应该这样做:if(Frequency[index] != 0).

如果您删除该行,您的代码将打印扩展 ASCII 代码中的每个字符及其频率。正如您所要求的,您只需要知道 az 之间所有字符的频率,并且可能来自 A Z 也是(例如,我想您不需要知道字符串中有多少 TAB)。

为此,您应该将最终 for 循环中的条件语句替换为如下内容:

if(('A' <= index && index <= 'Z') || ('a' <= index && index <='z'))
printf("%5c%10d\n", index, frequency[index]);

正如 Sourav Ghosh 指出的那样,您还应该将 char 替换为 unsigned char

关于c - 字符串中不属于字符串一部分的字符的频率。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35316486/

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