for的嵌套循环练习

38 阅读1分钟

1.for的嵌套循环

var k =0
for (i <- 1 to 5) {

  println(i)// 输出五次,它由循环变量i的值决定

  for(j <- 10 to 15){
    k=k+1
    println(k,i,j)//输出几次,它由什么值决定?
  }
}

图中代码的println输出多少次由外层的循环决定,外层循环几次,他就输出几次

练习1:输出如图所示的结果,要求使用循环实现

image.png

for(i <- 1 to 5){
    for(j <- 1 to 5) {
      print(i)
    }
    println()
  }
}

第一次代码输出结果为:

image.png

var n=0
  for(i <- 1 to 5){
    for(j <- 1 to i) {
      print(i)
    }
    println()
  }
}

将代码修改后得到输出结果:

image.png

练习2:打印一个99乘法表

image.png

for(i <- 1 to 9){
  for(j <- 1 to i) {
    printf("%dx%d=%-4d",j,i,i*j)

    /**
     * %d:占位符,会输出一个整数
     * %-4d:占位符,会输出一个整数,一共占据4个字符的空间大小,左对齐!
     * %4d:占位符,会输出一个整数,一共占据4个字符的空间大小,右对齐!
     */
  }
  println()
}

其中使用了占位符来控制乘法表中一一对齐

练习3:公鸡,母鸡,小鸡购买问题

image.png

先以数学思维列出公式方便if的条件判断,即(5x)+(3y)+(100-x-y)/3 == 100, 再给公鸡,母鸡,小鸡加上判定范围方便用for循环

最后列出代码:

for(x <- 0 to 20){
  for(y <- 0 to 33){
    if((5*x)+(3*y)+(100-x-y)/3 == 100){
      println("公鸡有",x,"母鸡有",y,"小鸡有",100-x-y)
    }
  }
}