[go学习笔记.第六章.练习] 循环打印输入年月日,(使用continue实现);随机猜数游戏;输出100以内的所有素数;输出小写的a-z以及大写的A-Z,使用for循环

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学习笔记.第六章.函数,包,错误处理] 9.时间和日期函数

下一节:[go学习笔记.第六章.函数.练习] 编写一个函数:判断是打鱼还是晒网

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值