你好我在计算函数的平均值时遇到了问题,程序编译然而我没有得到64.2的预期答案打印出来而是得到一组随机的整数和字符。
这不是整个代码,只是适当的变量和函数。
// main function and prototyping would be here
int size=0;
float values[]={10.1, 9.2, 7.9, 9.2, 13.0, 12.7, 11.3};
float mean(float values[], int size)
{
float sum = 0;
float mean = 0;
for (size = 0; size > 7; size++)
{
sum += values[size];
mean = sum / 7;
}
return mean;
}
答案 0 :(得分:1)
改变你的循环:
for (size = 0; size < 7; size++)
{
sum += values[size];
}
mean = sum / 7;
for
循环的终止条件不对。 mean
移出for循环。答案 1 :(得分:1)
for (size = 0; size > 7; size++)
由于size被初始化为0,并且它增加1,所以它在第一次迭代结束时变为1并且未通过测试(它不是> 7)。因此,它会立即退出循环。
其次,在循环完成后计算循环时,计算循环内的平均值。从理论上讲,你应该得到一个正确的值,因为你将它重做为循环中该点的总和的平均值,但这是浪费时间。您还可以通过重新定义来消除尺寸。
float mean(float values[], int size)
{
float sum = 0;
float mymean = 0;
for (int i = 0; i < size; i++)
{
sum += values[i];
}
mymean = sum / size;
return mymean;
}
答案 2 :(得分:0)
为什么测试size > 7
在那里?期望您的初始值具有异常大的零值?你可能意味着size < 7
,尽管使用像这样的任意幻数是麻烦。
你可能想要的是:
float mean(float* values, int size)
{
float sum = 0;
for (int i = 0; i < size; ++i)
sum += values[i];
return sum / size;
}
要成为更多C ++,您需要签名:
float mean(const float* values, const size_t size)
这样你就可以通过修改这些值来解决任何错误。