有5个学生,每个学生的数据包括学号、姓名、3门课的成绩。从键盘输入5个学生数据,要求输出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。
要求用一个input函数输入5个学生数据,用一个average函数求总平均分,用max函数找出最高分学生数据。总平均分和最高分的学生的数据都在主函数中输出。
可以先使用结构定义学生信息的各个项目,然后使用函数来分别获取5个学生的信息,以及计算总平均分,和寻找最高分学生即可,代码如下:
参考链接:
c语言怎么定义函数
#include <stdio.h>
//存储学生信息的结构
struct stu{
char sid[12]; //学号
char name[12]; //姓名
double chinese; //语文成绩
double math; //数学成绩
double english; //英语成绩
double avg; //三科成绩的平均分
};
// https://baijiahao.baidu.com/s?id=1725609128115508518
void input(struct stu* pstu,int n){ //从输入获取5个学生的信息
int i;
for(i=0;i<5;i++){
printf("\n请输入第%d个学生的学号:",i+1);
scanf("%s",pstu[i].sid);
printf("请输入第%d个学生的姓名:",i+1);
scanf("%s",pstu[i].name);
printf("请输入第%d个学生的语文成绩:",i+1);
scanf("%lf",&pstu[i].chinese);
printf("请输入第%d个学生的数学成绩:",i+1);
scanf("%lf",&pstu[i].math);
printf("请输入第%d个学生的外语成绩:",i+1);
scanf("%lf",&pstu[i].english);
}
}
//计算总平均分
double average(struct stu* pstu,int n){
double sum=0; //存储5个学生3门成绩的所有总分
int i;
for(i=0;i<5;i++){
sum+=pstu[i].chinese+pstu[i].math+pstu[i].english;
//
// printf("姓名:%s\n学号:%s\n语文成绩:%f\n数学成绩:%f\n英语成绩:%f\n平均分:%f\n",
// pstu[i].name,pstu[i].sid,pstu[i].chinese,pstu[i].math,pstu[i].english,pstu[i].avg);
// printf("i=%d,sum=%lf\n",i,sum);
}
return sum/15.0; //总平均分除以学生的个数5和学科的数量3的乘积
}
//寻找最高分数学的下标
int max(struct stu * pstu,int n){
double sum=0,m=0;
int index=-1;
int i;
for(i=0;i<5;i++){
sum=pstu[i].chinese+pstu[i].math+pstu[i].english;
pstu[i].avg=sum/3.0; //计算每个学生三科成绩的平均分
if(sum>m){
m=sum;
index=i;
}
}
return index;
}
int main(void){
struct stu allStu[5];
input(allStu,5);
printf("\n总平均分是%f。\n",average(allStu,5));
printf("\n最高分学生信息:\n");
int i= max(allStu,5);
printf("姓名:%s\n学号:%s\n语文成绩:%f\n数学成绩:%f\n英语成绩:%f\n平均分:%f\n",
allStu[i].name,allStu[i].sid,allStu[i].chinese,allStu[i].math,allStu[i].english,allStu[i].avg);
return 0;
}