Copyright © 2022-2025 aizws.net · 网站版本: v1.2.6·内部版本: v1.25.2·
页面加载耗时 0.00 毫秒·物理内存 146.4MB ·虚拟内存 1437.8MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
Rust语言编程题目:输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以4月8日为例,应该先把前三个月的加起来,然后再加上8天即本年的第几天,如果遇到特殊情况,闰年且输入月份大于等于3时需考虑多加一天。下面的解法仅仅是为了练习知识点而得出的参考答案,当然还有其它的解答方法。大家也可以试一下。
知识点:错误校验,条件判断,字符串分割,动态数组
fn main() {
println!("请输入年月日,年月日中间用空格隔开:");
// 获取输入数据
let mut input_text = String::new();
std::io::stdin().read_line(&mut input_text).expect("failed read_line error!");
let string_vec: Vec<&str> = input_text.trim().split_whitespace().collect();
// 校验输入数据
if string_vec.len() != 3 {
println!("输入格式错误!请输入年 月 日,中间使用空格隔开!");
return;
}
// 声明变量
// 年
let year_str = string_vec[0];
let year;
// 月
let month_str = string_vec[1];
let month;
// 日
let day_str = string_vec[2];
// 校验年份
match year_str.parse::<u32>() {
Ok(i) => {
year = i;
}
Err(_) => {
println!("您输入的年份 {} 格式错误!", year_str);
return;
}
}
// 校验月份
match month_str.parse::<u32>() {
Ok(i) => {
if i < 1 || i > 12 {
println!("您输入的月份 {} 格式错误!", month_str);
return;
} else {
month = i;
}
}
Err(_) => {
println!("您输入的月份 {} 格式错误!", month_str);
return;
}
}
// 校验日期
match day_str.parse::<u32>() {
Ok(day) => {
// 日期小于1天直接返回
if day < 1 {
println!("您输入的日期 {} 格式错误!", day_str);
return;
}
// 各月份的天数
let mut month_days_vector = vec![31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// 判断是闰年
if year % 400 == 0 || (year % 4 == 0 && year % 100 != 0) {
// year是闰年
// 修改2月份天数
month_days_vector[1] = 29;
}
// 当前输入的天数 大于月份原有的天数,则提示错误!
let current_month_days = month_days_vector[(month - 1) as usize];
if day > current_month_days {
println!("您输入的日期 {} 格式错误!{} 年 {} 月的日期天数不得超过{}天!!", day_str, year, month, current_month_days);
return;
} else {
// 计算总天数
// 前month - 1的月份天数 + 当前的日期 i
let mut count: u32 = 0;
for item in 1..month {
count += month_days_vector[(item - 1) as usize];
}
count += day;
print!("{}年{}月{}日 是 {} 年的第 {} 天", year, month, day, year, count);
}
}
Err(_) => {
println!("您输入的日期 {} 格式错误!", day_str);
}
}
}
程序执行结果:
请输入年月日,年月日中间用空格隔开: 2056 12 31 2056年12月31日 是 2056 年的第 366 天 Process finished with exit code 0
Rust语言编程题目:输入三个整数x,y,z,请把这三个数由小到大输出。程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较, ...