Go语言多重循环

1. 什么是多重循环

  1. 将一个循环放在另外一个循环体内,就形成了嵌套循环。在外边的for称为外层循环,在里面的for循环称为内层循环,强烈建议一般使用两层,最多不要超过三层。
  2. 实质上,嵌套循环就是把内层循环当成外层循环的循环体,只有当内层循环的循环条件为false时,才会完全跳出内层循环,才可以结束外层的当次循环,开始下一次的循环。
  3. 外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次

2. 实例

2.1 案例一

统计3个班的成绩情况,每个班有5名成员,求出各个班的平均和所有班级的平均分以及三个班的及格人数,[学生的成绩从键盘输入]。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
func main() {
//声明一个sum统计班级总分
//j表示第几个班级
//定义一个变量存放总成绩
//声明以变量passCount用于保存及格人数
//代码实现
var (
classNum int = 3
stuNum int = 5
totalNum float64 = 0.0
passCount int = 0
)
for j := 1; j <= classNum; j++ {
sum := 0.0
for i := 1; i <= stuNum; i++ {
var score float64
fmt.Printf("请输入第%d班,第%d个学生的成绩\n", j, i)
fmt.Scanln(&score)
//累计总分
sum += score
//判断分数是否及格
if score >= 60 {
passCount++
}
}
fmt.Printf("第%d个班级的平均分是%v\n", j, sum/float64(stuNum))
//将各个班的总成绩累计道totalSum
totalNum += sum
}
fmt.Printf("各个班级的总成绩%v,所有班级平均分是%v\n", totalNum, totalNum/float64(stuNum*classNum))
fmt.Printf("及格人数为%v\n", passCount)
}

2.2 打印99乘法表

image-20240514100523247

1
2
3
4
5
6
7
8
9
10
11
12
13
14
func main() {
//打印出九九乘法表
//i表示层数
var num int = 9
for i := 1; i <= num; i++ {
for j := 1; j <= i; j++ {
fmt.Printf("%v*%v=%v\t", j, i, j*i)
}
fmt.Println() //添加换行符
}
}

//最终输出的结果
/*1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 */

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!