#自学课程#《放学你别走第一季之GO语言学习》Day3打卡

【Day3任务】
学习GO语言的流程控制和函数。
用学到的知识实现下面的题目:
要求用户输入一个年份和一个月份,判断(要求使用嵌套的if…else和switch分别判断一次)该年该月有多少天。
打卡时间:2月23日(周六)23:30前
打卡形式:代码运行截图+代码源码
package main

import (
"fmt"
"strconv"
"os"
)

func help(){

fmt.Println("请依次按顺序输入年份和月份2个参数,用空格隔开,例如要查看2019年2月的天数,请输入:2019 2")

}

func errorHappen(no int) {

switch no {

case 1:
fmt.Println("参数错误!更多帮助信息请使用参数'help'!")

case 2:
fmt.Println("月份为大于0小于13的正整数,您输入的月份不合法!更多帮助信息请使用参数'help'!")

case 3:
fmt.Println("年份为大于0的正整数,您输入的年份不合法!更多帮助信息请使用参数'help'!")

default:
fmt.Println("未知错误!更多帮助信息请使用参数'help'!")
}
}

func isLeap(year int) int {

isLeap := 0
if year % 4 == 0 && year % 100 != 0 {
isLeap = 1
}

return isLeap

}

func main(){

const helpFlag = "help"


args := os.Args

//输入帮助符号
if len(args) == 2 && helpFlag == args[1] {
help()
os.Exit(0)
}

//判断参数传递是否正确
if len(args) < 2 || args == nil {
errorHappen(1)
os.Exit(0)

}




//获取数据
year, _ := strconv.Atoi(args[1])
month := args[2]
days := 0

//判断月份合法
m,_ := strconv.Atoi(args[2])
if m < 0 || m >12{
errorHappen(2)
os.Exit(0)
}


//判断年份合法
if year < 0 {
errorHappen(3)
os.Exit(0)
}

//使用switch case 实现流程控制
switch month {

case "1","3","5","7","8","10","12":{
days = 31

}

case "4","6","9","11":{
days = 30
}

case "2" : {
if 1 == isLeap(year) {
days = 29
}else{
days = 28
}

}

default:
help()

}

//打印结果
fmt.Printf("%d年%s月一共有%d天!",year,month,days)

}

微信图片_20190225101021.png

 

0 个评论

要回复文章请先登录注册