【发布时间】:2021-01-13 05:54:13
【问题描述】:
这里是超级新秀。只是在本学期的 C 课程之前做了一点学习。我发现了一本书练习题,要求对数组中的温度值进行分类。这是我所拥有的一切:
// write program to process collection of daily high temps
#include <stdio.h>
int main (void)
{
int temp[26] = {55, 62, 68, 74, 59, 45, 41, 58, 60, 67,
65, 78, 82, 88, 91, 92, 90, 93, 87, 80,
78, 79, 72, 68, 61, 59};
int i;
float sum;
float avg;
int r1, r2, r3; // range 1, range 2, range 3
// Loop to catagorize temperature values
for(i = 0; i <= 26; i++)
{
if (temp[i] <= 60)
{
r1++;
}
else if ((temp[i] > 60) && (temp[i] <= 84))
{
r2++;
}
else
{
r3++;
}
}
printf("\nThe number of cold days are: %d", r1);
printf("\nThe number of pleasant days are: %d", r2);
printf("\nThe number of hot days are: %d", r3);
// Loop to take the average temperature
for (i = 0; i <= 25; i++)
{
sum = sum + temp[i];
avg = sum / i;
}
printf("\nThe average temperature of the set is: %f", avg);
return 0;
}
平均值计算正确,但是,代码未正确分类数组中的临时值。我昨天刚学了数组。任何人都可以帮忙吗?谢谢!
【问题讨论】:
-
不需要这个
(temp[i] > 60) &&。尝试你的代码并思考逻辑。这样的构造只会在以后更改代码时产生不一致的风险。与您在显示的代码中实际陷入的相同类型的不一致性漏洞,使用“26”作为数组大小,26 个初始化器用于数组,错误地<=26用于第一个循环,或多或少正确地使用<=25第二个循环,允许第一个循环中的错误潜入。您可以通过自动使用数组的大小来避免sizeof(temp)/sizeof(temp[0])和<而不是<=。