有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,编写如下函数: (1)输入10个学生 的基本信息(input); (2)求出每个学生的平均分(average); (3)求出平均分

来源:互联网 发布:拜占庭东罗马知乎 编辑:程序博客网 时间:2024/05/18 00:56

1、         有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,编写如下函数:

(1)    输入10个学生 的基本信息(input);

(2)    求出每个学生的平均分(average);

(3)    求出平均分最高的学生信息(high_score);

(4)    输出每个学生的信息(output);

(5)    按平均分从高到低的顺序排序(sort)。

#include<stdio.h>

#define N 10

 typedef struct student{

  int num;

  char name[20];

  float score[3];

  float aver;

 }S;

 void input(S *ps,int n){

  int i;

  S *p_end;

  printf("输入学生的学号、姓名、三门课的成绩:\n");

  p_end=ps+n;

  for(;ps<p_end;ps++){

  scanf("%d%s",&(ps->num),ps->name);

  for(i=0;i<3;i++)

  scanf("%f",&(ps->score[i]));

}

 }

 void average(S *ps,int n){

  int i;

  S *p_end;

  p_end=ps+n;

  for(;ps<p_end;ps++){

  ps->aver=0;

  for(i=0;i<3;i++)

  ps->aver+=ps->score[i];

  ps->aver/=3;

}

 }

 S *high_score(S *ps,int n){

  int i;

  float high=0;

  S *p;

  S *p_end;

  p_end=ps+n;

  p=ps;

  for(;ps<p_end;ps++)

  if((ps->aver)>high){

  high=ps->aver;

  p=ps;

}

  printf("平均分最高的学生为:\n");

  printf("%8d%10s",p->num,p->name);

  for(i=0;i<3;i++){

  printf("%7.1f",p->score[i]);

  }

  printf("%7.1f",p->aver); 

  printf("\n");

  return p;

 }

 void output(S *ps,int n){

  int i;

  S *p_end;

  p_end=ps+n;

  printf("学生的基本信息:\n");

  for(;ps<p_end;ps++){

  printf("%8d%10s",ps->num,ps->name);

  for(i=0;i<3;i++){

  printf("%7.1f",ps->score[i]);

}

printf("%7.1f",ps->aver);

printf("\n");

}

 }

 void sort(S *ps,int n){

  int i,j,k;

  S t;

  S *p_end;

  for(i=0;i<n-1;i++){

  k=i;

  for(j=i+1;j<n;j++)

  if((ps+k)->aver<(ps+j)->aver)

  k=j;

  if(k!=i){

  t=*(ps+i); *(ps+i)=*(ps+k); *(ps+k)=t; 

}

  }

printf("排序后:\n");

p_end=ps+n;

 for(;ps<p_end;ps++){

  printf("%8d%10s",ps->num,ps->name);

  for(i=0;i<3;i++){

  printf("%7.1f",ps->score[i]);

}

printf("%7.1f",ps->aver);

printf("\n");

}

}

 int main()

{

 

  int i,n;

  S a[N];

  printf("输入学生个数:\n");

  scanf("%d",&n);

  input(a,n);

  average(a,n);

  output(a,n);

  high_score(a,n);

  sort(a,n);

  return 0;

 }

阅读全文
0 0