有一个函数avg(int, ...)
可以计算输入整数的平均数,
avg(1,2,3) = 2, avg(2,3,4,5,6) = 4
现在我有一个整数数组,需要使用avg()
来获得它们的平均值,
但是数组的大小是动态的,可以从stdin
或从文件中读取。
代码示例:
int i, num;
scanf("%d", &num);
int *p = malloc(num * sizeof(int));
for(i = 0; i < num; ++i)
scanf("%d", &p[i]);
// what should I do now?
// avg(p[0], p[1],....)
请注意,avg()
函数只应调用一次。
- 编辑 -
avg()函数只是一个例子,真正的函数比这更复杂。
答案 0 :(得分:4)
没有可移植的方式来做到这一点。大多数情况下,当存在varargs函数时,也会有一个直接接受数组参数的变体。
答案 1 :(得分:0)
只需传递p
以及p
可指向的元素数量。
float computeAverage( int *p, int count ) ; // count being `num` in this case.
在函数中,有一个迭代 0到count-1 的循环,并且可以计算所有元素的总和。循环之后,只需返回sum/count
即平均值。