鱼C论坛

 找回密码
 立即注册
查看: 2985|回复: 7

求救!!!

[复制链接]
发表于 2011-12-23 11:46:33 | 显示全部楼层 |阅读模式
1鱼币
有5个学生,每个学生的数据包括学号、姓名、三门课的成绩;
numnameclass1class2class3
001Li Ming87.0094.0079.00
002Chen Fei 68.0089.0082.00
003Sun Jie78.0090.0074.00
004He Wei69.0070.0062.00
005Liu Li84.0092.0081.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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-23 11:46:34 | 显示全部楼层
int max
int max();
变量和函数重名

int a[]={0}a是个数组
float average(struct report *p)
{  
   int i;
   for(i=0;i<n;i++,p++)
   a=((*p).class1+(*p).class2+(*p).class3)/3;
}
这个函数里把float赋值给数组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-2 01:45:30 | 显示全部楼层
楼上救了你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2012-1-2 18:28:15 From FishC Mobile | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-5 10:13:27 | 显示全部楼层
参考一下{:1_1:}{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-5 12:17:03 | 显示全部楼层
好难  看不懂!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-5 13:23:22 | 显示全部楼层
貌似都是些小错误,自己可以改正的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-4 22:20:23 | 显示全部楼层
过来逛逛。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 14:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表