package main
import (
"fmt"
)
//编写一个函数:判断是打鱼还是晒网
func fishONet() {
//"三天打鱼,两天晒网",如果从1990.01.01起执行"三天打鱼,两天晒网",如何判断今后的某一天是"打鱼"还是"晒网"
//思路:
//首先计算出1990年1月1日到输入的年月日之间共有多少天:
//第一步,1990年1月1日到所输入的年份之间的天数 需要注意的是:平年365天,闰年366天
//第二步,输入的这个年份中,从1月1号一直到输入的月份之间的天数
//第三步,输入的日期即为当月的天数
//然后“三天打鱼两天晒网”一共五天,每隔五天循环一次,那么,可以用总的天数除以5,得出余数:
//如果余数是1,2,3,则输出“今日打鱼”
//如果余数是4,0,则输出“今日晒网”
//定义年月日
var year, month, day int
//判断年月日是否输入正确
fmt.Println("请输入年:")
fmt.Scanln(&year)
if year < 1990 {
fmt.Println("你输入的年份错误,请重新输入!")
return
}
fmt.Println("请输入月:")
fmt.Scanln(&month)
if month < 1 || month > 12 {
fmt.Println("你输入的月份错误,请重新输入!")
return
}
fmt.Println("请输入日:")
fmt.Scanln(&day)
//日判断
if day < 1 || day > 31 {
fmt.Println("你输入的日期错误,请重新输入!")
return
}
// 2月份比较特殊,闰年(能被4整除,并且不能被100整除;或者能被400整除)28天,平年29天
if month == 2 {
if (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 {
if day > 28 {
fmt.Println("你输入的日期错误,请重新输入!")
return
}
} else {
if day > 29 {
fmt.Println("你输入的日期错误,请重新输入!")
return
}
}
}
//计算1990年1月1日到输入的年月日之间共有多少天
//定义一个变量,保存从1990年1月1日到输入的年月日之间共有的天数
count := 0
//计算多少年
for i := 1990; i < year; i++ {
//闰年366天,平年365
if (i % 4 == 0 && i % 100 != 0) || i % 400 == 0 {
count += 366
} else {
count += 365
}
}
//计算月份
for j := 1; j < month; j++ {
switch month {
case 1, 3, 5, 7, 8, 10, 12:
count += 31
case 4, 6, 9, 11:
count += 30
case 2: // 2月份比较特殊,需要判断闰年还是平年
if (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 {
count += 29
} else {
count += 28
}
}
}
//计算总的天数
count += day
fmt.Println(count)
//计算打鱼还是晒网:
//总的天数除以5,得出余数:
// 如果余数是1,2,3,则输出“今日打鱼”
// 如果余数是4,5,则输出“今日晒网”
result := count % 5
switch result {
case 1, 2, 3:
fmt.Println("今日打鱼")
case 4, 0:
fmt.Println("今日晒网")
}
}
func main() {
fishONet()
}
上一节:[go学习笔记.第六章.练习] 循环打印输入年月日,(使用continue实现);随机猜数游戏;输出100以内的所有素数;输出小写的a-z以及大写的A-Z,使用for循环
下一节:[go学习笔记.第六章.函数.练习] 编写一个函数:输出小写的a-z以及大写的A-Z,使用for循环
|