gpt4 book ai didi

C中的字符频率直方图

转载 作者:行者123 更新时间:2023-12-04 04:54:51 25 4
gpt4 key购买 nike

我读了这个程序,但我无法理解它。请解释 length[] 中究竟发生了什么阵列。它如何用于存储不同类型的字符,即数字和字符。以下是代码:

#include <stdio.h>
#define EOL '\n'
#define ARYLEN 256
main()
{
int c, i, x;
int length[ARYLEN];
for(x = 0; x < ARYLEN;x++)
length[x] = 0;
while( (c = getchar() ) != EOL)
{
length[c]++;
if (c == EOL)
break;
}
for(x = 0; x < ARYLEN; x++)
{
if( length[x] > 0){
printf("%c | ", x);
for(i = 1; i <= length[x]; ++i){
printf("*");
}
printf("\n");
}
}
}

最佳答案

该数组不存储任何字符(至少在概念上)。它存储程序遇到数值为 c 的字符的次数。在索引 c 的数组位置.

基本上,在 C 编程语言中,一个 char是一种由 8 位组成的数据类型,能够为 unsigned char 保存 0 到 255 范围内的值。或 -128 到 127 signed char .
然后,程序定义一个足够大的数组,以容纳尽可能多的不同值,使用 char 表示它是可能的。 , 每个唯一值对应一个数组位置。
然后它使用适当的数组位置计算出现次数,length[c] ,作为该特定值的计数器。当它遍历数组打印数据时,它可以通过查看循环内的当前索引来判断数据属于哪个字符,所以 printf("%c | ", x);是字符 while length[x]是我们追求的数据。

关于C中的字符频率直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16891819/

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