利用指针实现从键盘上输入 N 个学生某一门课程的成绩,找出最 高分并计算平均成绩。 c
时间: 2024-12-20 09:20:10 浏览: 11
在C语言中,你可以利用指针来实现这个功能。首先,创建一个数组来存储学生的成绩,然后通过指针访问这个数组。以下是实现步骤:
1. 定义一个结构体 `Student` 包含学生的姓名和成绩:
```c
typedef struct {
char name[50];
int score;
} Student;
```
2. 创建一个动态数组 `students` 来存储 N 个学生的数据,并分配内存:
```c
int n;
printf("请输入学生人数:");
scanf("%d", &n);
Student* students = malloc(n * sizeof(Student));
```
3. 使用指针遍历数组,提示用户输入每个学生的姓名和成绩,并将其存储到数组中:
```c
for (int i = 0; i < n; ++i) {
printf("请输入学生 %d 的姓名:", i + 1);
scanf("%s", students[i].name);
printf("请输入学生 %d 的成绩:", i + 1);
scanf("%d", &students[i].score);
}
```
4. 定义两个变量 `max_score` 和 `total_score` 分别记录最高分和总分数,初始化为第一个学生的分数:
```c
int max_score = students[0].score;
int total_score = students[0].score;
```
5. 遍历数组,更新最高分和累加总分:
```c
for (int i = 1; i < n; ++i) {
if (students[i].score > max_score) {
max_score = students[i].score;
}
total_score += students[i].score;
}
```
6. 计算平均成绩并输出结果:
```c
double average_score = (double) total_score / n;
printf("最高分为:%d\n", max_score);
printf("平均成绩为:%f\n", average_score);
```
7. 最后,记得释放动态分配的内存:
```c
free(students);
```
阅读全文