scala阶段1过关练习

36 阅读1分钟

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

object dsj1 {
  def main(args: Array[String]): Unit = {
    while (true) {
      println("请输入你要判断的年份:")
      var year = scala.io.StdIn.readInt()

      if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
        println(s"$year 是闰年")
      } else {
        println(s"$year 不是闰年")

      }
    }
  }
}

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

object dsj2 {

  def main(args: Array[String]): Unit = {
    var sum:Double=0
    var i=1
    while(i<=100){
      if(i%2==1){
        sum += 1.0/i
      }else{
        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)。

object dsj3 {
  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)  //8
    println(rst)
  }
}

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

import scala.util.control.Breaks._

object dsj4 {

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


    breakable {
      while (true) {
        println("请输入你要判断的年份:")
        var year = scala.io.StdIn.readInt()

//        if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
//          println("结束")
//          break()
//        }

          if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
          println(s"$year 是闰年")
            break()
        } else {
          println(s"$year 不是闰年")

        }
      }
    }
  }
}

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

object dsj5 {

  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) //x的绝对值

    arr1.foreach(println)
  }
}