scala 阶段1 过关练习

35 阅读1分钟

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

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

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

          if (year == 0) {
            print("结束循环")
            break
          }

          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

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

}

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

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



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

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

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


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

                if (year == year%400==0 || (year%4==0 && year%100!=0)) {
                    print("结束循环")
                    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)

def main(args: Array[String]): Unit = {
    var arr = Array(100,51,55,67,59,89)
    var arr1 = arr.map(x => if(x<=59 && x>=56) 60 else x)
    arr1.foreach(println)

}