有N个学生,每个学生的数据包括学号、姓名、性别、三门课程的成绩。要求在主函数中输入数据,函数count()计算每个学生的总分和平均分,并输出各项数据,每一个学生输出后换行。(提示:定义结构体类型时,不仅要有三门课程的成绩,还要有总分和平均分;在调用count()函数时,函数的参数可以是结构体数组也可以是结构体指针)。定义符号常量N为4。 输入格式: 输入提示:"学号 姓名 性别 课1 课2 课3\n" 输入格式:"%ld%s %c%f%f%f" 输出格式: 输出提示: "学号 姓名 性别 课1 课2 课3 总分 平均分\n" 学号姓名性别的输出格式:"%8ld%10s%3c" 课程成绩的输出格式:"%6.1f"
时间: 2024-03-16 10:43:41 浏览: 76
C语言程序设计-输入2个学生3门课的成绩,计算学生成绩平均分,课程平均分和最高分.
5星 · 资源好评率100%
下面是一个简单的实现,使用结构体类型来存储每个学生的数据,然后在主函数中输入数据,最后调用`count`函数来计算总分和平均分并输出结果:
```c
#include <stdio.h>
#include <string.h>
#define N 4
typedef struct {
long id; // 学号
char name[11]; // 姓名
char gender; // 性别
float score1; // 课程1成绩
float score2; // 课程2成绩
float score3; // 课程3成绩
float total; // 总分
float average; // 平均分
} Student;
void count(Student students[], int n) {
for (int i = 0; i < n; i++) {
students[i].total = students[i].score1 + students[i].score2 + students[i].score3;
students[i].average = students[i].total / 3.0;
printf("%8ld%10s%3c", students[i].id, students[i].name, students[i].gender);
printf("%6.1f%6.1f%6.1f%6.1f%6.1f\n", students[i].score1, students[i].score2, students[i].score3, students[i].total, students[i].average);
}
}
int main() {
Student students[N];
printf("请输入%d个学生的数据(学号,姓名,性别,3门课程的成绩):\n", N);
for (int i = 0; i < N; i++) {
printf("请输入第%d个学生的数据:", i + 1);
scanf("%ld%s %c%f%f%f", &students[i].id, students[i].name, &students[i].gender, &students[i].score1, &students[i].score2, &students[i].score3);
}
printf("%8s%10s%3s%6s%6s%6s%6s%6s\n", "学号", "姓名", "性别", "课1", "课2", "课3", "总分", "平均分");
count(students, N);
return 0;
}
```
注意,上述代码中使用了结构体类型`Student`来存储每个学生的数据。在主函数中,首先输入每个学生的数据,然后调用`count`函数来计算总分和平均分,并输出各项数据。输出时按照题目要求使用`%8ld%10s%3c%6.1f%6.1f%6.1f%6.1f%6.1f`格式输出。
阅读全文