|
1鱼币
有5个学生,每个学生的数据包括学号、姓名、三门课的成绩; num | name | class1 | class2 | class3 | 001 | Li Ming | 87.00 | 94.00 | 79.00 | 002 | Chen Fei | 68.00 | 89.00 | 82.00 | 003 | Sun Jie | 78.00 | 90.00 | 74.00 | 004 | He Wei | 69.00 | 70.00 | 62.00 | 005 | Liu Li | 84.00 | 92.00 | 81.00 |
编写五个子函数:
函数input,以表中的数据初始化5个学生的数据;
函数average,求出每个学生的平均分;
函数class_average,求出每门课的平均分;
函数max,求出平均分最高的学生;
函数class_max,求出每门课分数最高的学生.
在主函数main中分别调用五个子函数,并输出五个学生的数据和平均分、三门课程的平均分、平均分最高和每门课分数最高的学生数据。
#include<stdio.h>
#include<string.h>
struct report
{
int num;
char name[20];
float class1;
float class2;
float class3;
}stu[5];
int a[]={0},b[]={0}; int x=0,y=0,z=0,n=5;
void main()
{
void input(struct report *p);
float average(struct report *p);
float class_average(struct report *p);
int max();
int class_max(struct report *p);
struct report *p;
int max,i;
p=stu;
input(p);
average(p);
printf("num name class1 class2 class3 average\n");
for(i=0;p<stu+n,i<n;p++,i++)
printf("%3d%-20s%4.2f%4.2f%4.2f%4.2f\n",p->num,p->name,p->class1,p->class2,p->class3,a);
class_average(p);
printf("class average");
for(i=0;i<3;i++)
printf("%4.2f",b);
printf("\n");
max=max();
p=stu+max;
printf("average max : %-20s\n",p->name);
class_max(p);
p=stu+x;printf("class1 max: %-20s\n",p->name);
p=stu+y;printf("class2 max: %-20s\n",p->name);
p=stu+z;printf("class3 max: %-20s\n",p->name);
}
void input(struct report *p)
{
(*p).num=1;
strcpy((*p).name,"Li Ming");
(*p).class1=87;(*p).class2=94;(*p).class3=79;
p++;(*p).num=2;
strcpy((*p).name,"Chen Fei");
(*p).class1=68;(*p).class2=89;(*p).class3=82;
p++;(*p).num=3;
strcpy((*p).name,"Sun Jie");
(*p).class1=78;(*p).class2=90;(*p).class3=74;
p++;(*p).num=4;
strcpy((*p).name,"He Wei");
(*p).class1=69;(*p).class2=70;(*p).class3=62;
p++;(*p).num=5;
strcpy((*p).name,"Liu Li");
(*p).class1=84;(*p).class2=92;(*p).class3=81;
}
float average(struct report *p)
{
int i;
for(i=0;i<n;i++,p++)
a=((*p).class1+(*p).class2+(*p).class3)/3;
}
float class_average(struct report *p)
{
int a;
for(a=0,p=stu;p<stu+n;p++)a=a+(*p).class1;
b[0]=a/n;
for(a=0,p=stu;p<stu+n;p++)a=a+(*p).class2;
b[1]=a/n;
for(a=0,p=stu;p<stu+n;p++)a=a+(*p).class3;
b[2]=a/n;
}
int max()
{
int i,max=0;
for(i=1;i<n;i++)if(a[max]<a)max=i;
return max;
}
int class_max(struct report *p)
{
int i;
for(i=1;i<n;i++)if((*(p+x)).class1<(*(p+i)).class1)x=i;
for(i=1;i<n;i++)if((*(p+y)).class2<(*(p+i)).class2)y=i;
for(i=1;i<n;i++)if((*(p+z)).class3<(*(p+i)).class3)z=i;
}
请问哪里出错了??怎样也运行不了..
新人报到,暂无多少鱼币,请原谅
|
最佳答案
查看完整内容
int max
int max();
变量和函数重名
int a[]={0}a是个数组
float average(struct report *p)
{
int i;
for(i=0;i
|