要求用 input函数输入 10 个学生数据;用average 函数求总平均分;用 max 函数找出最高分的学生数据;总平均分和最高分学生的数据都在主函数中输出。

3、有 10个学生,每个学生的数据包括学号、姓名、3 门课的成绩。从键盘输入 10 个学生数据,要求打印出3 门课总平成绩,以及最高分的学生的数据(包括学号、姓名、3 门课的成绩、平均分数)要求用 input函数输入 10 个学生数据;用average 函数求总平均分;用 max 函数找出最高分的学生数据;总平均分和最高分学生的数据都在主函数中输出。
代码:
学生数据类型结构体:

#define S 10
struct student {
	char num[10],name[20];//学号、姓名
	int score[3];//3 门课的成绩
	float avg;//平均分
};

所需要的函数:

void input(student *stu);//输入
void avg(student *stu);//平均分
student max(student *stu);//最高分
int main();
int main(){ 
	student  stu[S];
    printf("请输入学生信息:");
    input(stu);//输入
    avg(stu);//求平均分
    printf("最高分学生的信息为:\n");
    student stu1 = max(stu);
	printf("num:%s\n",stu1.num);
	printf("name:%s\n",stu1.name);
    printf("score1:%d \t score2:%d \t score3:%d\n",
               stu1.score[0],stu1.score[1],stu1.score[2]);
	printf("avg:%.2f\n",stu1.avg); 
}
void input(student *stu){
	for(int i=0;i<S;i++){
	   printf("第%d学生信息:\n",i+1);
	   printf("num:");
	   scanf("%s",stu[i].num);
	   printf("name:"); 
	   scanf("%s",stu[i].name);
	   printf("score:\n");
	   for(int j=0;j<3;j++){
	   	 scanf("%d",&stu[i].score[j]);//这里输入每个学生的三门成绩
	   }   
   }
}  
void avg(student *stu){
	int sum = 0; 
	for(int i=0;i<3;i++){  
		 for(int j=0;j<3;j++){
		 	 sum+=stu[i].score[j];
		 } 
		  stu[i].avg = sum/3.0;
	} 
}
student max(student *stu){ 
    float max = stu[0].avg;
    int flag = 0; //记录分数最高学生的下标
	for(int i=1;i<S;i++){
		if(max<stu[i].avg){
		 flag = i;
		 max = stu[i].avg;
		}  
	} 
	return stu[flag];
}

运行效果:
运行效果:
【2019-西北师范821-C部分】

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,这是一个关于学生成绩的问题,以下是代码实现: ```python def input_student(): students = [] for i in range(5): stu_id = input("请输入第{}个学生的学号:".format(i+1)) stu_name = input("请输入第{}个学生的姓名:".format(i+1)) scores = [] for j in range(3): score = float(input("请输入{}的第{}门课成绩:".format(stu_name, j+1))) scores.append(score) student = {'id': stu_id, 'name': stu_name, 'scores': scores} students.append(student) return students def average(students): total_scores = [0, 0, 0] for student in students: total_scores[0] += student['scores'][0] total_scores[1] += student['scores'][1] total_scores[2] += student['scores'][2] avg_scores = [total_scores[0]/5, total_scores[1]/5, total_scores[2]/5] return avg_scores def find_max_stu(students): max_score = 0 max_stu = None for student in students: avg_score = sum(student['scores'])/3 if avg_score > max_score: max_score = avg_score max_stu = student return max_stu if __name__ == '__main__': students = input_student() avg_scores = average(students) print("3门课程的平均成绩为:", avg_scores) max_stu = find_max_stu(students) print("最高分学生数据为:") print("学号:", max_stu['id']) print("姓名:", max_stu['name']) print("3门课程成绩:", max_stu['scores']) print("平均分数:", sum(max_stu['scores'])/3) ``` 在这个程序,我们首先定义了一个 `input_student` 函数,用于输入 5 个学生的学号、姓名和成绩。然后我们定义了一个 `average` 函数,用于计算 3 门课程的平均成绩。最后我们定义了一个 `find_max_stu` 函数,用于找出最高分学生数据。 在主函数,我们首先调用 `input_student` 函数输入学生数据,然后调用 `average` 函数平均成绩,并输出结果。接着我们调用 `find_max_stu` 函数找出最高分学生,并输出学生数据平均分数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小源同学r

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值