用c语言利用指针实现从键盘上输入 N 个学生某一门课程的成绩,找出最 高分并计算平均成绩。
时间: 2024-12-19 08:23:05 浏览: 20
在 C 语言中,我们可以使用指针来实现这个功能。首先,我们需要动态分配数组存储学生的成绩,然后通过指针遍历数组,找到最高分和计算平均成绩。以下是简单的步骤:
1. 定义一个结构体 `Student` 包含学生的名字和成绩,以及一个指向该结构体的指针数组。
```c
typedef struct {
char name[50];
float score;
} Student;
Student* students; // 指向学生数组的指针
int num_students;
```
2. 用户输入 N 个学生的数量:
```c
printf("请输入学生人数(N): ");
scanf("%d", &num_students);
students = (Student*)malloc(num_students * sizeof(Student)); // 动态分配内存
```
3. 使用循环获取每个学生的成绩,并将数据放入结构体数组中:
```c
for (int i = 0; i < num_students; ++i) {
printf("请输入学生 %d 的名字: ", i + 1);
fgets(students[i].name, sizeof(students[i].name), stdin); // 读取名字,注意处理换行符
printf("请输入学生 %d 的成绩: ", i + 1);
scanf("%f", &students[i].score);
}
```
4. 找出最高分:
```c
float max_score = students[0].score;
for (int i = 1; i < num_students; ++i) {
if (students[i].score > max_score) {
max_score = students[i].score;
}
}
```
5. 计算平均成绩:
```c
float sum_scores = 0;
for (int i = 0; i < num_students; ++i) {
sum_scores += students[i].score;
}
float average_score = sum_scores / num_students;
```
6. 输出结果:
```c
printf("最高分为: %.2f\n", max_score);
printf("平均成绩为: %.2f\n", average_score);
```
7. 最后别忘了释放动态分配的内存:
```c
free(students);
```
阅读全文