以下是一些 Scala 循环练习题,涵盖while、for循环的基本用法和常见场景,帮助巩固循环逻辑:
练习 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 中while和for的用法差异,以及如何结合条件判断实现复杂逻辑。