c++有5个学生,每个学生的**包括学号、班级、姓名、3门课程。从键盘输入5个学生**,

时间:2017.06.17 发布人:U2586242937

c++有5个学生,每个学生的**包括学号、班级、姓名、3门课程。从键盘输入5个学生**,

已解决问题

谷歌U2586242937用户在2017.06.17提交了关于“杨致远c++有5个学生,每个学生的**包括学号、班级、姓名、3门课程。从键盘输入5个学生**,”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-12-17T22:18:56。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,谢谢你帮我,祝你快乐,愿你事事如意 !

希望以下的回答,能够帮助你。

第1个回答

用户名:xujingwei518  

首先,你的max的函数原型应该是intma来自x(structstudentstu[]);不对指位殖就投应该是void,返回平均分数最国条宣进垂成制和时高的下标即可。
问答后求平均分数的函数也有些问题,函数类型是void的,可是有return语底风红少犯结犯振格口牛句,而且return语句在fo烟触r循环中,想通过这种方法返回3个平均值,可是函数执行完第一个return语句后就就推出函数了,所以这个有点问题。
总问题就是void函数不能够有返回值,也就是不结据底跳其历够吃存能够有return语句。
这里面还有好多问题,我语言表达能力有限,我把我改的程序给你看一下,要是有不懂的可以问,和你的程序差不多,在你的基础上改的。
#include"stdio.h"
structstudent
{
ch厚ar**m[6];
charname[20];
floatscore[3];
float**er;
}stu[3];
voidinput(structstudentstu[])
{
inti;
printf("pleaseentertheinformation测载误氧所ofstudent:\n");
for(i=0;i<3;i++)
scanf("%s%s%f%f%济混府绿果裂事似植经f",&stu[i].**m,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
}
void**g(structstudentstu[]富批或式)
{
inti,j;
floatsum;
for(j=0;j<3;j++)
{
sum=0;
f谓议声当茶了乡省制贵贵or(i=0;i<3;i++)
sum+=(stu[i].score[j]);
stu[i].**er=sum效谈顺岩/3.0;//有修改
}
}
intmax(structstudentstu研息司千们二[])//有修改
{
inti,m;
for(i=0;i<3;i++)
{
m=0;
stu[i].**er=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
if(stu[i].**er>stu[m].**er)
m=i;
}
returnm;//有米约沙作房款训修改
}
voidmain()
{
inti,m;//有修改,m用于保存最高平均分数的冲代工下片水下包歌立下标
voidinput(structstudentstu[]);
void**g(str杂验阳司与陈uctstudentst末倒u[]);
intmax(structstudentstu[]);
input(st反火快转突场统沿u);
**g(stu);
m=max(stu);
for(i=0;i<3;i++)//有修改
printf("第%d科平均成绩**g:%f\n",i+冲小到根源江感1,stu[i].**er);//有修改
printf("**m:%s\nname:%s\nscore:%f%f%f\n**g:%f\n",stu[m].**m,stu[m].name,stu[m].score[0],stu[m].score[m],stu[m].score[2],stu[m].**er);
}