scala练习题

47 阅读1分钟

1.题目

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

代码

package scala过关训练1
object base01 {
  def main(args: Array[String]): Unit = {
    val year: Int = scala.io.StdIn.readInt()
    var result: Boolean = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
    if (result) {
      println(s"$year 是闰年")
    } else {
      println(s"$year 不是闰年")
    }
  }
}

2.题目

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

代码

object base02 {
  def main(args: Array[String]): Unit = {
    var sum:Double = 0
    var i = 1
    while (i<=100){
      if(i%2 == 1){
        sum = sum + 1.0 / i
      } else {
        sum = sum - 1.0 / i
      }
      i += 1
    }
    println(s"sum=${sum}")
  }
}

3.题目

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

代码

package scala过关训练1
object base03 {
  def f(n:Double): Double = {
    if(n == 1){
      1
    } else if(n== 2){
      2
    } else {
      f(n-1) + f(n-2)
    }
  }

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

4.题目

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

代码

package scala过关训练1
import scala.util.control.Breaks.{break, breakable}
object base04 {
  def main(args: Array[String]): Unit = {
    breakable {
      while(true){
        var year = scala.io.StdIn.readInt()
        if(year%400 ==0 || (year%4==0 && year%100 !=0)) {
          println(s"$year 是闰年")
          break;
        }
        if(year%400 ==0 || (year%4==0 && year%100 !=0)) {
          println(s"$year 是闰年")
        } else {
          println(s"$year 不是闰年")
        }
      }
    }
  }
}

5.题目

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

代码

package scala过关训练1
object base05 {
  def main(args: Array[String]): Unit = {
    val arr1 = Array(100,51,55,67,59,89)
    val arr2 = arr1.map(x => if(x >= 56 && x <= 59) 60 else x)
    for (i <- arr2) {
      print(s"${i} ")
    }
  }
}