用c++代码编写一个学生成绩管理程序。建一个单链表,要求能输入和打印学生成绩,并求出所有学生的平均成绩。
时间: 2024-11-14 19:23:38 浏览: 41
基于单链表的学生信息管理系统源代码.pdf
我们可以创建一个简单的C++程序来管理学生成绩,使用结构体表示学生信息,单链表来存储学生数据。以下是基本的实现步骤:
首先,我们定义一个`Student`结构体:
```cpp
#include <iostream>
using namespace std;
struct Student {
string name;
float score;
struct Node* next; // 链表节点指针
};
```
然后,我们创建链表节点的插入、删除和查找操作:
```cpp
// 添加新学生到链表
void addStudent(Student*& head, const string& name, float score) {
Student* newNode = new Student();
newNode->name = name;
newNode->score = score;
newNode->next = head;
head = newNode;
}
// 打印链表中的所有学生
void printStudents(Student* head) {
while (head != nullptr) {
cout << "Name: " << head->name << ", Score: " << head->score << endl;
head = head->next;
}
}
// 计算平均成绩
float calculateAverage(Student* head) {
float sum = 0.0;
int count = 0;
while (head != nullptr) {
sum += head->score;
count++;
head = head->next;
}
return sum / count;
}
```
主函数用于获取用户输入并操作链表:
```cpp
int main() {
Student* head = nullptr;
// 输入和添加学生
while (true) {
string name;
float score;
cout << "Enter student's name (or 'quit' to exit): ";
getline(cin, name);
if (name == "quit") break;
cin >> score; // 假设分数已经读入
addStudent(head, name, score);
}
// 打印和计算平均成绩
printStudents(head);
float avgScore = calculateAverage(head);
cout << "Average score: " << avgScore << endl;
return 0;
}
```
这个程序允许用户连续输入学生的姓名和成绩,直到输入"quit"为止。每次输入都会自动将数据添加到链表中,并最终显示所有学生的列表以及平均分。
阅读全文