Appearance
动手实践
恭喜你!🎉 你已经掌握了 Go 语言的核心基础知识。现在是时候把这些知识组合起来,做一个真正的小项目了。
项目目标
我们要做一个学生成绩管理系统,帮助老师管理 5 位学生的成绩,并自动计算:
- 最高分
- 最低分
- 平均分
- 及格人数(60分及以上)
💡 思路分析
在动手写代码之前,我们先想想需要用到哪些知识:
- 数组(Array):存储 5 位学生的成绩
- 循环(Loop):遍历所有成绩进行计算
- 条件判断(If):判断是否及格
- 变量(Variable):保存计算结果
- 函数(Function):组织代码逻辑
📝 完整代码
创建一个新文件 student_score.go
,输入以下代码:
go
package main
import "fmt"
func main() {
// 定义5位学生的成绩
scores := [5]int{85, 92, 78, 63, 88}
studentCount := len(scores)
// 初始化统计变量
maxScore := scores[0] // 最高分
minScore := scores[0] // 最低分
totalScore := 0 // 总分
passCount := 0 // 及格人数
// 遍历所有成绩进行统计
for i := 0; i < studentCount; i++ {
currentScore := scores[i]
totalScore += currentScore
// 更新最高分和最低分
if currentScore > maxScore {
maxScore = currentScore
}
if currentScore < minScore {
minScore = currentScore
}
// 统计及格人数
if currentScore >= 60 {
passCount++
}
}
// 计算平均分
averageScore := float64(totalScore) / float64(studentCount)
// 输出统计结果
fmt.Println("========== 学生成绩统计 ==========")
fmt.Printf("学生人数: %d\n", studentCount)
fmt.Printf("最高分: %d\n", maxScore)
fmt.Printf("最低分: %d\n", minScore)
fmt.Printf("平均分: %.2f\n", averageScore)
fmt.Printf("及格人数: %d\n", passCount)
fmt.Printf("及格率: %.1f%%\n", float64(passCount)/float64(studentCount)*100)
}
代码关键点说明
第 7-8 行:定义成绩数组和获取学生总数
第 11-14 行:初始化统计需要的变量,最高分和最低分都先设为第一个学生的成绩
第 17-23 行:遍历每个成绩,通过比较更新最高分和最低分
第 26-31 行:判断成绩是否大于等于 60 分,统计及格人数
第 34-35 行:计算平均分,注意要转换为 float64
类型才能得到小数结果
🚀 运行程序
第一步:保存文件
确保你的代码保存为 student_score.go
第二步:执行程序
打开终端(Terminal),进入文件所在目录,输入命令:
bash
go run student_score.go
第三步:查看结果
你会看到这样的输出:
========== 学生成绩统计 ==========
学生人数: 5
最高分: 92
最低分: 63
平均分: 81.20
及格人数: 5
及格率: 100.0%
提示
如果你想修改成绩数据,只需要改变第 7 行数组中的数字,比如:
go
scores := [5]int{45, 92, 78, 55, 88}
再次运行,你会看到及格率变化了!
💪 挑战练习
练习 1:添加不及格名单
修改程序,在统计结果中增加一行,显示有多少人不及格。
点击查看答案
go
package main
import "fmt"
func main() {
scores := [5]int{85, 92, 78, 63, 88}
studentCount := len(scores)
maxScore := scores[0]
minScore := scores[0]
totalScore := 0
passCount := 0
failCount := 0 // 新增:不及格人数
for i := 0; i < studentCount; i++ {
currentScore := scores[i]
totalScore += currentScore
if currentScore > maxScore {
maxScore = currentScore
}
if currentScore < minScore {
minScore = currentScore
}
if currentScore >= 60 {
passCount++
} else {
failCount++ // 新增:统计不及格
}
}
averageScore := float64(totalScore) / float64(studentCount)
fmt.Println("========== 学生成绩统计 ==========")
fmt.Printf("学生人数: %d\n", studentCount)
fmt.Printf("最高分: %d\n", maxScore)
fmt.Printf("最低分: %d\n", minScore)
fmt.Printf("平均分: %.2f\n", averageScore)
fmt.Printf("及格人数: %d\n", passCount)
fmt.Printf("不及格人数: %d\n", failCount) // 新增:输出不及格人数
}
练习 2:增加优秀统计
在程序中增加"优秀人数"的统计(成绩 >= 85 分)。
点击查看答案
go
package main
import "fmt"
func main() {
scores := [5]int{85, 92, 78, 63, 88}
studentCount := len(scores)
maxScore := scores[0]
minScore := scores[0]
totalScore := 0
passCount := 0
excellentCount := 0 // 新增:优秀人数
for i := 0; i < studentCount; i++ {
currentScore := scores[i]
totalScore += currentScore
if currentScore > maxScore {
maxScore = currentScore
}
if currentScore < minScore {
minScore = currentScore
}
if currentScore >= 60 {
passCount++
}
if currentScore >= 85 {
excellentCount++ // 新增:统计优秀
}
}
averageScore := float64(totalScore) / float64(studentCount)
fmt.Println("========== 学生成绩统计 ==========")
fmt.Printf("学生人数: %d\n", studentCount)
fmt.Printf("最高分: %d\n", maxScore)
fmt.Printf("最低分: %d\n", minScore)
fmt.Printf("平均分: %.2f\n", averageScore)
fmt.Printf("及格人数: %d\n", passCount)
fmt.Printf("及格率: %.1f%%\n", float64(passCount)/float64(studentCount)*100)
fmt.Printf("优秀人数: %d\n", excellentCount) // 新增:输出优秀人数
}
📌 小结
通过这个实践项目,你综合运用了:
- 数组存储多个数据
- 循环处理每一个数据
- 条件判断实现业务逻辑(如判断及格、优秀)
你已经能够用 Go 语言解决实际问题了!继续保持这份学习热情,多动手实践,你会越来越熟练。💪