Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用数组汇总调查结果_C_Arrays - Fatal编程技术网

C 使用数组汇总调查结果

C 使用数组汇总调查结果,c,arrays,C,Arrays,本例来自《如何编写c语言书》 40名学生被要求对餐厅的食物质量进行评分 学生自助餐厅的等级为1到10(1表示糟糕,10表示糟糕 非常好)。将40个响应放入整数数组并汇总 民意测验的结果 我一直在理解本例中使用的算法,但无法理解它,如果您能简化它,我将不胜感激。提前谢谢 // Analyzing a student poll. #include <stdio.h> #define RESPONSES_SIZE 40 // define array sizes #define FREQ

本例来自《如何编写c语言书》

40名学生被要求对餐厅的食物质量进行评分 学生自助餐厅的等级为1到10(1表示糟糕,10表示糟糕 非常好)。将40个响应放入整数数组并汇总 民意测验的结果


我一直在理解本例中使用的算法,但无法理解它,如果您能简化它,我将不胜感激。提前谢谢

// Analyzing a student poll.
#include <stdio.h>
#define RESPONSES_SIZE 40 // define array sizes
#define FREQUENCY_SIZE 11
int main( void ) {
size_t answer; // counter to loop through 40 responses
size_t rating; // counter to loop through frequencies 1-10
// initialize frequency counters to 0
int frequency[ FREQUENCY_SIZE ] = { 0 };
// place the survey responses in the responses array
int  responses[ RESPONSES_SIZE ] = { 1, 2, 6, 4, 8, 5, 9, 7, 8, 10,
1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6,
5, 6, 7, 5, 6, 4, 8, 6, 8, 10 };
// for each answer, select value of an element of array responses
// and use that value as subscript in array frequency to
// determine element to increment
for ( answer = 0; answer < RESPONSES_SIZE; ++answer )
{
    frequency[ responses [ answer ] ]=frequency[ responses [ answer ] ]+1;
} // end for
// display results
printf( "%s%17s\n", "Rating", "Frequency" );
// output the frequencies in a tabular format
for ( rating = 1; rating < FREQUENCY_SIZE; ++rating )
{
    printf( "%6d%17d\n", rating, frequency[ rating ] );
} // end for
// end main
return 0;
}
//分析学生投票。
#包括
#定义响应\u大小40//定义数组大小
#定义频率\u大小11
内部主(空){
size\u t answer;//计数器循环40个响应
大小\u t额定值;//计数器通过频率1-10循环
//将频率计数器初始化为0
int frequency[frequency_SIZE]={0};
//将调查响应放置在“响应”数组中
int responses[responses_SIZE]={1,2,6,4,8,5,9,7,8,10,
1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6,
5, 6, 7, 5, 6, 4, 8, 6, 8, 10 };
//对于每个答案,选择数组响应元素的值
//并使用该值作为数组频率的下标
//确定要增加的元素
对于(答案=0;答案
这是最简单的

for ( answer = 0; answer < RESPONSES_SIZE; ++answer )
{
    frequency[ responses [ answer ] ]=frequency[ responses [ answer ] ]+1;
} 
(这称为“提取局部变量”重构)

因此,如果
responses
中的第一个值是5,那么它要做的第一件事就是将
频率[5]
中的0替换为
0+1==1

然后用事实填充
频率

for ( rating = 1; rating < FREQUENCY_SIZE; ++rating )
{
    printf( "%6d%17d\n", rating, frequency[ rating ] );
}
for(额定值=1;额定值

。。。循环使用
频率
打印索引和每个元素的内容。

这是最简单的

for ( answer = 0; answer < RESPONSES_SIZE; ++answer )
{
    frequency[ responses [ answer ] ]=frequency[ responses [ answer ] ]+1;
} 
(这称为“提取局部变量”重构)

因此,如果
responses
中的第一个值是5,那么它要做的第一件事就是将
频率[5]
中的0替换为
0+1==1

然后用事实填充
频率

for ( rating = 1; rating < FREQUENCY_SIZE; ++rating )
{
    printf( "%6d%17d\n", rating, frequency[ rating ] );
}
for(额定值=1;额定值

。。。循环使用
频率
打印索引和每个元素的内容。

为了理解代码,请重写此循环

for ( answer = 0; answer < RESPONSES_SIZE; ++answer )
{
    frequency[ responses [ answer ] ]=frequency[ responses [ answer ] ]+1;
} // end for
for(答案=0;答案
以下方式:)

for(答案=0;答案
为了理解代码,请重写此循环

for ( answer = 0; answer < RESPONSES_SIZE; ++answer )
{
    frequency[ responses [ answer ] ]=frequency[ responses [ answer ] ]+1;
} // end for
for(答案=0;答案
以下方式:)

for(答案=0;答案
这是不言自明的。代码中充满了有用的注释。我不认为你能得到更好的解释。如果有人试过,他们最多只能重复评论中的内容。你到底不明白什么?这部分“频率[响应[回答]]=frequency[响应[回答]]+1;”?这正是我们需要解释的understand@dreamcrashwell@dasblinkenlight刚刚提供了解释:)注意
frequency
数组有11个元素,但是
frequency[0]
是未使用的。这是非常不言自明的。代码中充满了有用的注释。我不认为你能得到更好的解释。如果有人试过,他们最多只能重复评论中的内容。你到底不明白什么?这部分“频率[响应[回答]]=frequency[响应[回答]]+1;”?这正是我们需要解释的understand@dreamcrashwell@dasblinkenlight刚刚提供了解释:)请注意
frequency
数组有11个元素,但是
frequency[0]
未使用。获取它需要花费数小时。T