练习题

29 阅读1分钟

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

object Base67 {
  def main(args: Array[String]): Unit = {
    println(isLeapYear(2020))
    println(isLeapYear(1900))
  }

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

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

object Base64  {
  def main(args: Array[String]): Unit = {
    var i = 1
    var sum = 0
    // 问题2:1 - 1/2 + 1/3 - 1/4+....+1/n
    var sum2 = 0.0
    i = 1  // 重置计数器
    while(i <= 100) {
      // 奇数项为正,偶数项为负
      if (i % 2 == 1) {
        sum2 += 1.0 / i
      } else {
        sum2 -= 1.0 / i
      }
      i += 1
    }
    println(f"1 - 1/2 + 1/3 - 1/4 + ... + 1/100 = $sum2%.6f")
  }
}

用来求斐波那契数列的前 20 项。其中 f (1)=f (2)=1,f (n) = f (n-1) + f (n-2)。

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

      var a = 1
      var b = 1
      println("斐波那契数列前20项:")
      print(a + " ")
      print(b + " ")

      for (i <- 3 to 20) {
        val c = a + b
        print(c + " ")

        a = b
        b = c
      }
    }
}

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

object Base65 {
  def main(args: Array[String]): Unit = {
    import scala.io.StdIn
    while (true) {
      print("请输入一个年份:")
      val year = StdIn.readInt()
      val isLeap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
      if (isLeap) {
        println(s"$year 是闰年!程序结束。")
        return
      } else {
        println(s"$year 不是闰年,请再试一次。")
      }
    }
  }
}

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

object Base66 {
  def main(args: Array[String]): Unit = {
    val scores = List(100, 51, 55, 67, 59, 89)
    val newScores = scores.map(score => if (score >= 56 && score <= 59) 60 else score)
    newScores.foreach(println)
  }
}