Scala的循环练习

77 阅读1分钟

以下是一些 Scala 循环练习题,涵盖whilefor循环的基本用法和常见场景,帮助巩固循环逻辑:

练习 1:计算 1 到 100 的和

使用while循环计算 1 到 100 的整数之和。

var sum = 0
var i = 1
while (i <= 100) {
  sum += i
  i += 1
}
println(s"1到100的和为:$sum")  // 输出:5050

练习 2:打印 100 以内的偶数

使用for循环打印 100 以内(含 100)的所有偶数。

// 方式1:遍历范围,筛选偶数
for (num <- 1 to 100 if num % 2 == 0) {
  print(s"$num ")
}

// 方式2:直接生成偶数范围(更高效)
for (num <- 2 to 100 by 2) {
  print(s"$num ")
}

练习 3:求阶乘

输入一个正整数n,用循环计算n!n的阶乘,即1×2×…×n)。

import scala.io.StdIn

val n = StdIn.readInt()  // 读取输入
var factorial = 1L  // 用Long避免大数字溢出
var i = 1
while (i <= n) {
  factorial *= i
  i += 1
}
println(s"$n的阶乘是:$factorial")

练习 4:打印九九乘法表

使用嵌套for循环打印九九乘法表。

for (i <- 1 to 9) {  // 行
  for (j <- 1 to i) {  // 列(列数不超过行数)
    print(s"$j×$i=${j*i}\t")  // \t是制表符,对齐格式
  }
  println()  // 换行
}

输出:

1×1=1	
1×2=2	2×2=4	
1×3=3	2×3=6	3×3=9	
...

练习 5:筛选质数

使用循环找出 100 以内的所有质数(只能被 1 和自身整除的数)。

for (num <- 2 to 100) {  // 质数从2开始
  var isPrime = true
  var i = 2
  while (i <= num / 2 && isPrime) {  // 只需检查到num/2
    if (num % i == 0) isPrime = false
    i += 1
  }
  if (isPrime) print(s"$num ")
}

练习 6:累加偶数和

for循环计算 1 到 100 中所有偶数的和(使用yield收集偶数后求和)。

// 先收集偶数到集合,再求和
val evenNumbers = for (num <- 1 to 100 if num % 2 == 0) yield num
val sum = evenNumbers.sum
println(s"1到100的偶数和为:$sum")  // 输出:2550

练习 7:倒序打印

while循环倒序打印 10 到 1 的数字。

var i = 10
while (i >= 1) {
  print(s"$i ")
  i -= 1
}  // 输出:10 9 8 ... 1

这些练习覆盖了循环的基本语法、条件控制、嵌套循环、循环中的中断逻辑(如猜数字游戏)等场景。通过实践可以熟悉 Scala 中whilefor的用法差异,以及如何结合条件判断实现复杂逻辑。