69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
struct flex
{
int count;
double average;
double scores[];
};
void showFlex (const struct flex *);
int main (void)
{
struct flex *pf1, *pf2;
int n = 5;
int i;
int tot = 0;
pf1 = malloc(sizeof(struct flex) + n * sizeof(double));
pf1->count = n;
for (i = 0; i < n; i++)
{
fp1->score[i] = 20.0 - i;
tot += fp1->score[i];
}
pf1->average = tot/n;
showFlex(pf1);
n = 9;
tot = 0;
pf2 = (void *)malloc(sizeof(struct flex) + n * sizeof(double)); /*malloc 是 void* 的返回值..这里面应该换成struct flex 还是其他? */
pf2->count = n;
for (i = 0; i < n; i++)
{
fp1->score[i] = 20.0 - i/2.0;
tot += pf2->score[i];
}
pf2->average = tot/i;
showFlex(pf2);
return 0;
}
void showFlex (const struct flex *p)
{
int i;
printf("Score: ");
for (i = 0; i < p->count; i++)
{
printf("%g ", p->score[i]);
}
printf("\n Average: %g\n", p->average);
}