现有结构体声明及定义【40分】 struct stu { char name; //姓名 Int score[4]; //4门单科成绩 Double avg; //平均成绩 }; struct stu student[3]={ {"Zhang ping",{67,87,94,88};0.0}; {"Wu Qilong",{87,77,84,68};0.0}, {"Liu Dehua",{95,87,89,98},0.0} } 上面的定义存在语法错误,请写出正确的代码B.编写函数自动计算出所有人的平均成绩,要求函数调用时必须传入数组名student(6分) C.编写函数返回成绩最好者的信息地址,参数自定义(10分) D.编写函数,传入元素地址,直接输出该人的信息,并将C中取到的最好成绩传入测试是否输出了正确的结果(10分) 自己编写主函数,完成BCD要求的三项功能
时间: 2024-04-08 13:34:52 浏览: 28
B. 矫正结构体定义的错误:
```c
#include <stdio.h>
struct stu
{
char name; // 姓名
int score[4]; // 4门单科成绩
double avg; // 平均成绩
};
struct stu student[3] = {
{'Z', {67, 87, 94, 88}, 0.0},
{'W', {87, 77, 84, 68}, 0.0},
{'L', {95, 87, 89, 98}, 0.0}
};
```
C. 编写函数自动计算出所有人的平均成绩,要求函数调用时必须传入数组名student:
```c
void calculateAverage(struct stu student[], int size) {
for (int i = 0; i < size; i++) {
int sum = 0;
for (int j = 0; j < 4; j++) {
sum += student[i].score[j];
}
student[i].avg = (double)sum / 4;
}
}
```
D. 编写函数返回成绩最好者的信息地址,参数自定义:
```c
struct stu* findBestStudent(struct stu student[], int size) {
struct stu* bestStudent = &student[0];
double maxAvg = student[0].avg;
for (int i = 1; i < size; i++) {
if (student[i].avg > maxAvg) {
bestStudent = &student[i];
maxAvg = student[i].avg;
}
}
return bestStudent;
}
```
编写主函数,完成BCD要求的三项功能:
```c
#include <stdio.h>
struct stu
{
char name; // 姓名
int score[4]; // 4门单科成绩
double avg; // 平均成绩
};
void calculateAverage(struct stu student[], int size) {
for (int i = 0; i < size; i++) {
int sum = 0;
for (int j = 0; j < 4; j++) {
sum += student[i].score[j];
}
student[i].avg = (double)sum / 4;
}
}
struct stu* findBestStudent(struct stu student[], int size) {
struct stu* bestStudent = &student[0];
double maxAvg = student[0].avg;
for (int i = 1; i < size; i++) {
if (student[i].avg > maxAvg) {
bestStudent = &student[i];
maxAvg = student[i].avg;
}
}
return bestStudent;
}
int main() {
struct stu student[3] = {
{'Z', {67, 87, 94, 88}, 0.0},
{'W', {87, 77, 84, 68}, 0.0},
{'L', {95, 87, 89, 98}, 0.0}
};
int size = sizeof(student) / sizeof(student[0]);
calculateAverage(student, size);
struct stu* bestStudent = findBestStudent(student, size);
for (int i = 0; i < size; i++) {
printf("姓名: %c\n", student[i].name);
printf("成绩: ");
for (int j = 0; j < 4; j++) {
printf("%d ", student[i].score[j]);
}
printf("\n");
printf("平均成绩: %.2f\n", student[i].avg);
printf("\n");
}
printf("成绩最好者的信息:\n");
printf("姓名: %c\n", bestStudent->name);
printf("成绩: ");
for (int i = 0; i < 4; i++) {
printf("%d ", bestStudent->score[i]);
}
printf("\n");
printf("平均成绩: %.2f\n", bestStudent->avg);
return 0;
}
```
这个主函数中,我们先定义了结构体`stu`,然后实现了计算平均成绩和找到成绩最好者的函数。在`main`函数中,我们首先创建了一个包含3个学生的结构体数组`student`,然后计算每个学生的平均成绩并打印所有学生的信息。最后,我们找到成绩最好者并打印该学生的信息。
请注意,这只是一种可能的实现方式,您可以根据自己的需求进行修改。
阅读全文