scala test

56 阅读1分钟

一:test

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

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


    //1.编写一个函数,它的入参是一个表示年份的整数,返回值是一个 bool 值,判断这个年份是否是闰年。
    def runnian(year: Int): Boolean = {
      (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
    }

    println(s"2025年是否为闰年?${runnian(2025)}")
    println(s"2024年是否为闰年?${runnian(2024)}")


    //2.编写一个函数,用来求 f (100) 的值。其中 f (n)=1 -1/2 + 1/3 -1/4 + … 1/n
    def zhi(): Double = {
      (1 to 100).map(i => if (i % 2 == 1) 1.0 / i else -1.0 / i).sum
    }

    println(s"f(100)的值为:${zhi()}")


    //3.编写一个函数,用来求斐波那契数列的前 20 项。其中 f (1)=f (2)=1,f (n) = f (n-1) + f (n-2)。
    def feibonaqi(): List[Int] = {
      def fib(n: Int): Int = n match {
        case 1 | 2 => 1
        case _ => fib(n - 1) + fib(n - 2)
      }

      (1 to 20).map(fib).toList
    }

    println(s"斐波那契数列前20项:${feibonaqi().mkString(" ")}")


    //4.编写一个函数,允许用户输入一个整数年份,如果用户输入的是闰年就停止输入,否则就一直提示用户输入。
    import scala.io.StdIn
    breakable {
      while (true) {
        print("请输入一个年份:")
        val year = StdIn.readInt()
        if (runnian(year)) {
          println(s"${year}为闰年")
          break()
        } else {
          println(s"${year}不是闰年,请重新输入")
        }
      }
    }
    println("完成")


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

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

    arr1.foreach(println)
  }
}