作业

31 阅读2分钟

image.png

1..编写一个函数,它的入参是一个表示年份的证书,返回值是一个bool值,判断是否是闰年

//1.编写一个函数,它的入参是一个表示年份的证书,返回值是一个bool值,判断是否是闰年
print("请输入一个年份:")
val year: Int = scala.io.StdIn.readInt()

val result: Boolean = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)

if (result) {
  println(s"$year 是闰年")
}

else {
  println(s"$year 不是闰年")
}

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

// 1.定义函数计算f(n) = 1 - 1/2 + 1/3 - 1/4 + ... ± 1/n
def calculateF(n: Int): Double = {
  var sum = 0.0  // 使用Double类型存储结果,避免整数除法精度问题
  for (i <- 1 to n) {
    // 奇数项加1/i,偶数项减1/i
    if (i % 2 == 1) {
      sum += 1.0 / i
    } else {
      sum -= 1.0 / i
    }
  }
  sum
}

// 计算f(100)并打印结果
val result = calculateF(100)
println(s"f(100)的结果为: $result")

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

// 1.编写一个函数,用来求斐波那契数列前20项
def fibonacci(n: Int): List[Int] = {
  if (n == 1) List(1)
  else if (n == 2) List(1, 1)
  else {
    val fibs = scala.collection.mutable.ListBuffer(1, 1)
    for (i <- 2 until n) {
      fibs += fibs(i - 1) + fibs(i - 2)
    }
    fibs.toList
  }
}
val result3 = fibonacci(20)
result3.foreach(println)

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

// 1.编写一个函数,允许用户输入一个整数年份,如果用户输入的是闰年就停止输入,如果不是就一直提示用户输入
while(true) {
  print("请输入一个年份:")
  val year = scala.io.StdIn.readInt()
  if(year%400 ==0 || (year%4==0 && year%100 !=0)){
    println("是闰年")
    break
  }else{
    println("不是闰年")
  }
}

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

// 处理成绩:将56-59分之间的成绩设为60分
var score = Array(100, 51, 55, 67, 59, 89)

// 判断是否在56-59之间,是则返回60,否则返回原分数
var fn = (x: Int) => if (x >= 56 && x <= 59) 60 else x

val score1 = score.map(fn)

print(score1.mkString("Array(", ", ", ")"))