循环语句while实训和for循环

61 阅读1分钟

while实训

求1 - 1/2 + 1/3 - 1/4 + ... + 1/19
object Base924 {
  def main(args: Array[String]): Unit = {
    //已知: 1+2+3+4+.....+19=190
    var i = 1
    var sum = 0
    while(i <= 19){
      println(i)
      sum += i
      i = i + 1
    }
    println(s"${sum}")
    // 问题1: 计算 1 + 1/2 + 1/3 + ... + 1/19
    var sum1 = 0.0
    var j = 1
    while (j <= 19) {
      sum1 += 1.0 / i
      j += 1
    }
    println(s"问题1结果: 1 + 1/2 + 1/3 + ... + 1/19 = $sum1")

    // 问题2: 计算 1 - 1/2 + 1/3 - 1/4 + ... + 1/19
    var sum2 = 0.0
    var sign = 1  // 用于控制符号,1为正,-1为负
    i = 1  // 重置循环变量
    while (i <= 19) {
      sum2 += sign * (1.0 / i)
      sign = -sign  // 每次循环切换符号
      i += 1
    }
    println(s"问题2结果: 1 - 1/2 + 1/3 - ... + 1/19 = $sum2")
  }
}
判断一个数是不是素数
object Base9251 {
  def main(args: Array[String]): Unit = {
    //判断一个数是不是素数
    //素数,只有1和他本身能被整除
    //2,3,5,7,11,13,,,,,97
    //思路
    //1.假设它是一个素数
    //2.循环
    
    var num = 121
    var isPrine = true
    var i = 2
    while(i<= num - 1){
      if(num % i == 0){
        isPrine = false
        println(s"${num} 能被 ${i} 整除")
      }
      i += 1
    }
    if(isPrine){
      println(s"${num}是素数")
    }else{
      println(s"${num}不是素数")
    }
  }
}
题目描述:假设某人的年化投资回报率是 10%,也就是说投入 1 元之后:第一年结束时有 1.1 元,计算过程是:1∗(1+10%)=1.1第二年结束时有 1.21 元,计算过程是:1.1∗(1+10%)=1.21元,第三年结束时有 1.331 元,计算过程是:1.21∗(1+10%)=1.331,编写程序:
1. 求它第 10 年结束时有多少元?
1. 多少年之后能超过 1000 元?
object Base9242 {
  def main(args: Array[String]): Unit = {
    var i = 0
    var money = 1.0
   // while(i < 10){
      //money = money * 1.1
     // i = i+1
     // println(s"第${i}年结束时,钱数为${money}")

   // }
    while(money <= 1000){
      money = money * 1.1
      i = i+1
        println(s"当第${i}年时超过1000")
      }
      println(i)
    }
}

for循环

object Base9243 {
  def main(args: Array[String]): Unit = {
    for(i <-1 to 10){
      println(i)
    }
    }
}
object Base9244 {
  def main(args: Array[String]): Unit = {
    //by:步长,循序变量每次增加的值。默认就是
    //for( i <-1 to 100 by 1)<====> for(i <-1 to 10)
    var sum = 0
    for( i <-1 to 100 by 2){
      println(i)
      sum += 1
    }
    println(sum)
    }
}
用for循环求1 - 1/2 + 1/3 - 1/4 + ... + 1/19
object Base9245 extends App {
  var total: Double = 0.0

  // 使用for循环计算1 - 1/2 + 1/3 - 1/4 + ... + 1/19
  for (i <- 1 to 19) {
    if (i % 2 == 1) {
      total += 1.0 / i  // 奇数项加
    } else {
      total -= 1.0 / i  // 偶数项减
    }
  }

  // 输出结果,保留6位小数
  println(f"1 - 1/2 + 1/3 - 1/4 + ... + 1/19 = $total%.6f")
}