09内建控制-循环语句for循环及多重循环

82 阅读2分钟

一. for循环

格式:

for ( 循环变量 <- 数据集) {
// 循环体代码
}

说明:

1.如果循环变量的类型能被推断出来,是可以省略掉变量类型的。

2.这里的数据集可以是任意类型的数据集合,如字符串,集合,数组等等。

输出1-100以内的奇数

//by:步长,循环变量每次增加的值。默认就是 1
// for (i <- 1 to 100 by 1) <====> for ( i <- 1 to 100)
var sum = 0
for (i <- 1 to 100 by 2 ){
  println (i)
  sum += 1
}
println (sum)

结果如图:

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

二. 多重循环的基本使用

格式:

for ( 循环变量 <- 数据集) {
for(){
for(){
}
}
}

说明:

1.for可以替换成while循环

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

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

案例

var n = 0
for(i <- 1 to 10) {
  for(j <- 5 to 20) {
    for(k <- 1 to 10) {
      n += 1
      println(n, k, i, j) 
    }
  }
}

结果如图:

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

三. 输出特殊图形

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

1

22

333

4444

55555

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

结果如图:

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

四. 打印乘法口诀表

for (i <- 1 to 9) { // 控制行数,从 1 到 9
  for (j <- 1 to i) { // 控制每行的列数,列数不超过当前行数
    // print(s"$j×$i=${j*i}  ") 这个也可以

    // %d 表示占位符,这里填整数
    // %-4d 表示一个占位符,这里填整数,并且:一共四位,左对齐
    // j 填入第一个 %d
    // i 填入第二个 %d
    // i*j 的结果填入 %-4d

    printf("%d×%d=%-4d", j, i, j * i)
  }
  println() // 每行结束后换行
}

结果如图:

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

五. 循环的白鸡百钱问题

“百鸡百钱”是一个经典的数学问题,最早见于中国古代数学著作《张丘建算经》。其原文如下:

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

翻译成现代语言:

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

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

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

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

var k = 0
for(gj <- 0 to 100){
  for(mj <- 0 to 100){
    var xj = 100 - gj - mj
    if(xj >= 0){ // 小鸡的数量不能为负

      if(gj * 5 + mj * 3 + xj / 3 == 100 && xj % 3 == 0){
        k += 1// 如果合计是100元
        println(k, gj, mj, xj)
      }
    }
  }
}

结果如图:

image.png