C语言从键盘输入3门课程,3位同学的成绩,计算总分和平均分,并实现查询功能(从键盘输入学号,查询学生的信息,指针)。
时间: 2023-12-02 08:06:42 浏览: 75
好的,我来帮你解答这个问题。
首先,我们需要定义学生的结构体,包括学号、姓名、三门课程成绩、总分和平均分。
```c
struct student {
int id; // 学号
char name[20]; // 姓名
float score[3]; // 三门课程成绩
float total; // 总分
float average; // 平均分
};
```
然后,我们需要实现以下两个函数:计算总分和平均分的函数和查询学生信息的函数。
计算总分和平均分的函数如下:
```c
void calc_total_average(struct student *s) {
s->total = s->score[0] + s->score[1] + s->score[2];
s->average = s->total / 3.0;
}
```
查询学生信息的函数如下:
```c
void search(struct student *s, int n) {
int i;
for (i = 0; i < n; i++) {
if (s[i].id == id) {
printf("学号:%d\n", s[i].id);
printf("姓名:%s\n", s[i].name);
printf("成绩:%f %f %f\n", s[i].score[0], s[i].score[1], s[i].score[2]);
printf("总分:%f\n", s[i].total);
printf("平均分:%f\n", s[i].average);
return;
}
}
printf("没有找到该学生!\n");
}
```
接下来,我们在主函数中实现输入学生信息、计算总分和平均分、查询学生信息的功能。
```c
int main() {
struct student stu[3];
int i, id;
// 输入学生信息
for (i = 0; i < 3; i++) {
printf("请输入第%d个学生的学号:", i+1);
scanf("%d", &stu[i].id);
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", stu[i].name);
printf("请输入第%d个学生的三门课程成绩:", i+1);
scanf("%f%f%f", &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
calc_total_average(&stu[i]);
}
// 查询学生信息
printf("请输入要查询的学生学号:");
scanf("%d", &id);
search(stu, 3);
return 0;
}
```
以上就是完整的代码。当然,为了保证代码的健壮性,我们还需要对输入数据进行一些错误处理,例如学号的重复、成绩的范围等等。
阅读全文