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