首页 > 其他分享 >3.1-分支语句

3.1-分支语句

时间:2023-01-02 12:11:21浏览次数:36  
标签:语句 && fmt else birth 3.1 Println Day 分支

3.1 分支语句

  • 对于需要先做判断,再选择如何处理的问题就要使用分支语句。

3.1.1 单分支语句

语法:

if 布尔表达式 { //左花括号必须与表达式同行
    // 在布尔表达式为true的时候执行下面的代码块
}

示例代码

package main

import "fmt"

func main() {
   fmt.Println("分支语句")
   fmt.Println("1) if 单分支语句")
   var name = "arthur"
   fmt.Println(name == "arthur")
   if name == "arthur" {
      // if为真执行的代码块
      fmt.Println("姓名匹配成功。")
   }
   fmt.Println("END")
}

3.1.2 双分支语句

  • 两条分支,根据布尔表达式结果,二选一执行

示例代码 1

package main

import "fmt"

func main() {
   fmt.Println("分支语句")
   fmt.Println("1) if 单分支语句")
   var name = "arthur"
   fmt.Println(name == "arthur")
   if name == "arthur" {
      // if为真执行的代码块
      fmt.Println("姓名匹配成功。")
   }
   fmt.Println("END")

   fmt.Println("2) if-else 双分支语句")

      //示例1:
      var age int
      fmt.Println("请输入您的年龄:")
      fmt.Scan(&age)
      if age >= 18 {
         // 表达式为真执行的代码块
         fmt.Println("恭喜,已成年。")
      } else {
         // 表达式为假执行的代码块
         fmt.Println("遗憾,还未成年。")
      }
      
}

示例代码 2

package main

import "fmt"

func main() {
   fmt.Println("2) if-else 双分支语句")
   // 示例2:
   var username, password string
   fmt.Println("请输入用户名和密码,以空格分隔:")
   fmt.Scan(&username, &password)
   if username == "arthur" && password == "123" {
      fmt.Println("登录成功。")
   } else {
      fmt.Println("用户名或密码错误。")
   }

}

3.1.3 if 多分支语句

  • 不管多少条分支,最终只能执行其中一条分支。

案例 1

package main

import (
   "fmt"
)

func main() {
   /*
      案例:
      成绩评级
      成绩数值范围0~100
      大于等于90 优秀
      大于等于80 良好
      大于等于60 及格
      小于60      不及格
   */
   var score int
   fmt.Println("请输入您的成绩:")
   fmt.Scan(&score)

   if score < 0 || score > 100 {
      fmt.Println("成绩数值输入范围不合法!请重新输入!")
   } else if score >= 90 {
      fmt.Println("成绩优秀")
   } else if score >= 80 {
      fmt.Println("成绩良好")
   } else if score >= 60 {
      fmt.Println("成绩及格")
   } else {
      fmt.Println("成绩不及格")
   }
}

案例 2

  • 分支嵌套案例
package main

import (
   "fmt"
)

func main() {
   var username, password string
   fmt.Println("请输入用户名和密码:")
   fmt.Scan(&username, &password)
   if username == "root" && password == "123" {
      // 登录成功执行如下代码块
      var score int
      fmt.Println("请输入您的成绩:")
      fmt.Scan(&score)
      if score < 0 || score > 100 {
         fmt.Println("输入成绩数值不合法,有效范围0~100,请重新输入!")
      } else if score >= 90 {
         fmt.Println("成绩优秀!")
      } else if score >= 80 {
         fmt.Println("成绩良好!")
      } else if score >= 60 {
         fmt.Println("成绩及格!")
      } else {
         fmt.Println("成绩不合格!")
      }
      fmt.Println("成绩查询结束!END")
   } else {
      fmt.Println("用户名或密码错误!")
   }

}

案例 3

package main

import (
   "fmt"
   "strconv"
   "strings"
)

func main() {
   /*
      案例:
      简单的根据生日判断星座
      不判断平年闰年,多层分支嵌套,没有太多实际意义,只为练习if多分支语句
      12.22~1.19 摩羯座
      1.20~2.18  水瓶座
      2.19~3.20  双鱼座
      3.21~4.19  白羊座
      4.20~5.20  金牛座
      5.21~6.21  双子座
      6.22~7.22  巨蟹座
      7.23~8.22  狮子座
      8.23~9.22  处女座
      9.23~10.23 天秤座
      10.24~11.22    天蝎座
      11.23~12.21    射手座
   */
   var birth string
   fmt.Println("请输入您的生日,按\"年-月-日\"的格式输入,如1992-7-1:")
   fmt.Scan(&birth)
   birth_Slice := strings.Split(birth, "-")
   birth_Year, _ := strconv.Atoi(birth_Slice[0])
   birth_Month, _ := strconv.Atoi(birth_Slice[1])
   birth_Day, _ := strconv.Atoi(birth_Slice[2])
   fmt.Println(birth_Year)
   if birth_Month == 1 {
      if birth_Day >= 1 && birth_Day <= 19 {
         fmt.Println("您是摩羯座!")
      } else if birth_Day >= 20 && birth_Day <= 31 {
         fmt.Println("您是水瓶座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   } else if birth_Month == 2 {
      if birth_Day >= 1 && birth_Day <= 18 {
         fmt.Println("您是水瓶座!")
      } else if birth_Day >= 19 && birth_Day <= 29 {
         fmt.Println("您是双鱼座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   } else if birth_Month == 3 {
      if birth_Day >= 1 && birth_Day <= 20 {
         fmt.Println("您是双鱼座!")
      } else if birth_Day >= 21 && birth_Day <= 31 {
         fmt.Println("您是白羊座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   } else if birth_Month == 4 {
      if birth_Day >= 1 && birth_Day <= 19 {
         fmt.Println("您是白羊座!")
      } else if birth_Day >= 20 && birth_Day <= 30 {
         fmt.Println("您是金牛座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   } else if birth_Month == 5 {
      if birth_Day >= 1 && birth_Day <= 21 {
         fmt.Println("您是金牛座!")
      } else if birth_Day >= 22 && birth_Day <= 31 {
         fmt.Println("您是双子座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   } else if birth_Month == 6 {
      if birth_Day >= 1 && birth_Day <= 22 {
         fmt.Println("您是双子座!")
      } else if birth_Day >= 23 && birth_Day <= 30 {
         fmt.Println("您是巨蟹座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   } else if birth_Month == 7 {
      if birth_Day >= 1 && birth_Day <= 22 {
         fmt.Println("您是巨蟹座!")
      } else if birth_Day >= 23 && birth_Day <= 31 {
         fmt.Println("您是狮子座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   } else if birth_Month == 8 {
      if birth_Day >= 1 && birth_Day <= 22 {
         fmt.Println("您是狮子座!")
      } else if birth_Day >= 23 && birth_Day <= 31 {
         fmt.Println("您是处女座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   } else if birth_Month == 9 {
      if birth_Day >= 1 && birth_Day <= 22 {
         fmt.Println("您是处女座!")
      } else if birth_Day >= 23 && birth_Day <= 30 {
         fmt.Println("您是天秤座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   } else if birth_Month == 10 {
      if birth_Day >= 1 && birth_Day <= 23 {
         fmt.Println("您是天秤座!")
      } else if birth_Day >= 24 && birth_Day <= 31 {
         fmt.Println("您是天蝎座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   } else if birth_Month == 11 {
      if birth_Day >= 1 && birth_Day <= 22 {
         fmt.Println("您是天蝎座!")
      } else if birth_Day >= 23 && birth_Day <= 30 {
         fmt.Println("您是射手座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   } else if birth_Month == 12 {
      if birth_Day >= 1 && birth_Day <= 21 {
         fmt.Println("您是射手座!")
      } else if birth_Day >= 22 && birth_Day <= 31 {
         fmt.Println("您是摩羯座!")
      } else {
         fmt.Println("12月日期输入不合法,请重新输入。")
      }
   } else {
      fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
   }
}

3.1.4 switch 多分支语句

  • switch 语句也是多分支选择语句

  • 执行哪一个代码块,取决于 switch 后的值与哪一个 case 匹配成功,则执行该 case 后的代码块。

  • switch 比 if else 更为简洁;

  • 执行效率更高。switch...case 会生成一个跳转表来指示实际的 case 分支的地址,而这个跳转表的索引号与 switch 变量的值是相等的。从而,switch...case 不用像 if..else 那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。

  • 到底使用哪一个分支选择语句,和代码使用需求环境有关。

    • 如果是范围取值,则使用 if...else 语句更为快捷;
    • 如果是确定取值,则使用 switch 是更优方案。
  • switch 支持多条件确定值匹配

switch{
    case 1,2:
        ...
    default:
        ...
}

语法:

switch var{
    case val1:
        ...
    case val2:
        ...
    case val3:
        ...
    default:
        ...
}

代码示例:

package main

import "fmt"

func main() {
   /*
      多分支语句案例:
      输入数字,打印星期几 0是星期日
   */
   var week int
   fmt.Println("请输入星期的数字(0~6):")
   fmt.Scan(&week)
   /*
      // if - else if - else if ... else 多分支语句
      if week == 0 {
         fmt.Println("星期日")
      } else if week == 1 {
         fmt.Println("星期一")
      } else if week == 2 {
         fmt.Println("星期二")
      } else if week == 3 {
         fmt.Println("星期三")
      } else if week == 4 {
         fmt.Println("星期四")
      } else if week == 5 {
         fmt.Println("星期五")
      } else if week == 6 {
         fmt.Println("星期六")
      } else {
         fmt.Println("输入数字不合法,请重新输入。")
      }
   */

   // switch 多分支语句
   if week >= 0 && week <= 6 {
      switch week {
      case 1:
         fmt.Println("星期一")
      case 2:
         fmt.Println("星期二")
      case 3:
         fmt.Println("星期三")
      case 4:
         fmt.Println("星期四")
      case 5:
         fmt.Println("星期五")
      case 6:
         fmt.Println("星期六")
      case 0:
         fmt.Println("星期日")
      }
   } else {
      fmt.Println("输入数字不合法,请重新输入!")
   }
}

案例改写:

  • 上述 if...else 判断星座案例使用 switch 嵌套 if...else 改写
package main

import (
   "fmt"
   "strconv"
   "strings"
)

func main() {
   /*
      案例:
      简单的根据生日判断星座
      不判断平年闰年,多层分支嵌套,没有太多实际意义,只为练习if多分支语句
      12.22~1.19 摩羯座
      1.20~2.18  水瓶座
      2.19~3.20  双鱼座
      3.21~4.19  白羊座
      4.20~5.20  金牛座
      5.21~6.21  双子座
      6.22~7.22  巨蟹座
      7.23~8.22  狮子座
      8.23~9.22  处女座
      9.23~10.23 天秤座
      10.24~11.22    天蝎座
      11.23~12.21    射手座
   */
   var birth string
   fmt.Println("请输入您的生日,按\"年-月-日\"的格式输入,如1992-7-1:")
   fmt.Scan(&birth)
   birth_Slice := strings.Split(birth, "-")
   birth_Year, _ := strconv.Atoi(birth_Slice[0])
   birth_Month, _ := strconv.Atoi(birth_Slice[1])
   birth_Day, _ := strconv.Atoi(birth_Slice[2])
   fmt.Println(birth_Year)

   switch birth_Month {
   case 1:
      if birth_Day >= 1 && birth_Day <= 19 {
         fmt.Println("您是摩羯座!")
      } else if birth_Day >= 20 && birth_Day <= 31 {
         fmt.Println("您是水瓶座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   case 2:
      if birth_Day >= 1 && birth_Day <= 18 {
         fmt.Println("您是水瓶座!")
      } else if birth_Day >= 19 && birth_Day <= 29 {
         fmt.Println("您是双鱼座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   case 3:
      if birth_Day >= 1 && birth_Day <= 20 {
         fmt.Println("您是双鱼座!")
      } else if birth_Day >= 21 && birth_Day <= 31 {
         fmt.Println("您是白羊座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   case 4:
      if birth_Day >= 1 && birth_Day <= 19 {
         fmt.Println("您是白羊座!")
      } else if birth_Day >= 20 && birth_Day <= 30 {
         fmt.Println("您是金牛座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   case 5:
      if birth_Day >= 1 && birth_Day <= 21 {
         fmt.Println("您是金牛座!")
      } else if birth_Day >= 22 && birth_Day <= 31 {
         fmt.Println("您是双子座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   case 6:
      if birth_Day >= 1 && birth_Day <= 22 {
         fmt.Println("您是双子座!")
      } else if birth_Day >= 23 && birth_Day <= 30 {
         fmt.Println("您是巨蟹座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   case 7:
      if birth_Day >= 1 && birth_Day <= 22 {
         fmt.Println("您是巨蟹座!")
      } else if birth_Day >= 23 && birth_Day <= 31 {
         fmt.Println("您是狮子座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   case 8:
      if birth_Day >= 1 && birth_Day <= 22 {
         fmt.Println("您是狮子座!")
      } else if birth_Day >= 23 && birth_Day <= 31 {
         fmt.Println("您是处女座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   case 9:
      if birth_Day >= 1 && birth_Day <= 22 {
         fmt.Println("您是处女座!")
      } else if birth_Day >= 23 && birth_Day <= 30 {
         fmt.Println("您是天秤座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   case 10:
      if birth_Day >= 1 && birth_Day <= 23 {
         fmt.Println("您是天秤座!")
      } else if birth_Day >= 24 && birth_Day <= 31 {
         fmt.Println("您是天蝎座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   case 11:
      if birth_Day >= 1 && birth_Day <= 22 {
         fmt.Println("您是天蝎座!")
      } else if birth_Day >= 23 && birth_Day <= 30 {
         fmt.Println("您是射手座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   case 12:
      if birth_Day >= 1 && birth_Day <= 21 {
         fmt.Println("您是射手座!")
      } else if birth_Day >= 22 && birth_Day <= 31 {
         fmt.Println("您是摩羯座!")
      } else {
         fmt.Printf("%d月日期输入不合法,请重新输入。\n", birth_Month)
      }
   default:
      fmt.Println("月份输入不合法,月份范围1~12,请重新输入。")
   }
}

标签:语句,&&,fmt,else,birth,3.1,Println,Day,分支
From: https://www.cnblogs.com/arthur666/p/17019697.html

相关文章

  • 分支语句与循环语句
    C语言是一门结构化的程序设计语言。什么是语句?由分号;隔开的就是一条语句分支语句(选择结构)if语句if(表达式)语句;if(表达式)语句1;else语句2;if(表达式1)语......
  • 初识JavaScript-概念,注释,js输入和输出语句
    初识JavaScript目录初识JavaScript1.初识JavaScript1.1JavaScript是什么1.1JavaScript是什么1.2JavaScript的作用1.3HTML/CSS/JS的关系1.4浏览器执行JS简介......
  • 解决:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:co
    后来发现是java的版本号不对。Java8到java13的版本号分别为1.8,1.9,1.10,10,11,12,13。解决链接:https://blog.csdn.net/weixin_44190665/article/details/113062616?spm=1001.2......
  • java-流程控制语句
    目录顺序分支if判断if格式1if格式2if格式3switch选择case穿透:即没有break的case语句!补充:if和switch的使用说明!流程for循环*while循环*for与while的区别do...while循环顺......
  • 2023.1.1周报
    2023.1.1周报本周总结:本周比较不幸感染了新冠,前几天在发着烧,所以大部分时间是在休息,本周主要学习了动态规划没学的的数位dp和概率dp,但概率dp里面概率算的不是太明白所以......
  • 2023.1.2 周报
    本周总结写完了这周写的题之后,对线性dp的几个常见模型更加了解了,加深了对《背包九讲》里面的内容的理解。大主题动态规划小专题刷了《算法竞赛》上的线性dp的课后......
  • 2023.1.1周报
    2023.1.1周报本周总结由于动态规划是弱项,故本周的训练主要集中在动态规划,前几天看了动态规划的课程,其余部分时间在刷题。大主题动态规划小专题线性dp,背包,区间dp。题......
  • 力扣每日一题2023.1.1---2351. 第一个出现两次的字母
    给你一个由小写英文字母组成的字符串s,请你找出并返回第一个出现两次的字母。注意:   如果a的第二次出现比b的第二次出现在字符串中的位置更靠前,则认为字母......
  • Mysql - 查看数据库版本,登录,show语句,use 选择数据库
    1.查看数据库版本#登录之前CMD命令查看mysql--version#登录之后mysql语句查看SELECTVERSION();2.登录mysql-u用户名-hIP地址-P端口-p密码mysql-......
  • shell脚本常用if判断语句以及条件
    if判断中常使用的shell选项选项含义-eq//等于equal-ne//不等于notequal-gt//大于greaterthan-lt//小于lessthan-ge//大......