综合使用C语言中的顺序结构、选择结构、循环结构、函数和数组,设计主函数,在主函数中正确输入或调用每个学生的名字、学号及英语、数学、计算机成绩,输入时有必要的提示信息,设计子函数求每个学生的平均成绩和每门课的平均成绩、最高以及最低成绩并保存在数组中
时间: 2024-03-25 10:40:09 浏览: 61
好的,这是一个比较复杂的问题,需要分步解决。首先,我们需要定义一个结构体,用于存储每个学生的信息,包括名字、学号以及三门课程的成绩:
```c
struct student {
char name[20];
int id;
int english;
int math;
int computer;
};
```
然后,我们需要在主函数中定义一个数组,用于存储所有学生的信息:
```c
struct student students[100];
int num_students = 0;
```
接下来,我们需要编写一个函数,用于输入每个学生的信息:
```c
void input_students() {
printf("请输入学生人数:");
scanf("%d", &num_students);
for (int i = 0; i < num_students; i++) {
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", students[i].name);
printf("请输入第%d个学生的学号:", i + 1);
scanf("%d", &students[i].id);
printf("请输入第%d个学生的英语成绩:", i + 1);
scanf("%d", &students[i].english);
printf("请输入第%d个学生的数学成绩:", i + 1);
scanf("%d", &students[i].math);
printf("请输入第%d个学生的计算机成绩:", i + 1);
scanf("%d", &students[i].computer);
}
}
```
这个函数会先询问学生人数,然后逐个输入每个学生的信息。接下来,我们需要编写一个函数,用于计算每个学生的平均成绩:
```c
void calculate_student_average() {
for (int i = 0; i < num_students; i++) {
students[i].average = (students[i].english + students[i].math + students[i].computer) / 3.0;
}
}
```
这个函数会遍历每个学生,计算他们的平均成绩,并将结果保存在结构体中。然后,我们需要编写一个函数,用于计算每门课程的平均成绩、最高成绩和最低成绩:
```c
void calculate_course_statistics() {
int english_sum = 0, math_sum = 0, computer_sum = 0;
int english_max = 0, math_max = 0, computer_max = 0;
int english_min = 100, math_min = 100, computer_min = 100;
for (int i = 0; i < num_students; i++) {
english_sum += students[i].english;
math_sum += students[i].math;
computer_sum += students[i].computer;
if (students[i].english > english_max) {
english_max = students[i].english;
}
if (students[i].math > math_max) {
math_max = students[i].math;
}
if (students[i].computer > computer_max) {
computer_max = students[i].computer;
}
if (students[i].english < english_min) {
english_min = students[i].english;
}
if (students[i].math < math_min) {
math_min = students[i].math;
}
if (students[i].computer < computer_min) {
computer_min = students[i].computer;
}
}
english_average = english_sum / (double)num_students;
math_average = math_sum / (double)num_students;
computer_average = computer_sum / (double)num_students;
}
```
这个函数会遍历每个学生,累加每门课程的成绩,并记录每门课程的最高和最低成绩。然后,它会计算每门课程的平均成绩,并将结果保存在全局变量中。
最后,在主函数中,我们需要依次调用这些函数,完成所有的计算和输入输出:
```c
int main() {
input_students();
calculate_student_average();
calculate_course_statistics();
// 输出每个学生的信息和平均成绩
for (int i = 0; i < num_students; i++) {
printf("姓名:%s,学号:%d,英语:%d,数学:%d,计算机:%d,平均成绩:%.2f\n",
students[i].name, students[i].id, students[i].english, students[i].math, students[i].computer, students[i].average);
}
// 输出每门课程的平均成绩、最高成绩和最低成绩
printf("英语平均成绩:%.2f,最高成绩:%d,最低成绩:%d\n", english_average, english_max, english_min);
printf("数学平均成绩:%.2f,最高成绩:%d,最低成绩:%d\n", math_average, math_max, math_min);
printf("计算机平均成绩:%.2f,最高成绩:%d,最低成绩:%d\n", computer_average, computer_max, computer_min);
return 0;
}
```
这个程序可以实现对每个学生的信息进行输入,并计算每个学生的平均成绩,以及每门课程的平均成绩、最高成绩和最低成绩。
阅读全文