从键盘输入某个学生的三门课程成绩,依次存入一堆数组中。然后写一个函数,当主函数调用该函数后,能获得三门课程的平均分数
时间: 2023-03-25 07:01:55 浏览: 120
好的,这个问题我可以回答。请看下面的代码:
```c
#include <stdio.h>
void getAverage(float scores[]) {
float sum = ;
for (int i = ; i < 3; i++) {
sum += scores[i];
}
float average = sum / 3;
printf("三门课程的平均分数为:%.2f\n", average);
}
int main() {
float scores[3];
printf("请输入三门课程的成绩:\n");
for (int i = ; i < 3; i++) {
scanf("%f", &scores[i]);
}
getAverage(scores);
return ;
}
```
这个程序会从键盘输入三门课程的成绩,然后计算它们的平均分数并输出。
相关问题
有6个学生,每个学生的数据包括学号、姓名、3门课的成绩,编写函数,实现功能:(1)从键盘输入学生信息,存入到一个结构体数组中;(2)计算学生三门课程的平均成绩,并存入到结构体数组中;(3)打印出每门课的班级平均成绩;(4)打印出最高分的学生的数据(包括学号、姓名、 3 门课的成绩)。要求: 设计一个能保存学生信息的结构,包括学生的学号,姓名,成绩数组和平均分;在主函数中输入学生的学号,姓名和三门课成绩;在主函数中调用各函数实现功能,并显示相应结果。c语言代码
以下是实现上述功能的 C 语言代码:
```c
#include <stdio.h>
#include <string.h>
#define NUM_STUDENTS 6 // 学生人数
#define NUM_COURSES 3 // 课程数
// 学生结构体
typedef struct {
char id[20]; // 学号
char name[20]; // 姓名
int scores[NUM_COURSES]; // 成绩数组
float avg_score; // 平均分
} Student;
// 从键盘输入学生信息
void input_students(Student students[]) {
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的学号、姓名和三门课成绩:\n", i + 1);
scanf("%s%s%d%d%d", students[i].id, students[i].name,
&students[i].scores[0], &students[i].scores[1], &students[i].scores[2]);
}
}
// 计算学生三门课程的平均成绩
void calc_avg_score(Student students[]) {
for (int i = 0; i < NUM_STUDENTS; i++) {
int sum = 0;
for (int j = 0; j < NUM_COURSES; j++) {
sum += students[i].scores[j];
}
students[i].avg_score = (float) sum / NUM_COURSES;
}
}
// 打印出每门课的班级平均成绩
void print_course_avg_score(Student students[]) {
printf("每门课的班级平均成绩为:\n");
for (int i = 0; i < NUM_COURSES; i++) {
int sum = 0;
for (int j = 0; j < NUM_STUDENTS; j++) {
sum += students[j].scores[i];
}
printf("第%d门课的平均分为:%.2f\n", i + 1, (float) sum / NUM_STUDENTS);
}
}
// 打印出最高分的学生的数据
void print_highest_score_student(Student students[]) {
int max_score = 0;
int max_index = 0;
for (int i = 0; i < NUM_STUDENTS; i++) {
int sum = 0;
for (int j = 0; j < NUM_COURSES; j++) {
sum += students[i].scores[j];
}
if (sum > max_score) {
max_score = sum;
max_index = i;
}
}
printf("最高分的学生信息为:\n");
printf("学号:%s\n", students[max_index].id);
printf("姓名:%s\n", students[max_index].name);
printf("成绩:");
for (int i = 0; i < NUM_COURSES; i++) {
printf("%d ", students[max_index].scores[i]);
}
printf("\n");
}
int main() {
Student students[NUM_STUDENTS]; // 学生数组
input_students(students); // 输入学生信息
calc_avg_score(students); // 计算学生平均分
print_course_avg_score(students); // 打印每门课的班级平均成绩
print_highest_score_student(students); // 打印最高分的学生信息
return 0;
}
```
C语言编写程序:有6个学生,每个学生的数据包括学号、姓名、3门课的成绩,编写函数,实现功能: (1)从键盘输入学生信息,存入到一个结构体数组中; (2)计算学生三门课程的平均成绩,并存入到结构体数组中; (3)打印出每门课的班级平均成绩; (4)打印出最高分的学生的数据(包括学号、姓名、3门课的成绩)。 要求: 设计一个能保存学生信息的结构,包括学生的学号,姓名,成绩数组和平均分;在主函数中输入学生的学号,姓名和三门课成绩;在主函数中调用各函数实现功能,并显示相应结果。
下面是一份C语言的程序,用于实现上述要求:
```
#include <stdio.h>
#include <string.h>
#define NUM_STUDENTS 6
#define NUM_COURSES 3
struct student {
int id;
char name[20];
int grades[NUM_COURSES];
float average;
};
void input_students(struct student students[]);
void calculate_averages(struct student students[]);
void print_class_averages(struct student students[]);
void print_highest_scoring_student(struct student students[]);
int main() {
struct student students[NUM_STUDENTS];
input_students(students);
calculate_averages(students);
print_class_averages(students);
print_highest_scoring_student(students);
return 0;
}
void input_students(struct student students[]) {
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("Enter student #%d's ID: ", i+1);
scanf("%d", &students[i].id);
printf("Enter student #%d's name: ", i+1);
scanf("%s", students[i].name);
for (int j = 0; j < NUM_COURSES; j++) {
printf("Enter student #%d's grade for course #%d: ", i+1, j+1);
scanf("%d", &students[i].grades[j]);
}
}
}
void calculate_averages(struct student students[]) {
for (int i = 0; i < NUM_STUDENTS; i++) {
int sum = 0;
for (int j = 0; j < NUM_COURSES; j++) {
sum += students[i].grades[j];
}
students[i].average = (float) sum / NUM_COURSES;
}
}
void print_class_averages(struct student students[]) {
float course_averages[NUM_COURSES] = {0.0};
for (int i = 0; i < NUM_STUDENTS; i++) {
for (int j = 0; j < NUM_COURSES; j++) {
course_averages[j] += students[i].grades[j];
}
}
for (int i = 0; i < NUM_COURSES; i++) {
printf("Class average for course #%d: %.2f\n", i+1, course_averages[i] / NUM_STUDENTS);
}
}
void print_highest_scoring_student(struct student students[]) {
struct student highest_scoring_student = students[0];
for (int i = 1; i < NUM_STUDENTS; i++) {
if (students[i].average > highest_scoring_student.average) {
highest_scoring_student = students[i];
}
}
printf("Highest scoring student:\n");
printf("ID: %d\n", highest_scoring_student.id);
printf("Name: %s\n", highest_scoring_student.name);
for (int i = 0; i < NUM_COURSES; i++) {
printf("Grade for course #%d: %d\n", i+1, highest_scoring_student.grades[i]);
}
}
```
在这个程序中,我们定义了一个结构体 `student`,它包含了学生的学号、姓名、成绩数组和平均分。我们使用一个结构体数组来存储所有学生的信息。
程序中包含了四个函数:`input_students`、`calculate_averages`、`print_class_averages` 和 `print_highest_scoring_student`。这些函数分别用于实现上述要求的不同功能。
在 `main` 函数中,我们首先定义了一个 `students` 数组来存储学生信息。然后,我们依次调用了输入学生信息、计算平均分、打印班级平均分和打印最高分学生信息的函数。
在 `input_students` 函数中,我们使用循环依次输入每个学生的信息,并将其存储到结构体数组中。
在 `calculate_averages` 函数中,我们使用循环依次计算每个学生的平均分,并将其存储到结构体数组中。
在 `print_class_averages` 函数中,我们使用两个循环分别计算每门课的总成绩和班级平均分,并将其打印出来。
在 `print_highest_scoring_student` 函数中,我们使用循环找到平均分最高的学生,并将其信息打印出来。
最后,我们在程序的末尾返回了 0,表示程序正常结束。
阅读全文