初学者在这里,我已经尝试了好几个小时,无法正常工作,也在线搜索并且找不到答案。
我正在尝试编写一个程序,在其中输入人的年龄和身高,然后计算每个人的平均值以及年龄与身高的平均比例。每当我将结构传递给getAverage函数时,它都会返回地址(我认为)而不是平均值。
#include <stdio.h>
#include <stdlib.h>
typedef struct person
{
int age;
double height;
} Person;
double getAv (Person people[50], int max)
{
int i;
double total, retval;
total = 0;
for (i=0; i<=max; i++)
{
total = total + people[i].age;
}
retval = total / max;
return retval;
}
int main (void)
{
Person people[50];
int i;
while (i++, people[i].age>=0)
{
printf ("Person #%d\n", i);
printf ("enter an age: ");
scanf ("%d", &people[i].age);
if (people[i].age<0)
break;
printf ("enter a height: ");
scanf ("%lf", &people[i].height);
printf ("\n");
}
double averageAge;
averageAge = getAv (&people[50], i);
printf ("%.1lf\n", averageAge);
}
尚未实施平均身高或比例,只是试图获取目前平均年龄。当我尝试从averageAge = getAv(&people [50],I)中取出&时;我收到一个编译错误,告诉我它需要&。任何帮助,将不胜感激。
如果您采用这种方式,则需要接收函数(Person&people [],int n) 其中n是数组的长度。 我们使用'&'来不复制数组,并且您仅在函数中传递索引为50的元素,仅执行(people,n)