#include #include/*后面关闭程序需要调用此头文件*/ #include #define N 10/*定义学生的个数*/ typedef struct/*结构体*/ { char number[20];/*定义学生的学号*/ int grade[4];/*定义学生的四门成绩,这里用的整型,也可以使用浮点型*/ float average,sum; }info; int main() { info student[N+1];/*student[N]用于交换数据用*/ void Input(info student[]);/*成绩录入函数*/ void Count(info student[]);/*平均分、总分计算函数*/ void Sort(info student[]);/*成绩按总分排序*/ void Seek(info student[]);/*成绩的筛选*/ int choice;/*程序的选项*/ printf("\t\t学生成绩管理系统\n"); printf("===================================================\n"); printf("1、学生成绩录入\n"); printf("2、平均分和总分计算\n"); printf("3、按总分排名(高->低)\n"); printf("4、输出课程号成绩在90分以上且总分排名前五的学生情况\n"); printf("0、退出程序\n"); printf("===================================================\n"); printf("\n请输入选项:"); choice=getchar(); while(choice!='0') { switch(choice) { case '1': Input(student); break; case '2': Count(student); printf("计算完毕!\n"); break; case '3': Sort(student); break; case '4': Seek(student); break; default: printf("请输入正确选项!"); break; } printf("\n请输入选项:"); fflush(stdin);/*必须清空键盘缓存区的回车,否则程序不能正常运行,后面也如此*/ choice=getchar(); } exit(0);/*当选项为0时,退出程序,这个对应windows.h这个头文件*/ fflush(stdin); getchar(); return 0; } void Input(info student[])/*成绩录入函数*/ { info *sp=student;/*用指针类型,才能将数组的值返回去*/ int i=1,j; for(;spnumber); for(j=0;j<4;j++) scanf("%d",&sp->grade[j]); i++; } } void Count(info student[])/*平均分、总分计算函数*/ { info *sp=student;/*用指针类型,才能将数组的值返回去*/ int j; for(;spsum=0.0; for(j=0;j<4;j++) sp->sum+=sp->grade[j]; sp->average=sp->sum/4.0; } } void Sort(info student[])/*成绩按总分排序*/ { int i,j,maxi; for(i=0;i低)结果\n"); printf("======================================================\n"); printf("学号\t成绩1\t成绩2\t成绩3\t成绩4\t平均分\t总分\n"); for(i=0;i=90) { k++; printf("%s\t",student[i].number); for(j=0;j<4;j++) { printf("%d\t",student[i].grade[j]); } printf("%.2f\t%.2f",student[i].average,student[i].sum); printf("\n"); } if(k>=5) break; } printf("======================================================\n"); } //注意我测试用的是10个学生,你直接把那个N为10改为35即可!