08内建控制-循环语句while2

53 阅读1分钟

案例(一)

回答以下问题

问题1:1 + 1/2 + 1/3 + 1/4 + 1/5 + ... + 1/19

问题2:计算1 - 1/2 + 1/3 - 1/4 + ... + 1/19

object base22 {
  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 // sum = sum + i
      i = i + 1
    }
    println(s"sum:${sum}")


    // 问题1:1 + 1/2 + 1/3 + 1/4 + 1/5 + ... + 1/19
    var sum1 = 0.0
    for (i <- 1 to 19) {
      sum1 += 1.0 / i
    }
    println(f"问题1的和为: $sum1%.6f")

    // 问题2:计算1 - 1/2 + 1/3 - 1/4 + ... + 1/19
    var sum2 = 0.0
    for (i <- 1 to 19) {
      if (i % 2 == 1) {
        sum2 += 1.0 / i
      } else {
        sum2 -= 1.0 / i
      }
    }
    println(f"问题2的和为: $sum2%.6f")
  }
}

结果如图:

image.png

(二)案例2

从键盘上输入一个数,判断它是不是素数?

判断一个数,是不是素数?

素数:只有1和它本身能被整除。

2,3,5,7,11,13,......,97

思路:

  1. 假设它是一个素数。

  2. 循环 使用 2,3,4,...num-1 去除 num,如果能整除,说明 num 不是素数

  3. 循环结束,输出结果

object base23 {
  def main(args: Array[String]): Unit = {

    var num = 121
    var isPrime = true // 假设是素数
    var i = 2
    while(i <= num -1){
      if(num % i == 0){
        isPrime = false
        println(s"${num} 能被 ${i} 整除")
      }
      i += 1
    }

    if(isPrime){
      println(s"${num} 是素数")
    } else {
      println(s"${num} 不是素数")
    }
  }
}

结果如图

image.png

(三)案例3

假设某人的年化投资回报率是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年结束时有多少元?

2、多少年之后能超过1000元?

object base24 {
  def main(args: Array[String]): Unit = {
    var i = 0
    var money = 1.0 // 本金
    while(i < 10) {
      while(money <= 1000) {
        money = money * 1.1
        println(s"第${i}年结束时,钱数为${money}")
        i += 1
      }
    }
    println(i)
  }
}

image.png

image.png

(四)案例4

计算并输出 1 到 100 之间所有奇数的和,同时展示这些奇数

object base25 {
  def main(args: Array[String]): Unit = {
    var i = 1
    // while(i<=10){
    // println(i)//
    // i += 1// }
    // for(i <- 1 to 10 )
    // {println(i)}
    // }
    
    //by: 步长:循环变量每次增加的值。默认就是 1
    // for (i <- 1 to 100 by 1) <====> for ( i <- 1 to 100 )
    var sum = 0
    for (i <- 1 to 100 by 2 ){
      println (i)
      sum += i
    }
    println (sum)
  }
}

结果如图:

image.png