练习题

29 阅读1分钟
  1. 循环输入直到输入闰年

object Ma {
  def main(array: Array[String]): Unit = {
    import scala.io.StdIn

    // 先定义闰年判断函数
    def isLeapYear(year: Int): Boolean = {
      (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
    }

    // 再定义循环输入函数(此时可以正常引用isLeapYear)
    def inputUntilLeapYear(): Unit = {
      var year = 0
      do {
        print("请输入年份:")
        year = StdIn.readInt()
      } while (!isLeapYear(year))
      println(s"${year}是闰年,停止输入。")
    }

    // 测试
    inputUntilLeapYear()
  }
}
  1. 判断闰年函数

object run {
  def main(array: Array[String]): Unit = {
     def is(y: Int): Boolean= {
       (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)
     }
    println(is(2020))
    println(is(2021))
  }
}
  1. 求斐波那契数列前 20 项的函数
object run {
  def main(array: Array[String]): Unit = {
def fibonacci(n: Int): List[Int] = {
  if (n == 1) List(1)
  else if (n == 2) List(1, 1)
  else {
    val prev = fibonacci(n - 1)
    prev :+ prev(n - 2) + prev(n - 3)
  }
}
println(fibonacci(20).mkString(", "))
}
  1. 处理成绩数组
object lie {
   def main(array: Array[String]):Unit={
     def calculateF(n: Int): Double = {
       (1 to n).map(i => if (i % 2 == 1) 1.0 / i else -1.0/i ).sum
     }

     // 测试
     println(calculateF(100)) // 约 0.688172179310195
   }
}
  1. 计算 f (100) 的函数
object lie {
   def main(array: Array[String]):Unit={
 def calculateF(n: Int): Double = {
 (1 to n).map(i => if (i % 2 == 1) 1.0 / i else -1.0 / i).sum } // 测试
 println(calculateF(100)) // 约 0.688172179310195
 }
 }