又是C语言问题!!高手们帮帮忙吧!!

用max函数找出各课的最高分的同学,并且最高分的学生的信息要在主函数中输出。以下是我编的程序,有问题,但是不知道错在哪??请高手帮忙看看!!#include<std... 用max函数找出各课的最高分的同学,并且最高分的学生的信息要在主函数中输出。以下是我编的程序,有问题,但是不知道错在哪??请高手帮忙看看!!#include <stdio.h>#define N 5struct str0{ float a,b,c;};struct str1{ char no[3]; char name[15]; struct str0 chengji;};struct str1 inform[N]={ "01","ZhaoLi",{80.5,78,96},      "02","QianDuo",{67.5,69,78.5},      "03","SunMin",{95,95,95},      "04","LiQing",{78,82,86},      "05","LiYi",{79,86,66}     };void max(int * max){ int i; for(i=1,*max=0;i<N;i++) {  if(inform[*max].chengji.a<inform[i].chengji.a)  {*max=i;} } for(i=1,*(++max)=0;i<N;i++) {  if(inform[*(++max)].chengji.b<inform[i].chengji.b)  {*(++max)=i;} } for(i=1,*(++max)=0;i<N;i++) {  if(inform[*(++max)].chengji.c<inform[i].chengji.c)  {*(++max)=i;} }}void main(){ float ave; int m[3]; max(m);  printf("C  最高分:%s ,%.1f",inform[m[0]].name,inform[m[0]].chengji.a);  printf("BD 最高分:%s ,%.1f",inform[m[1]].name,inform[m[1]].chengji.b);   printf("电路 最高分:%s ,%.1f",inform[m[2]].name,inform[m[2]].chengji.c);} 展开
 我来答
zssureqh
2012-05-06 · TA获得超过351个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:273万
展开全部
#include <stdio.h>
#define N 5
struct str0{ float a,b,c;};
struct str1{ char no[3];char name[15];struct str0 chengji;};
struct str1 inform[N]={ "01","ZhaoLi",{80.5,78,96}, "02","QianDuo",{67.5,69,78.5}, "03","SunMin",{95,95,95}, "04","LiQing",{78,82,86}, "05","LiYi",{79,86,66} };
void max(int * max)
{
int i;
for(i=1,*max=0;i<N;i++)
{
if(inform[*max].chengji.a<inform[i].chengji.a)
{
*max=i;
}
}
for(i=1,*(max+1)=0;i<N;i++)
{
if(inform[*(max+1)].chengji.b<inform[i].chengji.b)
{
*(max+1)=i;
}
}
for(i=1,*(max+2)=0;i<N;i++)
{
if(inform[*(max+2)].chengji.c<inform[i].chengji.c)
{
*(max+2)=i;
}
}
}
void main()
{
float ave;
int m[3];
max(m);
printf("C 最高分:%s ,%.1f\n",inform[m[0]].name,inform[m[0]].chengji.a);
printf("BD 最高分:%s ,%.1f\n",inform[m[1]].name,inform[m[1]].chengji.b);
printf("电路 最高分:%s ,%.1f\n",inform[m[2]].name,inform[m[2]].chengji.c);
}

问题很简单,指针控制出错了,里面的*(++max)每循环一次指针就会移动一次,会导致指针指向溢出,改成*(p+N)形式来操作就可以了,能够输出正确的结果。
另外你的max函数里面的形参名称最后不要与函数名称相同,还有就是里面只能在已知科目数量的前提下判断,所以有待改进,可以考虑给max函数传递一个科目数量形参。
weixyc
2012-05-06 · TA获得超过1128个赞
知道小有建树答主
回答量:763
采纳率:100%
帮助的人:481万
展开全部
结构体变量不是这么定义的,直接用struct直接去定义str是错误的
你可以这样 定义
struct Student
{ int num;//学号
char name[15];//姓名
float score[3];//分数
}str[5];//定义五个学生
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式