Scala练习题1

44 阅读1分钟

scala1.png

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

object 练习01 {
  //编写一个函数,它的入参是一个表示年份的整数,返回值是一个bool值,判断这个年份是否为闰年
  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 不是闰年")
    }
  }

}

结果

image.png

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

object 练习02 {
  //编写一个函数,用来求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}")
  }

}

结果

image.png

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

object 练习03 {
  //编写一个函数,用来求斐波那契数列的前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)+"")
    }
  }

}

结果

image.png

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

object 练习04 {
  //编写一个函数,允许用户输入一个整数年份,如果用户输入的是闰年就停止输入,否则就一直提示用户输入
  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")


  }

}

结果

image.png

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

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

    def main(args: Array[String]): Unit = {
      // 原始成绩数组
      val yuanshuju = Array(100, 51, 55, 67, 59, 89)

      // 处理成绩
      val chulihou = yuanshuju.map { score =>
        if (score >= 56 && score <= 59) 60 else score
      }

      println(s"原始成绩:${yuanshuju.mkString("(", ", ", ")")}")
      println(s"处理后成绩:${chulihou.mkString("(", ", ", ")")}")
    }


}

结果

image.png