结构体,小白爱提问

#include<stdio.h>
#define N 3
struct student{
int num;
char name[20];
int score[3];
float average;
};


int main(){
void input(struct student stu[]);
struct student max(struct student stu[]);
void print(struct student stu);
struct student stu[N],*p=stu;
input(p);
print(max(p));
return 0;

}



void input(struct student stu[]){
int i;
printf("请输入各学生的信息:学号、姓名、三门课成绩:\n");
for(i=0;i<N;i++){
scanf("%d %s %f %f %f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
printf("%6.2f",stu[i].average);
}
}



struct student max(struct student stu[]){
int i,m=0;
for(i=0;i<N;i++)
if(stu[i].average>stu[m].average)
m=i;

return  stu[m];
}

void print(struct student stu){
printf("平均成绩最高的同学的各信息为:\n");
printf("学号:%d\n姓名:%s\n三门课成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.2lf\n",
stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2],stu.average);
}



有N个结构题变量stu,内含学生学号,姓名,三门科目的成绩,要求输出平均成绩最高的学生的信息(包括学生学号,姓名,三门成绩,平均成绩)。运行不出结构是为什么呀。。。。。。。
全部评论
你再回去好好补补地址传递和值传递
点赞 回复 分享
发布于 2018-10-18 20:36
以前做过同样的问题,要不看看我的代码?( ☉_☉)
点赞 回复 分享
发布于 2018-10-18 22:07
我觉得是char数组最后没有加'\0',然后导致烫烫烫烫烫烫了。。当然,3楼说的也应该改一下。。。虽然是警告。(错了别喷我)
点赞 回复 分享
发布于 2018-10-18 21:16
别听上面两个人胡扯,不懂装懂。 你的问题在于struct里面定义score为int型,但下面scanf读取却是用%f读取,%f是读取float的,你要把两处改的一致。
点赞 回复 分享
发布于 2018-10-18 21:12
楼上正解
点赞 回复 分享
发布于 2018-10-18 20:41

相关推荐

Twilight_mu:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务