第2章:求出年数

/**
 * 求出年数。
 * 提示用户输入分钟数(例如十亿),然后显示这些分钟(minutes)代表多少年(year)和多少天(day)。
 * 假设一年有365天。
 * 下面是一个运行示例:
 * ———————————————————————————————————————————————————————————————
 * | Enter the number of minutes: 1000000000                     |
 * | 1.0E9 minutes is approximately 1902.0 years and 214.0 days. |
 * ———————————————————————————————————————————————————————————————
 */
package Test;

import java.util.Scanner;

public class T27 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("Enter the number of minutes: ");
		double minutes = input.nextDouble();
		
		double day = (int)((minutes / 60) / 24) % 365;
		double year = (int)((minutes / 60) / 24) / 365;
		System.out.println(minutes + " minutes is approximately " + year + " years and " + day +  " days.");
		
//		double hours = (int)minutes /60;
//		double dayHour = (int)hours / 24;
//		double day = (int)dayHour % 365;
//		double year = (int)dayHour / 365;

//		System.out.println("Hours: " + hours);
//		System.out.println("Days: " + days);
//		System.out.println("Years: " + year);
		
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 公元第一输入份的闰,可以使用整除运算符“//”和条件运算符“?:”来实现。具体实现方法如下: 1. 首先,计算出从公元第一输入份的年数,即year = 输入份 - 1。 2. 然后,计算出四闰百不闰的闰,即leap1 = year // 4 - year // 100 + year // 400。 3. 最后,计算出四百闰的闰,即leap2 = (year + 300) // 400。 4. 将两个闰相加,即可得到从公元第一输入份的闰,即leap1 + leap2。 下面是具体的Python代码实现: year = int(input("请输入一个份:")) - 1 leap1 = year // 4 - year // 100 + year // 400 leap2 = (year + 300) // 400 leap = leap1 + leap2 print("从公元第一到", year + 1, "底总共经历了", leap, "个闰。") ### 回答2: 现行格里高利历法是一种太阳历,由于月亮围绕地球转动的轨道与地球绕太阳转动的轨道不在同一个平面上,所以日期不是等间隔的。为了弥补这个差异,格里高利历法引入了闰的概念,而置闰规则则制定了闰量和分布。 按照现行格里高利历法的置闰规则,每四闰一次,但是整百不闰,但能被400整除的份仍然要闰。这样一来,闰量大约为每的四分之一。 为了实现上述逻辑,我们可以通过递归方式求解。假设输入份为n,如果n大于400,先递归求出400到n之间有多少个闰。然后,我们会发现在这四百中,有100个整百,也就是说有100个份不闰。所以我们再减去n/100 - 4个闰。最后,再加上[(n%100==0 && n%400!=0) ? 0 : 1],即如果n为整百但不能被400整除,则不是闰,否则是闰。 实现代码如下: ``` #include <stdio.h> int count_leap_years(int n) { if (n <= 400) { return n/4; } else { return count_leap_years(n-400) + 97 - n/100 + n/400; } } int main() { int n; printf("请输入一个份:"); scanf("%d", &n); printf("%d底总共经历了%d个闰。\n", n, count_leap_years(n) + ((n%100==0 && n%400!=0) ? 0 : 1)); return 0; } ``` 为了验证程序的正确性,我们可以手动计算一下一些份的闰年数量。比如说1900至1909,有两个闰,分别是1904和1908输入1909,程序输出的结果也应该是2。同样地,1900至1950中,闰量应该是12,此时程序的输出应该也是12。 ### 回答3: 要求一个份到这一底总共经历了多少个闰,我们需要先了解闰的判定规则。根据格里高利历法的置闰规则,闰需要满足以下条件之一: 1. 能被4整除但不能被100整除; 2. 能被400整除。 因此,我们可以编写一个程序来实现这个功能。在程序里,我们可以使用递归来进行求解,具体思路如下: 1. 如果输入份小于等于0,则返回0; 2. 如果输入份能被400整除,则返回当前份到公元1经历的闰年数 + 1; 3. 如果输入份不能被400整除但可以被100整除,则返回当前份到公元1经历的闰年数; 4. 如果输入份不能被400整除且不能被100整除但能被4整除,则返回当前份到公元1经历的闰年数 + 1; 5. 如果输入份不符合以上任何一种情况,则返回当前份到公元1经历的闰年数。 具体代码如下: ``` def leap_year(year): if year <= 0: return 0 elif year % 400 == 0: return leap_year(year-1) + 1 elif year % 100 == 0: return leap_year(year-1) elif year % 4 == 0: return leap_year(year-1) + 1 else: return leap_year(year-1) year = int(input("请输入份:")) print("{}到公元1经历了{}个闰。".format(year, leap_year(year))) ``` 在这个程序中,我们先判断输入份是否符合要求,即是否小于等于0。如果小于等于0,则返回0;否则,我们进一步判断这个份是否能够被400整除。如果能被400整除,则返回当前份到公元1经历的闰年数+1;否则,我们继续判断份是否能够被100整除。如果能被100整除,则返回当前份到公元1经历的闰年数;否则,我们判断份是否能够被4整除。如果能被4整除,则返回当前份到公元1经历的闰年数+1;否则,我们直接返回当前份到公元1经历的闰年数。最终,程序输出到输入份为止经历的闰年数。 需要注意的是,在这个程序中,我们使用了递归方式求解,而没有使用循环结构。因此,我们可以通过这个程序来展示递归算法的思想和应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值