其他问题2

1.

 

/*
	 * 题目:输入某年某月某日,判断这一天是这一年的第几天?
	 */
	public static void print14(int year, int month, int day) {
		long start = System.currentTimeMillis();
		int[][] monthDays = { { 1, 31 }, { 2, 59 }, { 3, 90 }, { 4, 120 }, { 5, 151 }, { 6, 181 }, { 7, 212 }, { 8, 243 }, { 9, 273 }, { 10, 304 },
				{ 11, 334 } };
		int daysOfYear = day;
		if (month > 1) {
			daysOfYear += monthDays[month - 2][1];
		}
		if (month > 2 && isLeapYear(year)) {
			daysOfYear++;
		}
		long end = System.currentTimeMillis();
		// 比较
		long start2 = System.currentTimeMillis();
		Calendar c = Calendar.getInstance();
		c.set(year, month - 1, day);
		int dayOfYear = c.get(Calendar.DAY_OF_YEAR);
		long end2 = System.currentTimeMillis();
		SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
		System.out.println(format.format(c.getTime()) + ":" + daysOfYear + ",用时" + (end - start) + "," + dayOfYear + ",用时" + (end2 - start2));

	}

	/*
	 * 是否是闰年
	 */
	private static boolean isLeapYear(int year) {
		if (year % 4 == 0) {
			if (year % 100 == 0) {
				if (year % 400 == 0) {
					return true;
				}
			} else {
				return true;
			}
		}
		return false;
	}

	public static void main(String[] args) {
		T2.print14(1900, 1, 13);
		T2.print14(1900, 2, 13);
		T2.print14(1900, 3, 13);
		T2.print14(2000, 2, 13);
		T2.print14(2000, 12, 13);
		T2.print14(2012, 2, 13);
		T2.print14(2012, 3, 13);
		T2.print14(2013, 2, 13);
		T2.print14(2013, 3, 13);
	}

 输出:

 

1900年01月13日:13,用时0,13,用时24
1900年02月13日:44,用时0,44,用时0
1900年03月13日:72,用时0,72,用时0
2000年02月13日:44,用时0,44,用时0
2000年12月13日:348,用时0,348,用时0
2012年02月13日:44,用时0,44,用时0
2012年03月13日:73,用时0,73,用时0
2013年02月13日:44,用时0,44,用时0
2013年03月13日:72,用时0,72,用时0

 

2.

 

/*
	 * 题目:输入三个整数x,y,z,请把这三个数由小到大输出。
	 */
	public static void print15(int x, int y, int z) {
		int flag = 0;
		long start = System.currentTimeMillis();
		if (x > y) {
			if (x > z) {
				if (y > z) {
					int temp = x;
					x = z;
					z = temp;
					flag = 1;
				} else {
					int temp = x;
					x = y;
					y = z;
					z = temp;
					flag = 2;
				}
			} else {
				int temp = x;
				x = y;
				y = temp;
				flag = 3;
			}
		} else {
			if (x > z) {
				int temp = x;
				x = z;
				z = y;
				y = temp;
				flag = 4;
			} else {
				if (y > z) {
					int temp = y;
					y = z;
					z = temp;
					flag = 5;
				} else {
					flag = 6;
				}
			}
		}
		long end = System.currentTimeMillis();
		System.out.println("[" + x + "," + y + "," + z + "]标志:" + flag + ",用时:" + (end - start));
	}

	/*
	 * 题目:输入三个整数x,y,z,请把这三个数由小到大输出。
	 */
	public static void print16(int x, int y, int z) {
		int flag = 0;
		long start = System.currentTimeMillis();
		if (x > y) {
			int temp = x;
			x = y;
			y = temp;
			flag++;
		}
		if (x > z) {
			int temp = x;
			x = z;
			z = temp;
			flag++;
		}
		if (y > z) {
			int temp = y;
			y = z;
			z = temp;
			flag++;
		}
		long end = System.currentTimeMillis();
		System.out.println("[" + x + "," + y + "," + z + "]标志:" + flag + ",用时:" + (end - start));
	}

	public static void main(String[] args) {
		T2.print15(1, 2, 3);
		T2.print15(1, 3, 2);
		T2.print15(2, 1, 3);
		T2.print15(2, 3, 1);
		T2.print15(3, 1, 2);
		T2.print15(3, 2, 1);
		System.out.println();
		T2.print16(1, 2, 3);
		T2.print16(1, 3, 2);
		T2.print16(2, 1, 3);
		T2.print16(2, 3, 1);
		T2.print16(3, 1, 2);
		T2.print16(3, 2, 1);
	}

 输出:

 

[1,2,3]标志:6,用时:0
[1,2,3]标志:5,用时:0
[1,2,3]标志:3,用时:0
[1,2,3]标志:4,用时:0
[1,2,3]标志:2,用时:0
[1,2,3]标志:1,用时:0

[1,2,3]标志:0,用时:0
[1,2,3]标志:1,用时:0
[1,2,3]标志:1,用时:0
[1,2,3]标志:2,用时:0
[1,2,3]标志:2,用时:0
[1,2,3]标志:3,用时:0

 

3.

 

/*
	 * 题目:输出9*9口诀。
	 */
	public static void print17() {
		for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print(j + "×" + i + "=" + i * j + "\t");
			}
			System.out.println();
		}
	}

	public static void main(String[] args) {
		T2.print17();
	}

 输出:

 

1×1=1	
1×2=2	2×2=4	
1×3=3	2×3=6	3×3=9	
1×4=4	2×4=8	3×4=12	4×4=16	
1×5=5	2×5=10	3×5=15	4×5=20	5×5=25	
1×6=6	2×6=12	3×6=18	4×6=24	5×6=30	6×6=36	
1×7=7	2×7=14	3×7=21	4×7=28	5×7=35	6×7=42	7×7=49	
1×8=8	2×8=16	3×8=24	4×8=32	5×8=40	6×8=48	7×8=56	8×8=64	
1×9=9	2×9=18	3×9=27	4×9=36	5×9=45	6×9=54	7×9=63	8×9=72	9×9=81	

 

 4.

/*
	 * 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
	 * 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
	 * 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
	 */
	public static void print18() {
		int num = 10;
		System.out.println(getNumber(num));
	}

	private static int getNumber(int n) {
		if (n == 1) {
			return 1;
		} else {
			return (getNumber(n - 1) + 1) * 2;
		}
	}

	/*
	 * 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
	 * 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
	 * 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
	 */
	public static void print19() {
		int num = 10;
		int count = 1;
		num--;
		while (num > 0) {
			count = (count + 1) * 2;
			num--;
		}
		System.out.println(count);
	}

	public static void main(String[] args) {
		T2.print18();
		T2.print19();
	}

 输出:

1534
1534

 

 

你可能感兴趣的:(问题)