Scala练习

52 阅读1分钟

求1 - 1/2 + 1/3 - 1/4 + 1/5......+ 1/19的值

object Main {
	def main(args: Array[String]) = {
	    /**
	     * 1 - 1/2 + 1/3 - 1/4 + 1/5......+ 1/19
	     * 
	     * (1) 1 + 2 + 3 + 4 + ......+ 19
	     * (2) 1 + 1/2 + 1/3 + 1/4 + 1/5 ... + 1/19
	     * (3) 1 - 1/2 + 1/3 - 1/4 + 1/5 ... + 1/19
	     * 
	     */
	     var sum:Double = 0 //sum = 0; sum默认是Int
	     var i = 1
	     while( i <= 19){
             // 如果i是奇数就是+
	         if(i%2 == 0){
	             sum += 1.0/ i
	         } else{//反之就是-
	             sum -= 1.0/ i
	         }
	         i += 1
	     }
	    println(s"sum=${sum}")
	}
}

判断一个数num是不是素数

object Main {
	def main(args: Array[String]) = {
	    /**
	     * 
	     * 判断一个数是不是素数
	     * 
	     */
        var num = scala.io.StdIn.readInt()
        
        var isPrime:Boolean = true  //假设是素数
        
        //从2到num-1,依次去除num,如果有一个能整除,就说明它不是素数
        
        var i = 2 
        
        while(i<=num - 1){
            //如果能整除:num%i == 0,说明isPrime不是素数
            if(num%i == 0){
                isPrime = false  // 不是素数
            }
            i += 1 
        }
        if(isPrime){
            println(s"$num 是素数")
        }else {
            println(s"$num 不是素数")
        }
	}
}

求小球落地多少次落地

小球从100米高处自由落下,着地后又弹回高度的一半,再次落下,如此重复。问经过几次落地后,小球弹起的高度才会低于0.5米

object Main {
	def main(args: Array[String]) = {
	    /**
	     * 
	     * 小球从100米高处自由落下,着地后又弹回高度的一半
	     * 再次落下,如此重复。问经过几次落地后,小球弹起的高度才会低于0.5米
	     * 
	     */
	     var i = 0 // 落地的次数
             
	     var high = 100.0 // 初始为100米
	     while(high >= 0.5){
	         
	         high = high / 2,0
	         i +=1 
	         println(s"经过${i}次落地之后,小球的高度是${high}")
	     }
	     println(s"---经过${i}次落地之后,小球的高度是${high},小于0.5米的---")
	}
}

投资回报率

  • 假设某人的年化投资回报率是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元?
	def main(args: Array[String]) = {
	     var i = 0
	     var money = 1.0
              while(i<10){
	         //每一年的钱,都在去年的基础上增加10% ==== 乘以1.1 
	         money = money * 1.1
	         i += 1 
	         println(s"$i 年之后,有$money 元")
	     }
	     println(s"i$i 年之后,总的钱变成了:$money 元")
             
	     while(money<1000){
	         //每一年的钱,都在去年的基础上增加10% ==== 乘以1.1 
	         money = money * 1.1
	         i += 1 
	         println(s"$i 年之后,有$money 元")
	     }
	     println(s"i$i 年之后,总的钱变成了:$money 元")
	}
        //本金:1.0元        =====1.家庭背景
        //时间:多少年        =====2.年龄
        //年化回报率:10%     =====3.能力
        
        //本金1   ---- 10% ---- 73年 ---- 1000
        //本金3   ---- 10% ---- 61年 ---- 1000
        //本金10  ---- 10% ---- 49年 ---- 1000
        
        //本金1   ---- 10% ---- 73年 ---- 1000
        //本金1   ---- 20% ---- 26年 ---- 1000
        //本金1   ---- 30% ---- 18年 ---- 1000
        //本金1   ---- 100% ---- 7年 ---- 1000
}