🔥 任务背景
你在「编程王国」的冒险进入新篇章!王国魔法学院的「成绩水晶」突然碎裂,所有学生的成绩数据散落成碎片。用 C++ 编写一个成绩统计系统,重建魔法水晶,解锁数组操作和函数魔法!
🧠 语法知识:新魔法技能
技能 1️⃣:数组 —— 存储成绩的魔法容器
int scores[50]; // 创建存储50个成绩的魔法阵列
scores[0] = 95; // 第一个位置存入95分(下标从0开始)
cout << scores[3]; // 访问第四个成绩
技能 2️⃣:函数 —— 封装统计咒语
// 定义计算平均分的魔法咒语
float getAverage(int arr[], int size) {
float sum = 0;
for(int i=0; i<size; i++) {
sum += arr[i]; // 遍历数组累加
}
return sum / size; // 返回平均值
}
// 在 main() 中召唤咒语:
float avg = getAverage(scores, 50);
💻 代码实战:四步重建水晶
第 1 步:基础数据录入
#include <iostream>
using namespace std;
int main() {
int scores[100]; // 最多存储100个成绩
int n; // 实际学生人数
cout << "输入学生人数(≤100): ";
cin >> n;
// 循环录入成绩
for(int i=0; i<n; i++) {
cout << "输入第" << i+1 << "个学生的成绩: ";
cin >> scores[i];
// 简单输入校验
while(scores[i]<0 || scores[i]>100) {
cout << "⚠️ 成绩无效(0-100),重新输入: ";
cin >> scores[i];
}
}
return 0;
}
第 2 步:添加统计函数
// 最高分探测咒语
int findMax(int arr[], int size) {
int max = -1; // 初始化为不可能的最低值
for(int i=0; i<size; i++) {
if(arr[i] > max) max = arr[i];
}
return max;
}
// 异常成绩检测咒语
void checkAnomaly(int arr[], int size) {
cout << "\n⚡异常成绩名单:\n";
for(int i=0; i<size; i++) {
if(arr[i] < 30) {
cout << "学生" << i+1 << "号: " << arr[i] << "分(危险!)\n";
}
}
}
第 3 步:主程序整合功能
int main() {
// ...数据录入代码...
// 召唤统计咒语
cout << "\n✨ 魔法水晶分析结果 ✨\n";
cout << "平均分: " << getAverage(scores, n) << endl;
cout << "最高分: " << findMax(scores, n) << endl;
checkAnomaly(scores, n);
return 0;
}
第 4 步:增强可视化
// 在 main() 中添加:
cout << "\n📊 成绩分布柱状图(每★=5分)\n";
for(int i=0; i<n; i++) {
cout << "学生" << i+1 << ": ";
+ for(int j=0; j<scores[i]/5; j++) {
+ cout << "★";
+ }
cout << endl;
}
💡 知识加油站
- 数组越界危险:
如果访问scores[100](数组长度只有100时),会导致不可预测的魔法反噬! - 函数参数传递:
int arr[]实际上传递的是数组首地址,函数内修改会影响原始数组!
💣 挑战任务:成绩排序魔法
目标:实现成绩从高到低排序
实现步骤:
- 添加
sortScores函数(使用冒泡排序算法) - 在主程序中显示排序后成绩
void sortScores(int arr[], int size) {
for(int i=0; i<size-1; i++) {
for(int j=0; j<size-i-1; j++) {
if(arr[j] < arr[j+1]) { // 降序排列
// 交换元素
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
// 使用示例:
sortScores(scores, n);
cout << "\n🏆 成绩排行榜:\n";
for(int i=0; i<n; i++) {
cout << "第" << i+1 << "名: " << scores[i] << "分\n";
}
📚 练习题:魔法成绩分析
扩展系统功能:
- 计算成绩方差(反映成绩波动)
公式:方差 = Σ(成绩-平均分)² / 人数 - 找出最接近平均分的学生
- 统计各分数段人数(90+,80-89,70-79,…)
提示:
// 方差计算示例
float variance = 0;
float avg = getAverage(scores, n);
for(int i=0; i<n; i++) {
variance += pow(scores[i] - avg, 2);
}
variance /= n;
🚀 下集预告:Level 4 图书馆管理系统
- 用结构体定义图书信息!
- 文件操作永久保存数据!
- 新挑战:实现借书/还书/查询功能!
动手试试:
- 在线调试工具
- 遇到异常成绩?在评论区喊“水晶修复!”,获取魔法支援!
通过本关,你已掌握 C++ 的数组操作与函数封装!晒出你的「成绩分布柱状图」截图,解锁图书馆管理系统的传送门吧! 📚✨