(八)循环语句for循环及

140 阅读2分钟

(一)循环嵌套

1.for可以替换成while循环

2.循环的嵌套可以有多个,数量不限。

3.里外层循环执行的次数不相同。

代码如下
object Base31 {
  def main(args: Array[String]): Unit = {
    /// 多重循环,循环里面还有循环

    var n = 0
    for(i <- 1 to 10){ // 10
      println(i) // 执行几次? 10
      for(j <- 5 to 20){ // 16

        for(k <- 1 to 10) {
          n += 1
          println(n, k, i, j) // 会执行几次?10*16*10
        }
      }
    }

    // while(){
    // def main28(){
    //   while(){
    //     while(){
    //
    //     }
    //   }
    // }
    // }
  }
}

(二)案例

编写代码打印输出如下图形:

1

22

333

4444

55555

object Base32 {
  def main(args: Array[String]): Unit = {
    //1. println("1")
    // println("22")
    // println("333")
    // println("4444")
    // println()
    // println()

    //2. for(i <- 1 to 5){  //控制有几行
     // for(j <- 1 to 5){  //控制具体每一行上的内容
     //   print(i) //不换行
    //  }
    //  print() // 换行
  //  }

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

结果

屏幕截图 2025-09-25 092043.png

如何输出乘法口诀表

按1,3,5... 这个格式来输出,这就涉及到步长

object Base33 {
  def main(args: Array[String]): Unit = {
    for (i <- 1 to 9) { // 行
      for (j <- 1 to i) { // 具体一行上的内容
        //        print(s"${j}×${i}=${i*j} ")

        // %d 是表示占位符,这儿要填入一个整数
        // %-4d 表示一个占位符,这儿要填入一个整数,并且:一共四位,左对齐

        // j 填入第一个 %d
        // i 填入第二个 %d
        // i*j的结果,填入 %-4d
        printf("%d×%d=%-4d", j, i, i * j)
      }
      println() // 换行
    }

  }
}

结果 屏幕截图 2025-09-25 091952.png

循环的白鸡百钱问题

鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

翻译成现代语言:

公鸡(鸡翁)1只,价格5钱;

母鸡(鸡母)1只,价格3钱;

小鸡(鸡雏)3只,价格1钱(即1钱买3只小鸡);

用100钱买100只鸡,问公鸡、母鸡、小鸡各有多少只?

object Base34 {
  def main(args: Array[String]): Unit = {
    var k = 0
    for(gj <- 0 to 100){
      for(mj <- 0 to 100){
        var xj = 100 - gj - mj
        if(xj >= 0 && xj %3 ==0){ // 小鸡的数量不能为负且是3的倍数
          if(gj*5 + mj*3 + xj/3 == 100){ // 如果合计是100元
            k += 1
            println(k, gj, mj, xj)
          }
        }
      }
    }
  }
}

结果如下 屏幕截图 2025-09-28 080136.png