首页 > 代码库 > 课堂补忽
课堂补忽
#include<stdio.h> #define N 5 struct Student { int num; char name[20]; float score[3]; float aver; }stu[5]; void aver(struct Student stu[]); int main() { void input( struct Student stu[]); struct Student max (struct Student stu[]); void print(struct Student stu); struct Student *p=stu; input(p); print(max(p)); aver(stu); 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].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/5; } } struct Student max(struct Student stu[]) { int i,m=0; for(i=0;i<N;i++) if(stu[i].aver>stu[m].aver) m=i; return stu[m]; } void print(struct Student stud) { printf("\n成绩最高的学生是:\n"); printf("学号:%d\n姓名:%s\n三门课成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.2f\n",stud.num,stud.name,stud.score[0],stud.score[1],stud.score[2],stud.aver); } void aver(struct Student stu[]) { float sum1,sum2,sum3; int i; for(i=0;i<3;i++) { sum1+=stu[i].score[0]; } for(i=0;i<3;i++) { sum2+=stu[i].score[1]; } for(i=0;i<3;i++) { sum3+=stu[i].score[2]; } printf("第一门成绩的平均成绩%5.1f\n第二门成绩的平均成绩%5.1f\n第三门成绩的平均成绩%5.1f\n",sum1/3,sum2/3,sum3/3); }
请输出各学生的信息:学号、姓名、三门课成绩: 11 wang 77 78 98 22 li 98 78 99 33 hua 98 89 78 44 hul 90 99 78 55 ri 78 89 77 成绩最高的学生是: 学号:22 姓名:li 三门课成绩: 98.0, 78.0, 99.0平均成绩: 55.00 第一门成绩的平均成绩 91.0 第二门成绩的平均成绩 81.7 第三门成绩的平均成绩 91.7 -------------------------------- Process exited after 45.28 seconds with return value 0 请按任意键继续. . .
总结:课堂上在函数那里想利用多个for循环来减少行数,但是不停出错,最终还是用回了书上例题的方式最终成功运行。
课堂补忽
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。