有4个学生,每个学生的信息包括学号、姓名、3门课程(数学、物理、计算机)的成绩,如下表所示:
学号
姓名
数学
物理
计算机
1001
Wang li
93
89
87
1002
Li shan
85
80
78
1003
Zhao min
65
70
60
1004
Ma yun
77
70
83
(1) 从键盘上输入4个学生的上述信息(要有提示性语句);
(2) 计算每个学生的平均成绩;
(3) 输出各位同学的学号、姓名、数学、物理、计算机成绩和平均成绩;
(4) 输出平均成绩最高的同学的学号、姓名、数学、物理、计算机成绩和平均成绩。
结构体数组及结构体数组成员的访问方法
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- CSDN专家-link 2022-11-24 17:34关注
定义个学生结构,然后定义学生数组,逐个输入再求值
#include <stdio.h> typedef struct _student { int id; char name[20]; float score[3]; float avg; }student; void input(student *s,int n) { for(int i=0;i<n;i++) { printf("请输入第%d个学生的学号:",i+1); scanf("%d",&s[i].id); printf("请输入第%d个学生的姓名:",i+1); getchar(); gets(s[i].name); printf("请输入第%d个学生的数学成绩:",i+1); scanf("%f",&s[i].score[0]); printf("请输入第%d个学生的物理成绩:",i+1); scanf("%f",&s[i].score[1]); printf("请输入第%d个学生的计算机成绩:",i+1); scanf("%f",&s[i].score[2]); s[i].avg = (s[i].score[0] + s[i].score[1] + s[i].score[2])/3; } } void output(student *s,int n) { printf("%-10s%-22s%-10s%-10s%-10s%-10s\n","学号","姓名","数学","物理","计算机","平均分"); for(int i=0;i<n;i++) printf("%-10d%-22s%-10.1f%-10.1f%-10.1f%-10.1f\n",s[i].id,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],s[i].avg); } void getHigh(student *s,int n) { int max = 0; for(int i=1;i<n;i++) if(s[i].avg > s[max].avg) max = i; printf("最高分学生信息为:"); printf("学号: %d\n",s[max].id); printf("姓名: %s\n",s[max].name); printf("数学: %.1f\n",s[max].score[0]); printf("物理: %.1f\n",s[max].score[1]); printf("计算机: %.1f\n",s[max].score[2]); printf("平均分: %.1f\n",s[max].avg); } int main() { student stu[4]; input(stu,4); output(stu,4); getHigh(stu,4); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录