当这个程序返回平均值时,每次都为零,我没有正确地将值传递给average()函数吗?我不知道要修复什么,因为我已经尝试过切换数据类型并输出%f 我不希望代码为我完成,只需要一些指导。谢谢任何可以提供帮助的人。
#include <stdio.h>
float average(float arr[], float num) {
for (z = 0; z < num; ++z) {
sum = arr[z]+1;
}
avg = sum / num;
return avg;
}
int main(){
int count;
int a;
float initial[a];
float avg;
avg = average( initial, a);
printf("enter number of values you'd like averaged.\n ");
scanf("%i",&a);
count = a;
printf("enter numbers you'd like averaged\n");
for(a= 0; a < count; a++)
{
scanf("%f",&initial[a]);
}
printf("The average is %d",avg);
return 0;
}
答案 0 :(得分:2)
有很多问题。在代码的这一部分:
DECLARE @return_value int
EXEC @return_value = [dbo].[PostScheduledTasks]
@actualStart = N'08-03-2016 8:00:00 AM',
@actualFinish = N'08-03-2016 4:00:00 PM',
@actualEndDate = N'08-03-2016 4:00:00 PM',
@UserDate1 = N'27-01-2016 8:00:00 AM',
@IsCompleted = 1,
@PercentComplete = 1,
@UStmp = N'jsuske',
@SchedukeTaskID = 597295,
@SortOrder = 19
SELECT 'Return Value' = @return_value
GO
您没有计算或初始化总和,而是计算最后一个元素加1.使用:
for (z = 0; z < num; ++z) {
sum = arr[z]+1;
}
除此之外,在计算平均值之前,您还没有填充数组。还有其他各种问题。这是一个有效的实例。 http://ideone.com/5nOV81
答案 1 :(得分:2)
在main
中将数值输入数组后调用函数(现在的数组未初始化) -
for(a= 0; a < count; a++)
{
scanf("%f",&initial[a]);
}
avg = average( initial, a);
printf("The average is %f",avg);
^^ note specifier is %f not %d as you used
在您的函数average
中代替此 -
sum = arr[z]+1;
做 -
sum+= arr[z]; //initliaze sum to 0 before loop
答案 2 :(得分:1)
您的结果始终为零,因为您在读取变量WHERE date_format(o.orderdate, '%Y-%m') = '2014-10'
和数组a
之前调用平均方法...
initial
答案 3 :(得分:0)
将是sum + = arr [z];
你必须将sum初始化为0
sum=0;
for (z = 0; z < num; ++z) {
sum += arr[z];
}
你必须在读完所有数字后调用函数平均值
for(a= 0; a < count; a++)
{
scanf("%f",&initial[a]);
}
avg = average(initial, a);
虽然平均值的返回类型是浮点数,因此您必须在printf中使用%f
printf("The average is %f",avg);