如何设计一个函数,该函数接收一个包含学生分数的结构体数组作为输入,筛选出所有成绩在60至79分之间的学生,并将这些学生的信息存储到一个新的同类型结构体数组中?
时间: 2024-09-19 22:13:31 浏览: 34
学生成绩管理系统 c语言基础
设计这样一个函数,首先你需要一个包含学生信息的结构体,比如`Student`,它可能包含姓名`name`和分数`score`两个字段。然后你可以创建一个辅助函数来检查分数是否在指定范围内。以下是这个过程的一个示例,假设你在C++环境中:
```cpp
#include <iostream>
#include <vector>
// 定义学生结构体
struct Student {
std::string name;
int score;
};
// 辅助函数,用于判断分数是否在60到79之间
bool isScoreInRange(const Student& student) {
return student.score >= 60 && student.score <= 79;
}
// 函数来筛选并返回新数组
std::vector<Student> filterStudents(const std::vector<Student>& inputArray) {
std::vector<Student> filteredArray; // 新的结构体数组
for (const auto& student : inputArray) {
if (isScoreInRange(student)) {
filteredArray.push_back(student); // 如果分数在范围内,添加到新数组
}
}
return filteredArray;
}
int main() {
std::vector<Student> students = {{"Alice", 85}, {"Bob", 68}, {"Charlie", 72}, {"Dave", 90}};
std::vector<Student> filteredStudents = filterStudents(students);
for (const auto& student : filteredStudents) {
std::cout << "Name: " << student.name << ", Score: " << student.score << std::endl;
}
return 0;
}
```
在这个例子中,`filterStudents`函数接受一个`Student`类型的数组,遍历每个元素,通过`isScoreInRange`函数判断其分数是否符合条件,如果满足,则将其复制到新的`filteredArray`中。
阅读全文