介绍:
1).将一个循环放入另一个循环体内,就形成了嵌套循环,在外面的for称为外层循环,在里面的for循环称为内层循环(建议一般使用两层,最多不超过三层)
2).实际上,嵌套循环就是将内层循环当成是外层循环的循环体,当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次循环
3).设外层循环次数为m次,内层循环次数为n次,则内层循环体实际上需要执行m*n=mn次
//编程两大绝招
//1.先易后难,将一个复杂的问题分解成简单的问题
//2.先死后活
//案例1
//统计三个班学生成绩情况,每个班5名学生,求出各个班的平均分和所以班级的平均分(学生成绩从键盘输入)
//分析思路:
//1.统计一个班的学生成绩,每个班5名学生,求出该班平均分(先易后难)
//2.学生人数就5个(先死后活)
//3.声明一个变量sum统计班级平均分
sum := 0.0
for i := 1; i <= 5; i++ {
var score float64
fmt.Println("请输入第%d个学生的成绩:", i)
fmt.Scanln(&score)
//累计分数
sum += score
}
fmt.Printf("该班平均分为: %v", sum / 5)
//分析思路2
//1.统计三个班成绩情况,每个班5名学生,求出每个班平均分和所以班级的平均分
//2.j表示第几个班级,totalSum表示总成绩
//3.定义一个变量存放总成绩
//4.流程:实际上就是把上面的代码循环3次
totalSum := 0.0
for j := 1; j <= 3; j++ {
sum := 0.0
for i := 1; i <= 5; i++ {
var score float64
fmt.Println("请输入第%d个班的第%d个学生的成绩:", j,i)
fmt.Scanln(&score)
//累计分数
sum += score
}
fmt.Printf("第%d个班平均分为: %v", j, sum / 5)
totalSum += sum
}
fmt.Printf("3个班平均分为: %v", totalSum / 15)
//分析思路3
//1.可以把代码做活
//2.定义两个变量,表示班级的个数和班级的人数
var classNum int = 3
var stuNum int = 5
var totalSum float64 = 0.0
for j := 1; j <= classNum ; j++ {
sum := 0.0
for i := 1; i <= stuNum ; i++ {
var score float64
fmt.Println("请输入第%d个班的第%d个学生的成绩:", j, i)
fmt.Scanln(&score)
//累计分数
sum += score
}
fmt.Printf("第%d个班平均分为: %v", j, sum / 5)
totalSum += sum
}
fmt.Printf("%d个班平均分为: %v", classNum , totalSum / float64(stuNum * classNum))
//案例2
//统计三个班及格人数,每个班5名学生
//在上面代码的基础上,声明一个变量passCount保存及格人数
var classNum int = 3
var stuNum int = 5
var totalSum float64 = 0.0
var passCount int = 0
for j := 1; j <= classNum ; j++ {
sum := 0.0
for i := 1; i <= stuNum ; i++ {
var score float64
fmt.Println("请输入第%d个班的第%d个学生的成绩:", j, i)
fmt.Scanln(&score)
//累计分数
sum += score
if score >= 60 {
passCount++
}
}
fmt.Printf("第%d个班平均分为: %v", j, sum / 5)
totalSum += sum
}
fmt.Printf("%d个班平均分为: %v", classNum , totalSum / float64(stuNum * classNum))
fmt.Printf("及格人数为%v \n", passCount)
//案例
//打印金字塔
//使用for循环打印金字塔:编写一个程序,接收一个整数,表示层数,打印金字塔
// *
// ***
// *****
// *******
//编程思路:
//1.打印一个矩形
// ***
// ***
// ***
for j := 1; j <= 3; j++ {
for i := 1; i <= 3; i++ {
fmt.Print("*")
}
fmt.Prinln()
}
//2.打印半个金字塔
// * 1个* 规律: 层数
// ** 2个* 规律: 层数
// *** 3个* 规律: 层数
for j := 1; j <= 3; j++ {
for i := 1; i <= j; i++ {
fmt.Print("*")
}
fmt.Prinln()
}
//3.打印整个金字塔
// * 1层 1个* 规律: 2 * 层数 - 1 空格 3 规律: 总层数 - 当前层数
// *** 2层 3个* 规律: 2 * 层数 - 1 空格 2 规律: 总层数 - 当前层数
// ***** 3层 5个* 规律: 2 * 层数 - 1 空格 1 规律: 总层数 - 当前层数
// ******* 4层 7个* 规律: 2 * 层数 - 1 空格 0 规律: 总层数 - 当前层数
for j := 1; j <= 3; j++ {
for k := 1; k <= 3 - j; k++ {
fmt.Print(" ")
}
for i := 1; i <= 2 * j - 1; i++ {
fmt.Print("*")
}
fmt.Prinln()
}
//4.做活金字塔
//1.定义一个变量,表示层数
var totalLevel int = 6
for j := 1; j <= totalLevel ; j++ {
for k := 1; k <= totalLevel - j; k++ {
fmt.Print(" ")
}
for i := 1; i <= 2 * j - 1; i++ {
fmt.Print("*")
}
fmt.Prinln()
}
//4.打印空心金字塔
// *
// * *
// * *
// *******
//分析:
//在给每一行打印*时,需要考虑是打印*还是空格
//分析结果:
//每层的第一个和最后一个打印*,其他打印空格,不过有一个列外:第一层和最后一层全部打印*
var totalLevel int = 6
for j := 1; j <= totalLevel ; j++ {
for k := 1; k <= totalLevel - j; k++ {
fmt.Print(" ")
}
for i := 1; i <= 2 * j - 1; i++ {
if i == 1 || j = 2 * j -1 || i == totalLevel {
fmt.Print("*")
} else {
fmt.Print(" ")
}
}
fmt.Prinln()
}
//案例
//打印99乘法表
//1 * 1 = 1 第一层: 1 规律: 1 * 层数 = 结果
//1 * 2 = 2 2 * 2 = 4 第二层: 2 规律: 1 * 层数 = 结果 2 * 层数 = 结果
//1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 第三层: 3 ...
//1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 第四层: 4 ...
//思路:
//1.定义一个整数num表示层数
//2.先打印一层,二层,看以上规律
//第一层
for i := 1; i <= 1; i++ {
fmt.Printf("%v * %v = %v ", i, i, i * i)
}
fmt.Println()
//第二层
for j := 1; j <= 2; j++ {
for i := 1; i <= j; i++ {
fmt.Printf("%v * %v = %v ", i, j, i * j)
}
fmt.Println()
}
//第num层
var num int = 9
for j := 1; j <= num; j++ {
for i := 1; i <= j; i++ {
fmt.Printf("%v * %v = %v ", i, j, i * j)
}
fmt.Println()
}
//案例
//判断一个年份是否为闰年
//闰年:能被4整除并且不能被100整除,或者能被400整除
var num int32
fmt.Println("请输入一个年份:")
fmt.Scanln(&num)
if (num % 4 == 0 && num % 100 != 0) || (num % 400 == 0) {
fmt.Println("湿润年:")
} else {
fmt.Println("不是闰年:")
}
//案例
//实现对3个整数排序,输出时按从小到大排序
var a, b, c int
fmt.Println("请输入3个数,以空格间隔:")
fmt.Scanf("%d %d %d", &a, &b, &c)
var temp int
if a > b {
temp = a
a = b
b = temp
}
if b > c {
temp = b
b = c
c = temp
}
if a > c {
temp = a
a = c
c = temp
}
fmt.Printf("3个数从小到大为:%v, %v, %v",a,b,c)
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。