代码:
/* Copyright (c) 2016,烟台大学计算机与控制工程学院 All Rights Reserved. 文件名称:学生成绩处理 作 者:胡寅生 完成日期:2016年12.15 版 本 号;v1.0 */ #include <stdio.h> #define N 100 /*N表示最多允许的学生人数*/ struct Student { int num; //学号 int c; //C语言成绩 int math; //数学成绩 float aver; //两科均分 }; int main( ) { int n; double xfj,ckjf=0,skjf=0; //定义结构体数组存放多名同学的成绩 struct Student stu[N]; printf("请输入学生人数: "); scanf("%d", &n); printf("请输入学号、C和数学课的成绩: \n"); //输入数据 int i; for(i=0;i<n;i++) { scanf("%d%d%d",&stu[i].num,&stu[i].c,&stu[i].math); } printf("学号 c 数学 学分绩\n"); for(i=0;i<n;i++) { xfj=(stu[i].c*3+stu[i].math*4)/7.0; printf("%d%5d%5d",stu[i].num,stu[i].c,stu[i].math); printf(" %.2lf\n",xfj); ckjf=ckjf+stu[i].c; skjf=skjf+stu[i].math; stu[i].aver=xfj; } ckjf=1.0*ckjf/n; skjf=1.0*skjf/n; printf("科均分 %.2lf %.2lf\n",ckjf,skjf); //输出得奖学金(学分绩高于80且没有挂科)的同学学号 printf("得奖学金的同学的学号是:\n"); for(i=0; i<n; i++) if(stu[i].c>=60&&stu[i].math>=60&&stu[i].aver>=80) printf("%d ",stu[i].num); //输出成绩单 return 0; }
老贺的代码:#include <stdio.h> #define N 100 /*N表示最多允许的学生人数*/ struct Student { int num; //学号 int c; //C语言成绩 int math; //数学成绩 float aver; //两科均分 }; int main( ) { int i, n=0; int totalC=0, totalMath=0; float averC, averMath; struct Student stu[N]; printf("请输入学生人数: "); scanf("%d", &n); printf("请输入学号、C和数学课的成绩: \n"); //输入成绩,并求出平均学分绩 for(i=0; i<n; i++) { scanf("%d %d %d",&stu[i].num, &stu[i].c, &stu[i].math); stu[i].aver=(stu[i].c*3+stu[i].math*4)/7.0; } //求各科的总分,目的是求出各科均分,这个循环最好与上面的循环合并 for(i=0; i<n; i++) { totalC += stu[i].c; totalMath += stu[i].math; } averC = 1.0*totalC/N; averMath = 1.0*totalMath/N; //输出成绩单 printf("学号\tC\t数学\t学分绩\n"); for(i=0; i<n; i++) printf("%d\t%d\t%d\t%.2f\n",stu[i].num, stu[i].c, stu[i].math, stu[i].aver); printf("科均分\t%.2f\t%.2f\n\n",averC, averMath); //输出得奖学金(学分绩高于80且没有挂科)的同学学号 printf("得奖学金的同学的学号是:\n"); for(i=0; i<n; i++) if(stu[i].c>=60&&stu[i].math>=60&&stu[i].aver>=80) printf("%d ",stu[i].num); return 0; }
运行结果: