Java笔试题,经常碰到的题目,有答案时间:2021-07-15 14:43:21/*算法:父子俩的年龄:父亲今年30岁,儿子今年6岁,问多少年后父亲的年龄是儿子年龄的2倍*/ int ba = 30; int er = 6; for (int i = 0; i < 100; i++) { if ((ba + i) == 2 * (er + i)) { System.out.println(i); } } /*算法: 编写程序,将两个各有6个整数的数组,合并成一个由小到大排列的数组,(该数组的长度为12)*/ int[] a = new int[] {1, 2, 4, 12, 32, 10}; int[] b = new int[] {34, 31, 54, 87, 11, 22}; int[] c = new int[12]; for (int i = 0; i < a.length; i++) { c[i] = a[i]; c[i + 6] = b[i]; } Arrays.sort(c); for (int i = 0; i < c.length; i++) { System.out.println(c[i]); } /*一个球从100米高度*落下后,反弹回原来高度的一半。按此规律,到第10次落地时,行程共有多少米?然后将反弹起多高?*/ float hight = 100; int n = 1; float sum = 0; for (n = 0; n < 10; n++) { sum = hight + sum; hight = hight / 2; } System.out.println("第" + n + "次" + "总行程" + sum + "米" + "反弹" + hight + "米"); /*换硬币:把一元人民币换成5分、2分、1分的硬币,有多少种换法? */ int num = 0; for (int i = 1; i <= 20; i++) //全部是2分的话,最多有50个 { for (int j = 1; j <= 50; j++)//全部是5分的话,最多有20个 { for (int k = 1; k <= 100; k++)//全部是1分的话,最多有100个 { if (5 * i + 2 * j + 1 * k == 100) { num = num + 1; } } } } System.out.print(num + "种换法"); /**牛的繁殖问题 :有位科学家曾出了这样一道数学题:有一头母牛,它每年年初要生一头小母牛; * 每头小母牛从第四个年头起,每年年初也要生一头小母牛。按此规律,若无牛死亡,第20年头上共有多少头母牛?*/ int[] cowNumber = new int[21]; cowNumber[0] = 1; for (int currentYear = 1; currentYear <= 20; currentYear++) { if (currentYear < 4) //前3年,只有老母牛繁殖 { cowNumber[currentYear] = cowNumber[currentYear - 1] + 1; } else //老母牛繁殖的小母牛也开始繁殖 { cowNumber[currentYear] = cowNumber[currentYear - 1] + cowNumber[currentYear - 4 + 1]; } System.out.println("第" + currentYear + "年" + cowNumber[currentYear]); } /** 打印出500之内所有能被7或9整除的数*/ int n1 = 0; for (int i = 0; i <= 500; i++) { if ((i % 7 == 0) || (i % 9 == 0)) { System.out.print(i + " "); n1++; System.out.println(); } } System.out.println(n1); /** * 编写一个Java程序 使它随即产生1800到2000之间的年份,打印它是否是一个闰年,闰年是1584年以后的年份,它要能被400整除, * 要能被4整除但是不能被100整除,已知使用Math.random()方法可以产生0到1之间的随即小数. ) */ long year = (Math.round(Math.random() * 200) + 1800); System.out.println(year); if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) { System.out.println(year + " 是 闰 年 ! "); } else { System.out.println(year + " 是 平 年 ! "); } /**编写程序以递归的方式实现1+2+3++n(n=200)的计算.*/ // System.out.print(numbers(200)); //下面是自定义的方法 // public static int numbers(int n) // { // return n <= 1 ? 1 : n + numbers(n - 1); // } /** */ /** 给定一个数,并由键盘输入若干个数,找出与预先给定的数最接近的数, * 并指出它是由键盘输入的第几个数。 */ Scanner input = new Scanner(System.in); System.out.print("Please input numbers: 用半角逗号隔开:"); String str = input.next(); String[] item = str.split(","); int number = 80; int place = 0; int temp = 5000; int x = 0; for (int i = 0; i < item.length; i++) { System.out.println(item[i]); if (Integer.parseInt(item[i]) > number) { x = Integer.parseInt(item[i]) - number; } else { x = number - Integer.parseInt(item[i]); } if (x < temp) { temp = x; place = i; } } System.out.println("最接近的数字是:" + item[place] + ";出现在第" + (place + 1) + "位"); /**使用Java,long.Math类,生成10个0到99之间的随即整数,求出它们中的最小值和最大值*/ int[] num1 = new int[10]; for (int i = 0; i < 10; i++) { num1[i] = (int)(Math.random() * 99); System.out.print(num1[i] + "/n"); } Arrays.sort(num1); System.out.println("最小值:" + num1[1]); System.out.println("最大值:" + num1[9]); /**假设有一条钢材长2000米,每天截取其中的一半,编写一程序求出多少天后,钢材的长度小于5米.*/ double num11 = 2000; int day = 0; for (int i = 0; i < 10000; i++) { num11 = num11 / 2; System.out.println(num11); day++; if (num11 < 5) { break; } } System.out.println("第 " + day + " 天,钢材的长度小于5米!"); /**完全数是指其所有因子(包括1但不包括该数自身)的和等于该数,例如28=1+2++4+7+14,28就是一个完全数. * 编写一个程序求出2到100之间的所有完全数.*/ int m = 0; for (int n11 = 2; n11 <= 100; n11++) { m = 0; for (int i = 1; i < n11; i++) { if (n11 % i == 0) { m += i; if (m == n11) { System.out.println(n11 + "个完全数"); } } } }