多重循环

52 阅读1分钟

1.for可以替换成while循环。

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

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

(二)输出特殊图形

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

1

22

333

4444

55555

scala
 体验AI代码助手
 代码解读
复制代码
object Main {
  def main(args: Array[String]): Unit = {
    println("使用双重循环输出图形:")
    
    // 外层循环控制行数(1到5行)
    for (i <- 1 to 5) {
      // 内层循环控制每行的数字个数
      for (j <- 1 to i) {
        print(i)  // 打印当前行的数字
      }
      println()   // 每行结束后换行
    }
  }
}

(三)打印乘法口诀表

1.先观察每个式子的结构

2.再观察每行的结构。

3.使用双层for循环,写出一个矩形结构。

例如

scala
 体验AI代码助手
 代码解读
复制代码
object Main {
  def main(args: Array[String]): Unit = {
    println("标准99乘法表:")
    println("=" * 50)
    
    for (i <- 1 to 9) {          // 外层循环:被乘数
      for (j <- 1 to 9) {        // 内层循环:乘数
        print(f"$j x $i = ${i * j}%2d  ")
      }
      println()  // 每行结束后换行
    }
  }
}

注:使用printf("%d×%d=%-5d",i,j i*j) 可以更整齐地打印。

(四)百鸡百钱问题

1. 通过两层for循环,列出所有组合。这儿有两个变量:公鸡数量,母鸡数量;小鸡数量用100减出即可。

2. 判断是否满足100钱。

3. 判断小鸡数是否是3的整数倍。

scala
 体验AI代码助手
 代码解读
复制代码
object Main {
  def main(args: Array[String]): Unit = {
    println("百钱买百鸡问题解法:")
    println("公鸡5钱/只,母鸡3钱/只,小鸡1钱/3只")
    println("用100钱买100只鸡,问各有多少只?")
    println("=" * 50)
    
    var solutions = 0
    
    // 三重循环遍历所有可能
    for (cock <- 0 to 100) {                    // 公鸡数量
      for (hen <- 0 to 100) {                   // 母鸡数量
        for (chick <- 0 to 100) {               // 小鸡数量
          // 检查条件:总数100只,总价100钱
          if (cock + hen + chick == 100 && 
              cock * 5 + hen * 3 + chick / 3 == 100 &&
              chick % 3 == 0) {                 // 小鸡数量必须是3的倍数
            solutions += 1
            println(s"解法$solutions: 公鸡$cock只, 母鸡$hen只, 小鸡$chick只")
          }
        }
      }
    }
    
    println(s"共有 $solutions 种解法")
  }
}