while语句的基本使用
前面的课程我们学习了while语句的基本使用,接下来,我们会通过几道经典的练习题来巩固它的使用。
( 一 ) 案例1-求数列的和
一.题目描述:求数列的和
求s= 1 - 1/2 + 1/3 - 1/4 + 1/5 .... +1/19的值。
案例分析:
1.while 循环执行的区间是1 - 20
2.求和项需要注意符号
object Main {
def main(args: Array[String]) = {
var sum:Double=0
var i=1
while(i<=19){
sum=sum+1.0/i
i+=1
}
println(s"sum=${sum}")
}
}
(二)案例2-判断是否素数
二.题目描述:写一段代码,它不断接受用户的输入的数字,并输出其绝对值。如果你输入的是0,就结束这个程序。
案例分析:
1. 实现核心的求绝对值的功能。
2. 把功能放在while死循环中。
3. 在合适的时候使用break跳出死循环。
object Main {
def main(args: Array[String]) = {
var sum:Double=0
var i=1
while(i<=19){
if(i%2==1){
sum+1.0/i
}else{
sum-=1.0/i
}
i+=1
}
println(s"sum=${sum}")
}
}
(三)案例3-判断是否素数
三.题目描述:从键盘上输入一个数,判断它是不是素数?
题目分析:
1. 只能被1和它本身整除的数是素数。2 3 5 7 11 13 17 19...
2. 可以从2开始到n-1为止,依次去除这个数n,如果能被除,就不是素数。
3. 设置一个变量,初始值为true,表示它是一个素数,在循环内部,如果有整除的情况,就把它设置为false。
4. 循环结束之后,检查变量的值,看看是不是素数。
object Main {
def main(args: Array[String]) = {
var num=scala.io.StdIn.readInt()
var isPrime:Boolean=true
var i=2
while(i<=num -1){
if(num%i==0){
isPrime=false
}
i+=1
}
if(isPrime){
println(s"$num 是素数")
}else{
println(s"$num 不是素数")
}
}
}
(四)案例4
四.题目描述:小球从100米高处自由落下,着地后又弹回高度的一半再次落下,如此重复。问经过多少次落地后,小球弹起的高度才会低于0.5米?
题目分析:
1. 循环执行的条件是>=0.5。
2. 在循环体内增加计数器。
23循环结束之后,输出计数器的值。
object Main {
def main(args: Array[String]) = {
var i=0
var high=100.0
while (high >= 0.5) {
high= high / 2.0
i+=1
println(s"经过${i}次落地之后,小球的高度是${high}")
}
println(s"--经过 ${i}}地后,小球弹起的高度是${high}米,小于0.5米的--")
}
}
(五)案例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元?
object Main {
def main(args: Array[String]) = {
var i=0
var money=1.0
while(i<=10){
money=money*1.1
i+=1
println(s"$i 年之后,有 $money 元")
}
println(s"i 年之后,总的钱变成了 $money")
}
}
object Main {
def main(args: Array[String]) = {
var i=0
var money=1.0
while(money<1000){
money=money*1.1
i+=1
println(s"$i 年之后,有 $money 元")
}
println(s"i 年之后,总的钱变成了 $money")
}
}
3.复试公式
object Main {
def main(args: Array[String]) = {
var i=0
var money=1.0
while(i<1000){
///while(i<37){
money=money*1.1
i+=1
println(s"$i 年之后, $money 元")
}
println(s"$i 年之后,总的钱变成了 $money")
}
}