go多分支控制

一 多分支控制

1 基本语法

if 条件表达式1 {
    执行代码块1
} else if 条件表达式2 {
    执行代码块2
}
...
else {
    执行代码块n
}

2 说明

a 多分支的判断流程如下

step1:先判断条件表达式1是否成立,如果为真,就执行代码块1。

step2:如果条件表达式1如果为假,就去判断条件表达式2是否成立, 如果条件表达式2为真,就执行代码块2。

step3:依次类推。

step4:如果所有的条件表达式不成立,则执行 else 的语句块。

b else 不是必须的。

c  多分支只能有一个执行入口。

二 多分支的流程图

三 实战

1 要求

岳小鹏参加 Golang 考试,他和父亲岳不群达成承诺:

如果:

成绩为 100 分时,奖励一辆 BMW;

成绩为(80,99]时,奖励一台 iphone7plus;

当成绩为[60,80]时,奖励一个 iPad;

其它时,什么奖励也没有。

请从键盘输入岳小鹏的期末成绩,并加以判断

2 代码

package main

import (
   "fmt"
   _ "math"
)

func main() {
   var score int
   fmt.Println("请输入成绩:")
   fmt.Scanln(&score)

   // 多分支判断
   if score == 100 {
      fmt.Println("奖励一辆BMW")
   } else if score > 80 && score <= 99 {
      fmt.Println("奖励一台iphone7plus")
   } else if score >= 60 && score <= 80 {
      fmt.Println("奖励一个 iPad")
   } else {
      fmt.Println("什么都不奖励")
   }
}

3 测试结果

请输入成绩:
99
奖励一台iphone7plus

四 使用陷阱

1 代码

package main

import (
   "fmt"
   _ "math"
)

func main() {
   // 使用陷阱,只会输出ok1
   var n int = 10
   if n > 9 {
      fmt.Println("ok1") //输出 ok1
   } else if n > 6 {
      fmt.Println("ok2")
   } else if n > 3 {
      fmt.Println("ok3")
   } else {
      fmt.Println("ok4")
   }
}

2 测试

ok1

五 多分支练习1

1 代码

package main

import (
   "fmt"
   _ "math"
)

func main() {
   var b bool = true
   if b == false { // 如果写成 b = false; 能编译通过吗?如果能,结果是?
      fmt.Println("a")
   } else if b {
      fmt.Println("b")
   } else if !b {
      fmt.Println("c")
   } else {
      fmt.Println("d")
   }
}

2 测试

b

3 说明

如果写成 b = false,编译错误,if 的条件表达式不能是赋值语句。

六 多分支练习2

1 要求

求 ax2+bx+c=0 方程的根。a,b,c分别为函数的参数。

如果:b2-4ac>0,则有两个解

如果:b2-4ac=0,则有一个解

如果:b2-4ac<0,则无解

提示1:x1=(-b+sqrt(b2-4ac))/2a                            

            X2=(-b-sqrt(b2-4ac))/2a

提示2:math.Sqrt(num); 可以求平方根,需要引入 math包

2 分析思路

a a,b,c 是三个float64

b 使用到给出的数学公式

c 使用到多分支

d 使用math.Squr方法

3 代码

package main

import (
   "fmt"
   "math"
   _ "math"
)

func main() {
   var a float64 = 2.0
   var b float64 = 4.0
   var c float64 = 2.0

   m := b*b - 4*a*c
   // 多分支判断
   if m > 0 {
      x1 := (-b + math.Sqrt(m)) / 2 * a
      x2 := (-b - math.Sqrt(m)) / 2 * a
      fmt.Printf("x1=%v x2=%v", x1, x2)
   } else if m == 0 {
      x1 := (-b + math.Sqrt(m)) / 2 * a
      fmt.Printf("x1=%v", x1)
   } else {
      fmt.Println("无解...")
   }
}

4 测试

x1=-4

七 多分支练习3

1 要求

大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:

高:180cm以上;富:财富1千万以上;帅:是。条件从控制台输入。

如果这三个条件同时满足,则:“我一定要嫁给他!!!”

如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”

如果三个条件都不满足,则:“不嫁!”

2 分析思路

a 应该设计三个变量 var height int32  | var money float32 | var handsome bool

b 需要从终端输入 fmt.Scanln

c 使用多分支if--else if -- else

3 代码

package main

import (
   "fmt"
   _ "math"
)

func main() {
   var height int32
   var money float32
   var handsome bool

   fmt.Println("请输入身高(厘米)")
   fmt.Scanln(&height)
   fmt.Println("请输入财富(千万)")
   fmt.Scanln(&money)
   fmt.Println("请输入是否帅(true/false)")
   fmt.Scanln(&handsome)
   
   if height > 180 && money > 1.0 && handsome {
      fmt.Println("我一定要嫁给他!!!")
   } else if height > 180 || money > 1.0 || handsome {
      fmt.Println("嫁吧,比上不足,比下有余")
   } else {
      fmt.Println("不嫁....")
   }
}

4 测试

请输入身高(厘米)
173
请输入财富(千万)
0.5
请输入是否帅(true/false)
true
嫁吧,比上不足,比下有余

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值