随机生成十个日期,年份从1970年开始到2030年,考虑到闰年时:2月份是29天,非闰年时:2月份是28天,并显示出结果。
按题目要求用go编写的结果
package main
import (
"fmt"
"math/rand"
"time"
)
func init() {
//初始化随机种子
rand.Seed(time.Now().UnixNano())
}
var era = "您要的第%d个随机日期:" //提示语
//随机生成十个日期
func main() {
var startYear = 1970 //开始年份
var endYear = 2030 //结束年份
var year = 0 //年
var month = 0 //月
var day = 0 //日
var count = 1 //统计次数
//循环10个1970-2030年的随机日期
for yearNum := endYear - startYear; count <= 10; {
//随机年份
year = startYear + rand.Intn(yearNum)
//随机月份
month = rand.Intn(12) + 1
//随机日份,考虑不同月份时,有天数差异情况
switch month {
case 2:
if (year%4 == 0 && year%100 != 0) || year%400 == 0 {
day = rand.Intn(29) + 1
} else {
day = rand.Intn(28) + 1
}
case 1,3,5,7,8,10,12:
day = rand.Intn(31) + 1
default:
day = rand.Intn(30) + 1
}
fmt.Printf(era,count)
fmt.Printf("%d年%d月%d日 \n",year,month,day)
count ++ //累计次数
}
}
按题目要求用rust编写的结果
use rand::Rng;
fn main() {
let start_year = 1970; //开始年份
let end_year = 2030; //结束年份
let mut year; //年
let mut month; //月
let mut day; //日
let mut count = 1; //统计次数
while count <= 10 {
//随机年份
year = rand::thread_rng().gen_range(start_year..end_year);
//随机月份
month = rand::thread_rng().gen_range(1..12);
//随机日份,考虑不同月份时,有天数差异情况
match month {
2 => {
if (year%4 == 0 && year%100 != 0) || year%400 == 0 {
day = rand::thread_rng().gen_range(1..29);
} else {
day = rand::thread_rng().gen_range(1..28);
}
},
1|3|5|7|8|10|12 => {
day = rand::thread_rng().gen_range(1..31);
},
_ => {
day = rand::thread_rng().gen_range(1..30);
}
};
print!("您要的第{}个随机日期:",count);
println!("{}年{}月{}日",year,month,day);
count += 1; //累计次数
}
}