写好了学生成绩单表格程序,但还有些有关问题,求指教!
写好了学生成绩单表格程序,但还有些问题,求指教!!!!!!!
这是我这两天写的代码,运行完输入后DOS窗口就没反应了,请大家帮忙看看
这是我这两天写的代码,运行完输入后DOS窗口就没反应了,请大家帮忙看看
- C/C++ code
#include<stdio.h> #define num 3 struct list {char name[8]; //学生名字 int number; //学号 float subject[3]; //科目成绩 float average; //平均分 }student[num]; //num个学生 void getlist(struct list student[]); void max(struct list student[num], int *Math, int *Chi, int *Eng); void maxA(struct list student[num], int *Ave); void print(struct list student[num],int, int, int, int); void main() { int maxMath=0, maxChi=0, maxEng=0, maxAve=0; int *m, *c, *e, *a; m=&maxMath, c=&maxChi, e=&maxEng, a=&maxAve; getlist(student); //实现数据的输入 max(student, m, c, e); //使 m,c,e分别指向的对象分别存入各科目成绩最好的同学的下标 maxA(student, a); //使a指向的对象存入平均分最好的同学的下标 print(student, maxMath, maxChi, maxEng, maxAve); //实现输出 } void getlist(struct list student[num]) { int i; for(i=0;i<num;i++) { int j; float sum; printf("input %d student list!\n",i+1); printf(">>>>number :");scanf("%d",&student[i].number); while(getchar()!='\n') continue; //清空输入行 printf(">>>>>>name :");gets(student[i].name); printf(">>>>>>Math :");scanf("%f",&student[i].subject[0]); printf(">>>Chinese :");scanf("%f",&student[i].subject[1]); printf(">>>English :");scanf("%f",&student[i].subject[2]); for(j=0;j<3;j++) //计算平均分 { sum += student[i].subject[j]; } student[i].average = sum/3.0; } } void max(struct list student[num], int *Math, int *Chi, int *Eng) { int i, j, k=0; int Max; //标记 for(j=0;j<3;i++,k++) 先将科目分别比较 { Max=0; for(i=0;i<9;i++) 将同一科目的学生比较 { if(student[i].subject[j]<student[i+1].subject[j]) { Max=i+1; //将最高分学生的下标赋给Max } } if(k=0) *Math=Max; else if(k=1) *Chi=Max; else *Eng=Max; } } void maxA(struct list student[num],int *Ave) { int i; *Ave=0; for(i=0;i<9;i++) { if(student[i].average < student[i+1].average) *Ave=i+1; //将平均分最高的student下标赋给*Ave指向的对象 } } //输出函数还没整理好 void print(struct list student[num],int nice_Math,int nice_Chiese,int nice_English,int so_well) { int i, j; printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"); printf(" NO name Math Chinese English\n"); printf("nice math: %03d %8s %.2f",student[nice_Math].number, student[nice_Math].name,\ student[nice_Math].subject[0]); printf("nice math: %03d %8s %.2f",student[nice_Chiese].number, student[nice_Chiese].name,\ student[nice_Math].subject[0]); printf("nice math: %03d %8s %.2f",student[nice_English].number, student[nice_English].name,\ student[nice_Math].subject[0]); printf("nice math: %03d %8s %.2f ", student[so_well].number, student[so_well].name, student[so_well].average); for(i=0;i<num;i++) { printf("%03d",student[i].number); printf("%8s",student[i].name); for(j=0;j<3;j++) { printf(" %.2f",student[i].subject[j]); } } printf("\n>>>>>>>>>>>>>>>>>>>>>>END!>>>>>>>>>>>>>>>>>>>>>>>>\n"); }