scala练习题1

41 阅读1分钟

scala1.png

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

def main(args: Array[String]): Unit = {
  print("请输入年份:")
  val year = scala.io.StdIn.readInt()

  def isLeapYear(year:Int):Boolean =

    (year % 4 == 0 && year % 100 != 0) || (year %400 == 0)

    val result = if (isLeapYear(year)) "是" else "不是"

    println(s"年份:${year},${result}润年")
  }

结果

Snipaste_2025-10-28_10-56-08.png

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

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 // 1/3(奇数)
  } else {
   sum = sum - 1.0 / i // 1/2(偶数)
  }
  i += 1
 }
 println(s"sum=${sum}")
}

结果

Snipaste_2025-10-28_10-56-17.png

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

def f (n:Double):Double = {
 if(n == 1 || n == 2){
  1
 }
 else{
  f(n - 1) + f(n - 2)
 }
}

def main(args: Array[String]): Unit = {
 for (i <- 1 to 20){
  println(f(i)+"")
 }
}

结果

Snipaste_2025-10-28_10-56-39.png

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

import scala.io.StdIn
def isLeapYear(year:Int):Boolean = {
 (year % 4 == 0 && year % 100 != 0) || (year %400 == 0)
}

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

 do{
  print("请输入年份:")
  year = StdIn.readInt()

 }while(!isLeapYear(year))
 println(s"您输入的闰年是:${year}")
}

结果

Snipaste_2025-10-28_10-57-05.png

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

def main(args: Array[String]): Unit = {
 val s = Array(100,51,67,59,89)

 val c = s.map{score =>
   if (score >= 56 && score <= 59) 60 else score
 }
 println(s"${s.mkString("(",",",")")}")
 println(s"${c.mkString("(",",",")")}")
}

结果

Snipaste_2025-10-28_11-07-16.png