Scala for多重循环 问题

54 阅读1分钟

提问一:试问i j k 会输出多少次

for (i <- 1 to 5){
  println(i) // 这句话会输出5次
  for (j <- 1 to 10){
    println(i, j) // 这句话会输出50次
    for (k <- 1 to 10){
      println(i,j,k)  // 这句话会输出500次
    }
  }
}

提问二: 第一行 一个1 。第二行 两个2。第三行 三个3......

如图:

屏幕截图 2025-09-28 154904.png

for(i <- 1 to 5){  //行 一共有5行
  for(j <- 1 to i){ // 具体的一行中输出什么内容?
    print(i)
  }
  println() // 换行
}

提问三:第一行 五个1 第二行 四个2 第三行 三个3....

如图:

屏幕截图 2025-09-28 154958.png

for(i <- 1 to 5){  //行 一共有5行
      for(j <- i to 5){ // 具体的一行中输出什么内容?
        print(i)
      }
      println() // 换行
    }

提问四: 公鸡1只 5钱;母鸡1只 3钱; 小鸡3只 1钱; 用100元买鸡 各可以买几只

/*
* 假设 公鸡 x
*     母鸡 y
*     小鸡 z
*    5x + 3y + z/3 = 100 (1)
*    x + y + z = 100 (2)
* 暴力求解
* 0 <= x <= 100
* 0 <= y <= 100
* 0 <= z <= 100  === 100 - x - )
*
*/
    for(x <- 0 to 20){
      for(y <- 0 to 33){
        var z = 100 - x - y
        // 小鸡的数量一定是3的倍数
        if(z % 3 == 0 && 5 * x + 3 * y + z/3 == 100){
          println(x, y, z)
        }
      }
    }

提问四:乘法口诀

for(i <- 1 to 9){
  for(j <- 1 to i){
    // printf(s"${j}×${i}=${i*j}")
    printf("%d × %d = %-5d", j, i, i*j)
    // %d 表示一个占位符 表示会以整数的格式输出对应的值
    // %-3d 表示一个占位符 表示会以整数的格式输出对应的值 这是数字占3个字符的宽度 左对齐
  }
  println()
}