#include <stdio.h>
#include <stdlib.h>
double calculate(int ar[], int npts, int *gtr);
int main()
{
int ar[4] = {1,2,3,0};
double result;
result = calculate(ar,4, &ar);
printf("%lf ",result );
return 0;
}
double calculate(int ar[], int npts, int *gtr)
{
double total =0;
int i = 0;
double average;
for(i=0; i<npts; i++)
{
total = total + ar[i];
}
average = total / npts;
return average;
for(i=0; i<npts; i++)
{
if(average < ar[i])
{
*gtr++;
}
}
return *gtr;
}
当我调用函数计算时,我想返回平均值和* gtr值 但是,只有平均价值回报。 * gtr用于计算比arrary中的平均数字大多少的数字。
答案 0 :(得分:1)
你使这个功能几乎正确,这是必须以不同方式完成的调用。
首先,不要从函数返回int gtr;
result = calculate(ar,4, >r);
printf("%lf %d\n",result, gtr);
;返回*gtr
。最后,不要在中间。
然后,将呼叫更改为
{{1}}
确保在第二个循环之前将{{1}}设置为零,否则它将保持未初始化状态。
答案 1 :(得分:1)
根据我的理解,你想返回平均值,并以某种方式得到gtr的值。你可以返回平均值,并使用指针将gtr值保存到另一个变量。
machineDetail
答案 2 :(得分:0)
要返回两个值,您可以这样做:
double calculate(int ar[], int npts, int *gtr)
{
double total =0;
int i = 0;
double average;
for(i=0; i<npts; i++)
{
total = total + ar[i];
}
average = total / npts;
return average;
for(i=0; i<npts; i++)
{
if(average < ar[i])
{
*gtr++;
}
}
return avergage;
}
所以,返回avergage你有第一个变量,并使用gtr的puntator值你可以有这个值。