设计描述学生成绩单(包括学号、姓名和三门课成绩)的数据类型, 编写要求如下: 1、输入4名学生的信息 2、输入4名学生的信息 3、输出每个人的平均成绩和总成绩(注意均分的数据类型为浮点类型,各科成绩数据类型为整型) 4、输出每门课程的平均分。C语言加注释
时间: 2024-02-22 12:57:04 浏览: 84
为了实现这个需求,可以使用以下的结构体和函数:
```c
#include <stdio.h>
// 定义学生结构体
typedef struct student {
int id; // 学号
char name[20]; // 姓名
int grade1; // 第一门成绩
int grade2; // 第二门成绩
int grade3; // 第三门成绩
} Student;
// 计算学生总成绩
int total_grade(Student *s) {
return s->grade1 + s->grade2 + s->grade3;
}
// 计算学生平均成绩
float average_grade(Student *s) {
return (s->grade1 + s->grade2 + s->grade3) / 3.0;
}
int main() {
// 定义学生数组
Student students[4];
// 输入学生信息
for (int i = 0; i < 4; i++) {
printf("请输入学生%d的学号:", i+1);
scanf("%d", &students[i].id);
printf("请输入学生%d的姓名:", i+1);
scanf("%s", students[i].name);
printf("请输入学生%d的第一门成绩:", i+1);
scanf("%d", &students[i].grade1);
printf("请输入学生%d的第二门成绩:", i+1);
scanf("%d", &students[i].grade2);
printf("请输入学生%d的第三门成绩:", i+1);
scanf("%d", &students[i].grade3);
}
// 输出每个学生的总成绩和平均成绩
for (int i = 0; i < 4; i++) {
printf("%s的总成绩为%d,平均成绩为%.2f\n", students[i].name, total_grade(&students[i]), average_grade(&students[i]));
}
// 计算每门课程的平均分
int grade1_sum = 0, grade2_sum = 0, grade3_sum = 0;
for (int i = 0; i < 4; i++) {
grade1_sum += students[i].grade1;
grade2_sum += students[i].grade2;
grade3_sum += students[i].grade3;
}
float grade1_avg = grade1_sum / 4.0;
float grade2_avg = grade2_sum / 4.0;
float grade3_avg = grade3_sum / 4.0;
printf("第一门课程的平均分为:%.2f\n", grade1_avg);
printf("第二门课程的平均分为:%.2f\n", grade2_avg);
printf("第三门课程的平均分为:%.2f\n", grade3_avg);
return 0;
}
```
这样,我们就实现了输入学生信息、计算总成绩和平均成绩、计算每门课程平均分的功能。
阅读全文