Scala练习题

30 阅读1分钟

1. 编写一个函数,它的入参是一个表示年份的整数,返回值是一个 bool 值,判断这个年份是否是闰年。

def isPrimeyear(year: Int): Boolean = {
  (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))

}

def main(args: Array[String]): Unit = {

  val r1 = isPrimeyear(2025)
  println(r1)
}

结果如图:

屏幕截图 2025-10-29 080639.png

2. 编写一个函数,用来求 f (100) 的值。其中 f (n)=1 - 1/2 + 1/3 - 1/4 + … 1/n

def main(args: Array[String]): Unit = {
  var sum:Double = 0
  var a = 1
  while(a <= 100) {

    if(a%2 == 1){
      sum += 1.0 / a
    } else {
      sum -= 1.0 / a
    }
    a += 1
  }
  println(s"f (100)=1 - 1/2 + 1/3 - 1/4 + 1/5.... + 1/100 = ${sum}")
}

结果如图:

屏幕截图 2025-10-29 080827.png

3. 编写一个函数,用来求斐波那契数列的前 20 项。其中 f (1)=f (2)=1,f (n)=f (n-1) + f (n-2)。

def f(n: Int): Int = {
  if ( n == 1) {
    1
  } else if (n == 2){
    2
  }else{
    f(n - 1) + f(n - 2)
  }
}

def main(args: Array[String]): Unit = {
  val rst = f(20)
  println(rst)
}

结果如图:

屏幕截图 2025-10-29 080855.png

4. 编写一个函数,允许用户输入一个整数年份,如果用户输入的是闰年就停止输入,否则就一直提示用户输入。

import scala.util.control.Breaks.{break, breakable}

object test4 {

    def main(args: Array[String]): Unit = {

      breakable{
        while (true) {
          print("请输入一个年份:")

          val year = scala.io.StdIn.readInt()

          if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
            println(s"$year 是一个闰年,程序结束")
            break
          } else {
            println(s"$year 不是一个闰年,请重新输入")
          }
        }
      }
    }

}

结果如图:

屏幕截图 2025-10-29 080919.png

5. 对成绩 (100,51,55,67,59,89) 进行处理,如果分数在 56-59 之间,就设置为 60 分,得到的新成绩为 (100,51,55,67,60,89)。

def main(args: Array[String]): Unit = {

  val arr = Array(100, 51, 55, 67, 59, 89)

  val arr1 = arr.map(x => if (x >=56 && x<= 59) 60 else x )

  // 用for循环输出
  for (i <- arr1) {
    println(i)
  }
  
}

结果如图:

屏幕截图 2025-10-29 080930.png