package main
import (
"fmt"
"math"
"math/rand"
"time"
)
//循环打印输入年月日,(使用continue实现):要有判断输入的月日是否错误的语句
func scanDate() {
for {
var year, mouth, day int
fmt.Println("请输入年:")
fmt.Scanln(&year)
fmt.Println("请输入月:")
fmt.Scanln(&mouth)
if mouth > 13 || mouth < 1 {
fmt.Println("月份不正确")
continue
}
fmt.Println("请输入天:")
fmt.Scanln(&day)
if day > 31 || day < 1 {
fmt.Println("天数不正确")
continue
}
// 2月闰年28天,平年29天
if mouth == 2 {
if (year / 4 == 0 && year % 100 != 0) || (year / 400 == 0) { // 闰年:能被4整除并且不能被100整除,或者能被400整除
if day > 28 {
fmt.Println("天数不正确")
continue
}
} else {
if day > 28 {
fmt.Println("天数不正确")
continue
}
}
}
fmt.Printf("你输入的日期为:%v年%v月%v日\n", year, mouth, day)
}
}
/**
编写一个函数:
随机猜数游戏:
1.随机生成一个1~100的整数
2.10次机会
3.如果第一次就猜中,提示"你真行"
4.如果第2~3次猜中,提示"你很聪明"
5.如果第4~9次猜中,提示"一般般"
6.如果最后一次猜中, 提示"终于猜中了"
7.如果都没猜中,提示"哎,这都猜不中"
*/
func game() {
//随机生成一个数,需要一个随机种子
rand.Seed(time.Now().UnixNano()) // 纳秒级别的随机数种子
num := rand.Intn(100) + 1 // 生成[1, 100)的随机数
fmt.Printf("随机生成的数为:%v\n", num)
for i := 1; i <= 10; i++ {
var scanNum int
fmt.Printf("请输入第%v次机会猜数:", i)
fmt.Scanln(&scanNum)
if scanNum == num {
switch i {
case 1:
fmt.Println("你真行")
break
case 2,3:
fmt.Println("你很聪明")
break
case 4,5,6,7,8,9:
fmt.Println("一般般")
break
}
break
} else {
fmt.Println("没猜中,再见")
}
}
}
//编写一个函数,输出100以内的所有素数
//素数:
// 就是只能被1和本身整除的数:判断m可否被2~根号m之中的任何一个正整数整除,
// 如果m不能被此范围中任何一个正整数整除,m即为素数,否则m为合数
//每行显示5个,并求和
//思路;
//1.定义一个变量sum,该变量保存素数的和
//2.定义一个变量count,计数,除以5是否为0,为0则换行
//3.循环1~100
//4.先排除1, 1既不是素数,也不是合数; 偶数一定不是素数
//5.单独判断3
//6.一行显示5个
//7.设置一个临时数,当前数 素数:当countTemp > 0时,不是素数
func getPrime() {
sum := 0
count := 1
for i := 1; i <= 100; i++ {
if i == 1 || i % 2 == 0 {
continue
}
if i == 3 {
count++
sum += i
continue
}
if (count % 5 == 0) {
fmt.Println()
}
countTemp := 0 //设置当前数 素数:当countTemp > 0时,不是素数
//获取i的根号数的整数
for j := 2; j <= int(math.Sqrt(float64(i))); j++ {
if i % j == 0 {
countTemp++
break
}
}
if countTemp == 0 { // 说明是素数
fmt.Printf("%v\t",i)
count++
sum += i
}
}
fmt.Println()
fmt.Printf("1~100内的素数之和为:%v", sum)
}
//输出小写的a-z以及大写的A-Z,使用for循环
func printLetter() {
letter := 'a'
upper := 'A'
for {
fmt.Printf("%c\t", letter)
if 'z' == letter {
break
}
letter++
}
fmt.Println()
for {
fmt.Printf("%c\t", upper)
if 'Z' == upper {
break
}
upper++
}
}
func main() {
scanDate()
game()
getPrime()
printLetter()
}
[go学习笔记.第六章.练习] 循环打印输入年月日,(使用continue实现);随机猜数游戏;输出100以内的所有素数;输出小写的a-z以及大写的A-Z,使用for循环
于 2022-05-02 16:33:42 首次发布