《2022年蓝桥杯java习题》由会员分享,可在线阅读,更多相关《2022年蓝桥杯java习题(17页珍藏版)》请在金锄头文库上搜索。
1、黄金分割数0.618 与美学有重要的关系。舞台上报幕员所站的位置大约就是舞台宽度的0.618 处, 墙上的画像一般也挂在房间高度的0.618 处, 甚至股票的波动据说也能找到0.618的影子 . 有趣的是,一些简单的数列中也会包含这个无理数,这很令数学家震惊!1 34 7 11 18 29 47 . 称为 “ 鲁卡斯队列 ” 。它后面的每一个项都是前边两项的和。如果观察前后两项的比值,即:1/3,3/4,4/7,7/11,11/18. 会发现它越来越接近于黄金分割数!你的任务就是计算出从哪一项开始,这个比值四舍五入后已经到达了与0.618034一致的精度。请写出该比值。格式是:分子/分母。比方
2、:29/47 javaview plaincopy1.publicstaticvoid main(String args) 2. 3.double x = 1; 4.double y = 3; 5.double res = x / y * 1000000 ; 6.while ( 618034 != new BigDecimal(String.valueOf(res).setScale(0, BigDecimal.ROUND_HALF_UP).intValue()/ 调用 BigDecimal四舍五入7. 8.double temp = x + y; 9. x = y; 10. y = temp
3、; 11. res = x / y * 1000000 ; 12. 13. System.out.println(int ) x + / + (int ) y); 14. 有一群海盗不多于20 人,在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复.直到开了第4 瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第 4 瓶酒平分喝下后,大家都倒下了。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 17 页等船长醒来, 发现海盗船搁浅了。他在航海日志中写到:“. 昨天, 我正好喝
4、了一瓶.奉劝大家,开船不喝酒,喝酒别开船.”请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。如果有多个可能的答案,请列出所有答案,每个答案占一行。格式是:人数,人数 ,. 例如 ,有一种可能是:20,5,4,2,0 javaview plaincopy1.publicstaticvoid main(String args) 2. 3.double n = 1; 4.for ( int i = 4;i= 20;i+)/total 5. 6.for ( int j = 4;j=i;j+) 7. 8.for ( int k = 3;k=j;k+) 9. 10.for ( int x =
5、2;x= 0& c= 9) return _; / 填空6. return_; / 填空精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 17 页7. 答案: c-0 getFirstNum(s.substring(1) 6.PI 分割圆南北朝时,我国数学家祖冲之首先把圆周率值计算到小数点后六位,比欧洲早了1100年!他采用的是称为“ 割圆法 ” 的算法,实际上已经蕴含着现代微积分的思想。如图【 1.jpg 】所示,圆的内接正六边形周长与圆的周长近似。多边形的边越多,接近的越好!我们从正六边形开始割圆吧。如图【 2.jpg 】所示,从圆心
6、做弦的垂线,可把6 边形分割为12 边形。该 12 边形的边长a的计算方法很容易利用勾股定理给出。之后,再分割为正24 边形, .如此循环会越来越接近圆周。之所以从正六边开始,是因为此时边长与半径相等,便于计算。取半径值为1,开始割圆吧!以下代码描述了割圆过程。程序先输出了标准圆周率值,紧接着输出了不断分割过程中多边形边数和所对应的圆周率逼近值。请分析代码逻辑,并推测划线处的代码。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 17 页【1.jgp 】【2.jpg 】javaview plaincopy1.publicclass B21
7、 2. 3.publicstaticvoid main(String args) 4. 5. System.out.println(标准 + Math.PI); 6.double a = 1; 7.int n = 6; 8.for ( int i= 0; i10; i+) 9. 10.double b = Math.sqrt(1-(a/2)*(a/2); 11. a = Math.sqrt(1-b)*(1-b) + (a/2)*(a/2); 12. n = _; / 填空13. System.out.println(n + + _); / 填空14. 15. 16. 精选学习资料 - - -
8、- - - - - - 名师归纳总结 - - - - - - -第 6 页,共 17 页答案: 2*n a*n/2 12,127,85,66,27,34,15,344,156,344,29,47,. 这是某设备测量到的工程数据。因工程要求,需要找出最大的5 个值。一般的想法是对它排序,输出前5 个。但当数据较多时,这样做很浪费时间。因为对输出数据以外的数据进行排序并非工程要求,即便是要输出的5 个数字,也并不要求按大小顺序,只要找到5 个就可以。以下的代码采用了另外的思路。考虑如果手里已经抓着5 个最大数,再来一个数据怎么办呢?让它和手里的数据比,如果比哪个大, 就抢占它的座位,让那个被挤出来
9、的再自己找位子 ,. 请分析代码逻辑,并推测划线处的代码。javaview plaincopy1.import java.util.*; 2.publicclass B23 3. 4. publicstatic List max5(List lst) 5. 6.if (lst.size()=5) return lst; 7.int a = _ / 填空8. Listb = max5(lst); 9.for (inti=0; it) 13. 14. _; / 填空15. a= t; 16. 17. 18. returnb; 19. 20. publicstatic void main(Strin
10、g args) 21. 22. Listlst = new Vector(); 23. lst.addAll(Arrays.asList(12, 127 , 85, 66, 27, 34, 15, 344, 156 , 344, 29, 47); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 17 页24. System.out.println(max5(lst); 25. 26. 答案: (lst=lst.subList(1, lst.size().get(0); b.set(i, a); 在编写图形界面软件的时候,经常会遇到处理两
11、个矩形的关系。如图【1.jpg 】所示, 矩形的交集指的是:两个矩形重叠区的矩形,当然也可能不存在参看【 2.jpg 】。两个矩形的并集指的是:能包含这两个矩形的最小矩形,它一定是存在的。此题目的要求就是:由用户输入两个矩形的坐标,程序输出它们的交集和并集矩形。矩形坐标的输入格式是输入两个对角点坐标,注意,不保证是哪个对角,也不保证顺序你可以体会一下,在桌面上拖动鼠标拉矩形,4 个方向都可以的。输入数据格式:x1,y1,x2,y2 x1,y1,x2,y2 数据共两行,每行表示一个矩形。每行是两个点的坐标。x 坐标在左, y 坐标在右。坐标系统是:屏幕左上角为(0,0) ,x 坐标水平向右增大;
12、y 坐标垂直向下增大。要求程序输出格式:x1,y1, 长度 ,高度x1,y1, 长度 ,高度也是两行数据,分别表示交集和并集。如果交集不存在,则输出“ 不存在 ”前边两项是左上角的坐标。后边是矩形的长度和高度。例如,用户输入:100,220,300,100 150,150,300,300 则程序输出:150,150,150,70 100,100,200,200 例如,用户输入:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 17 页10,10,20,20 30,30,40,40 则程序输出:不存在10,10,30,30 精选学习资料 -
13、 - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 17 页精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 17 页【图1.jpg 】【图2.jpg 】javaview plaincopy1.publicstaticvoid main(String args) 2. 3. Scanner sc = new Scanner(System.in); 4.5. Rectangle r1 = null; 6. Rectangle r2 = null; 7.while ( true ) 8. 9. r1 =
14、 getMyRectangle(sc.nextLine(); 10. r2 = getMyRectangle(sc.nextLine(); 11.12. Rectangle intersect = r1.intersection(r2); 13.if (intersect.width=0) 14. 15. System.out.println( 不存在交集 ); 16. else17. 18. System.out.println(intersect.x + , + intersect.y + ,19. + intersect.width + ,20. + intersect.height);
15、 21. 22.23. Rectangle union = r1.union(r2); 24.25. System.out.println(union.x + , + union.y + ,26. + union.width + , + union.height); 27.28. 29. 30.31.publicstatic Rectangle getMyRectangle(String s) 32. 33. String ps = s.split(,); 34.int t = new int 4; 35.for ( int i= 0;it2) 精选学习资料 - - - - - - - - -
16、 名师归纳总结 - - - - - - -第 11 页,共 17 页40. 41.int temp = t0; 42. t0=t2; 43. t2 =temp; 44. 45.if (t1t3) 46. 47.int temp = t1; 48. t1=t3; 49. t3 =temp; 50. 51.52.returnnew Rectangle(t0,t1,t2-t0,t3-t1); 53. 9.19 加减得到 110匪警请拨110, 即使欠费也可拨通!为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练!某批警察叔叔正在进行智力训练
17、:1 23 4 5 6 7 8 9 = 110; 请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号可以不填,但不能填入其它符号。之间没有填入符号的数字组合成一个数,例如:12+34+56+7-8+9就是一种合格的填法;123+4+5+67-89是另一个可能的答案。请你利用电脑的优势,帮助警察叔叔快速找到所有答案。每个答案占一行。形如:12+34+56+7-8+9 123+4+5+67-89 . 已知的两个答案可以输出,但不计分。各个答案的前后顺序不重要。javaview plaincopy1.publicstaticvoid main(String args) 2. 精选学习资料
18、- - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 17 页3. func(8, ); 4. 5.6.publicstaticvoid func(int n, String ops) 7. 8.if (n = 0) 9. 10. String res = 1 ; 11.for ( int i = 0; i ops.length(); i+) 12. 13. res += ops.charAt(i) + String.valueOf(i + 2); 14. 15. res = res.replace( , ); 16. ops = ops.replace
19、All( , ); 17.int num = new int 9; 18.int temp = 0; 19.int nlen = 0; 20.for ( int i= 0;ires.length();i+) 21. 22.if (res.charAt(i) = +|res.charAt(i) = -) 23. 24. numnlen = Integer.parseInt( res.substring(temp,i); 25. temp = i+1; 26. nlen+; 27. 28. 29. numnlen = Integer.parseInt( res.substring(temp); 3
20、0.int sum = num0; 31.for ( int i = 0; i =res) 15. 16. pour(a1, b1, c1, res); 17. 18.else19. 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 17 页20. System.out.println(找不到解决方案 ); 21. 22. 23.24.static String allKind = ; 25.publicstaticvoid pour(int a1, int b1, int c1, int res) 26. 27. String kin
21、d = a1 + , + b1 + , + c1; 28. System.out.println(kind); 29.if (allKind.contains(kind) 30. 31. System.out.println(找不到解决方案 ); 32.return; 33. 34. allKind+=+kind+ ; 35.if (a1 = res | b1 = res | c1 = res) 36. 37.return; 38. 39.if (c1 = 0 & b1 != 0) 40. 41. pour(a1, b1 c ? b1 - c : 0, b1 c ? c : b1, res);
22、 42. 43.else44. 45.if (c1 = c) 46. 47. pour(a-a1c?a1+c:a,b1,a-a1c?0:a1+c-a,res); 48. 49.else50. 51.if (a1!=0&b1 != b) 52. 53. pour(a1 b-b1 ? a1 - b +b1: 0, a1 b-b1 ? b : b1+a1, c1,res); 54. 55.else56. 57.if (b1!= 0&c1!=c) 58. pour(a1, b1 c-c1 ? b1 - c+c1 : 0, b1 c-c1 ? c : b1+c1,res); 59.else60. System.out.println( 找不到解决方案); 61. 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 17 页62. 63. 64. 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 17 页