要求c语言实现一个函数,统计结构体的中成绩在60--79分的所有人员,并将它们保存到新的结构体数组中,结构体包含两个域:学号和成绩
时间: 2024-09-18 11:10:18 浏览: 37
在C语言中,你可以定义一个结构体`Student`来存储学号和成绩,然后创建一个函数`filterStudents`来完成这个任务。首先,你需要定义结构体、声明函数原型,然后在函数内部遍历输入的学生数组,筛选出符合条件的学生并添加到新数组中。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体
typedef struct {
int student_id;
int score;
} Student;
// 函数原型
void filterStudents(Student* input, size_t nInput, Student* output, size_t* nOutput);
int main() {
// 示例数据
Student students[] = { {1, 85}, {2, 68}, {3, 72}, {4, 90}, {5, 55} };
const size_t num_students = sizeof(students) / sizeof(students[0]);
// 初始化结果数组
Student filteredStudents[10];
size_t filteredCount = 0;
// 过滤函数
filterStudents(students, num_students, filteredStudents, &filteredCount);
// 输出结果
printf("Filtered students (scores between 60 and 79):\n");
for (size_t i = 0; i < filteredCount; i++) {
printf("ID %d: Score %d\n", filteredStudents[i].student_id, filteredStudents[i].score);
}
return 0;
}
// 实现过滤函数
void filterStudents(Student* input, size_t nInput, Student* output, size_t* nOutput) {
*nOutput = 0; // 初始化结果数组长度
for (size_t i = 0; i < nInput; i++) {
if (input[i].score >= 60 && input[i].score <= 79) {
output[*nOutput] = input[i]; // 将符合条件的学生复制到结果数组
(*nOutput)++;
}
}
}
```
在这个例子中,`filterStudents`函数接收输入数组、输入大小、输出数组和输出大小的指针。它会遍历输入数组,如果发现学生的分数在60到79之间,就将其复制到输出数组中。最后,主函数中调用`filterStudents`并打印筛选后的学生信息。
阅读全文