有N个学生,每个学生的数据包括学号、姓名、性别、三门课程的成绩。要求在主函数中输入数据,函数count()计算每个学生的总分和平均分,并输出各项数据,每一个学生输出后换行。(提示:定义结构体类型时,不仅要有三门课程的成绩,还要有总分和平均分;在调用count()函数时,函数的参数可以是结构体数组也可以是结构体指针)。定义符号常量N为4。
时间: 2024-01-02 19:03:49 浏览: 161
2.编写一个函数print, 打印一个学生的成绩数组, 该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用p
好的,我理解了你的问题。下面是对应的C语言代码:
```c
#include <stdio.h>
#define N 4 // 学生人数
struct Student {
int num; // 学号
char name[10]; // 姓名
char sex[2]; // 性别
int score[3]; // 三门课程的成绩
int total; // 总分
float avg; // 平均分
};
void count(struct Student *s) {
int i;
for (i = 0; i < N; i++) {
s[i].total = s[i].score[0] + s[i].score[1] + s[i].score[2]; // 计算总分
s[i].avg = (float)s[i].total / 3; // 计算平均分
}
}
int main() {
struct Student stu[N];
int i;
for (i = 0; i < N; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%d", &stu[i].num);
printf("姓名:");
scanf("%s", stu[i].name);
printf("性别:");
scanf("%s", stu[i].sex);
printf("三门课程成绩:");
scanf("%d %d %d", &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
}
count(stu); // 计算总分和平均分
for (i = 0; i < N; i++) {
printf("学号:%d 姓名:%s 性别:%s 总分:%d 平均分:%.1f\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].total, stu[i].avg);
}
return 0;
}
```
这是一个结构体例子,主函数中先输入每个学生的数据,然后调用count()函数计算每个学生的总分和平均分,最后输出各项数据。请注意,count()函数的参数是指向结构体数组的指针,因为这样可以在函数中直接修改结构体数组的内容。
阅读全文