用c语言写一个结构体数组将3个学生的成绩用指针取其平均值
时间: 2024-09-18 22:03:24 浏览: 50
以下是使用C语言编写一个结构体数组来存储三个学生的成绩,并使用指针取其平均值的示例代码:
```c
#include <stdio.h>
// 定义结构体类型
typedef struct {
char name[50];
int score;
} Student;
int main() {
// 定义一个包含三个学生的结构体数组
Student students[3] = {
{"张三", 85},
{"李四", 90},
{"王五", 95}
};
// 计算三个学生成绩的平均值
float average = 0.0;
for (int i = 0; i < 3; i++) {
average += students[i].score;
}
average /= 3;
// 输出平均成绩
printf("平均成绩为:%.2f\n", average);
return 0;
}
```
在上述代码中,我们首先定义了一个名为`Student`的结构体类型,用于存储学生的姓名和成绩。然后,我们定义了一个包含三个学生的结构体数组`students`,并使用指针访问每个学生的成绩。接下来,我们使用一个循环遍历所有学生的成绩,将它们累加起来,再除以3得到平均值。最后,我们使用`printf()`函数输出平均成绩。需要注意的是,我们使用了浮点数类型`float`来存储平均值,以确保精度。
相关问题
用c语言指针接受结构体数据求有10个学生,输入学号,姓名,三科成绩,输出所有成绩之和的平均值,输出成绩最高的学生的信息,用结构体数组传指针
好的,我可以为您解答这个问题。下面是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT 10
#define MAX_NAME_LEN 20
typedef struct Student {
int id;
char name[MAX_NAME_LEN];
int scores[3];
} Student;
void input_students(Student *students, int num) {
for (int i = 0; i < num; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%d", &(students[i].id));
printf("姓名:");
scanf("%s", students[i].name);
printf("三科成绩:");
scanf("%d %d %d", &(students[i].scores[0]), &(students[i].scores[1]), &(students[i].scores[2]));
}
}
void print_students(Student *students, int num) {
for (int i = 0; i < num; i++) {
printf("学号:%d 姓名:%s 成绩:%d %d %d\n", students[i].id, students[i].name,
students[i].scores[0], students[i].scores[1], students[i].scores[2]);
}
}
float get_average_score(Student *students, int num) {
int sum = 0;
for (int i = 0; i < num; i++) {
for (int j = 0; j < 3; j++) {
sum += students[i].scores[j];
}
}
return (float) sum / (num * 3);
}
void print_max_score_student(Student *students, int num) {
int max_score = -1;
int max_score_index = -1;
for (int i = 0; i < num; i++) {
int sum_score = 0;
for (int j = 0; j < 3; j++) {
sum_score += students[i].scores[j];
}
if (sum_score > max_score) {
max_score = sum_score;
max_score_index = i;
}
}
printf("成绩最高的学生是:\n");
printf("学号:%d 姓名:%s 成绩:%d %d %d\n", students[max_score_index].id, students[max_score_index].name,
students[max_score_index].scores[0], students[max_score_index].scores[1], students[max_score_index].scores[2]);
}
int main() {
Student students[MAX_STUDENT];
input_students(students, MAX_STUDENT);
printf("\n所有学生信息如下:\n");
print_students(students, MAX_STUDENT);
printf("\n所有成绩之和的平均值为:%f\n", get_average_score(students, MAX_STUDENT));
print_max_score_student(students, MAX_STUDENT);
return 0;
}
```
首先定义了一个 `Student` 结构体,其中包括学号、姓名和三科成绩。然后,定义了几个函数,分别用于输入学生信息、输出学生信息、计算平均成绩和输出成绩最高的学生信息。
在 `main` 函数中,首先定义了一个 `students` 数组,用于存储所有学生的信息。然后,调用 `input_students` 函数输入学生信息,再调用 `print_students` 函数输出学生信息。接着,调用 `get_average_score` 函数计算所有成绩之和的平均值,并输出。最后,调用 `print_max_score_student` 函数输出成绩最高的学生信息。
需要注意的是,这里使用了结构体数组传指针的方式来处理学生信息。具体来说,函数参数中的 `Student *students` 表示一个指向 `Student` 类型的指针,可以指向一个 `Student` 数组。在函数内部,可以通过 `students[i]` 访问第 `i` 个学生的信息。
用c语言求有10个学生,输入学号,姓名,三科成绩,输出所有成绩之和的平均值,输出成绩最高的学生的信息,用结构体数组传指针
好的,下面是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define NUM 10 // 学生人数
struct student {
int id;
char name[20];
float score[3];
float sum;
};
int main() {
struct student stu[NUM];
float avg = 0;
int max_index = 0;
// 输入学生信息
for (int i = 0; i < NUM; i++) {
printf("请输入第%d个学生的学号、姓名和三科成绩:\n", i+1);
scanf("%d %s %f %f %f", &stu[i].id, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
stu[i].sum = stu[i].score[0] + stu[i].score[1] + stu[i].score[2];
avg += stu[i].sum;
if (stu[i].sum > stu[max_index].sum) {
max_index = i;
}
}
// 计算平均值
avg /= NUM;
// 输出所有成绩之和的平均值
printf("所有成绩之和的平均值为:%.2f\n", avg);
// 输出成绩最高的学生的信息
printf("成绩最高的学生的信息为:\n");
printf("学号:%d\n", stu[max_index].id);
printf("姓名:%s\n", stu[max_index].name);
printf("成绩:%.2f %.2f %.2f\n", stu[max_index].score[0], stu[max_index].score[1], stu[max_index].score[2]);
printf("总分:%.2f\n", stu[max_index].sum);
return 0;
}
```
运行程序后,输入每个学生的信息,程序会自动计算所有成绩之和的平均值并输出,以及成绩最高的学生的信息。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)