说明:
1.for可以替换成while循环。
2.循环的嵌套可以有多个,数量不限。
3.里外层循环执行的次数不相同。
var k = 0
for(i <- -1 to 5){ // 外层循环
println(i) // 会输出5次,由i决定
for(j <- 10 to 15) { // 内层循环
k = k + 1
println(k,i,j) // 会输出60次,由k,i,j决定
}
}
练习1:
编写代码打印输出如下图形:
1
22
333
4444
55555
for(i <- 1 to 5){
for(j <- 1 to i){
print(s"${i}")
}
println()// 换行
}
练习2: 打印乘法口诀表
for(i <- 1 to 9){
for(j <- 1 to i){
// print(s"${j}×${i}×${i*j} ")
printf("%d×%d=%-4d",j,i,i*j)
}
println()// 换行
}
练习3 百鸡百钱问题
// 白鸡百钱问题
/**
* 设公鸡x,母鸡y,小鸡100-x-y
* 同时 0<=x<=20,0<=y<=33
*
* 5x +3y + (100-x-y)/3 = 100 (1)
*
* 暴力求解
* 1.(0,0,100) 代入(1)看是否成立
* 2.(0,1,99) 代入(1) 看是否成立
* ···
* 34.(0,33,37) 代入(1) 看是否成立
*/
var k = 0
for(x <- 1 to 20){
for(y <- 0 to 33){
val z = 100 - x -y
// 代入1
if(5*x + 3*y + z/3 == 100){
k += 1
println(k,x,y,z)
}
}