#include <stdio.h> #define N 50 typedef struct { char name[10]; /*姓名*/ double score[4]; v /*4门课的分数*/ double ave; /*平均分*/ int flag; /*标志*/ } Student; void Input(Student * studp,int n) /*输入n个学生信息存放在啊studp中*/ { int i,k; double a; printf("输入姓名和4门课分数\n"); for (i=0;i<n;i++ ) { printf(" 第%d个学生:",i+1); scanf("%s",(studp + i)->name); for (k=0;k<4;k++ ) { scanf("%1f",&a); (studp+i)->score[k]=a; } } } void Avg_flag(Student * studp,int n) /*求每个学生的平均分并置flag值*/ { int i,k,flag; double sum; for (i=0;i<n;i++ ) { sum=0.0; flag=1; for (k=0;k<4;k++ ) { sum+=(studp+i)->score[k]; if ((studp+i)->score[k]<90) /*有一门课分数少于90,则flag=0*/ flag=0; } (studp+i)->ave=sum/4; (studp+i)->flag=flag; } } void Sort(Student * studp,int n) /*采用冒泡排序法按平均分排序*/ { int i,j; Student t; for (i=0;i<n-1;i++ ) for (j=0;j<n-1-i;j++ ) if ((studp+j)->ave>(studp+j+1)->ave) { t= * (studp+j); /*(studp+j)<->(studp+j+1)*/ * (studp+j)= * (studp+j+1); * (studp+j+1)=t; } } void Printf(Student * studp,int n) /*输出所有学生信息*/ { int i,k; printf("执行结果\n"); for (i=0;i<n;i++ ) { printf("%12s",(studp+i)->name); for (k=0;k<4'k++ ) printf("%5.1lf",(studp+i)->score[k]); printf("%5.1lf:,(studp+i)->ave); if ((studp+i)->flag) printf(" * "); printf("\n"); } } void main() { Student stud[N]; /*定义结构体数组*/ int n; printf("学生人数:"); scanf("%d",&n); Input(stud,n); /*输入学生成绩*/ Avg_flag(stud,n); /*求平均分*/ Sort(stud,n); /*排序*/ Printf(stud,n); /*输出*/ }
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题