蓝桥杯模拟试题java本科组试题及复习资料
- 格式:doc
- 大小:45.50 KB
- 文档页数:18
第四届全国蓝桥杯软件设计大赛java软件开发本科B组题目及答案2013/05/26 0 1.世纪末的星期 曾有邪教称1999年12月31日是世界末日。
当然该谣言已经不攻自破。
还有人称今后的某个世纪末的12月31日,如果是星期一则会....有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!!于是,“谣言制造商”又修改为星期日......1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?请回答该年份(只写这个4位整数,不要写12月31等多余信息) 参考代码: import java.util.Calendar;import java.util.Date;public class 世纪末的星期{public static void main(String[] args){for(int i=1999;;i+=100){Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date(i-1900,11,31));if(calendar.get(Calendar.DAY_OF_WEEK)-1==0){System.out.println(i);return;}}}} 标题: 马虎的算式小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。
有一次,老师出的题目是:36 x 495 = ?他却给抄成了:396 x 45 = ?但结果却很戏剧性,他的答案竟然是对的!!因为36 * 495 = 396 * 45 = 17820类这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)能满足形如:ab * cde = adb * ce 这样的算式一共有多少种呢?请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。
第六届蓝桥杯大赛个人赛省赛(软件类)Java 大学B组试题三角形面积如图1所示。
图中的所有小方格面积都是1。
那么,图中的三角形面积应该是多少呢?请填写三角形的面积。
不要填写任何多余内容或说明性文字。
立方变自身观察下面的现象,某个数字的立方,按位累加仍然等于自身。
1^3 = 18^3 = 512 5+1+2=817^3 = 4913 4+9+1+3=17...请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?请填写该数字,不要填写任何多余的内容或说明性的文字。
三羊献瑞观察下面的加法算式:祥瑞生辉+ 三羊献瑞-------------------三羊生瑞气(如果有对齐问题,可以参看【图1.jpg】)其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
循环节长度两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位。
下面的方法,可以求出循环节的长度。
请仔细阅读代码,并填写划线部分缺少的代码。
public static int f(int n, int m){n = n % m;V ector v = new V ector();for(;;){v.add(n);n *= 10;n = n % m;if(n==0) return 0;if(v.indexOf(n)>=0)_______System.out.println(v.indexOf(n))__________________________ ; //填空}}注意,只能填写缺少的部分,不要重复抄写已有代码。
不要填写任何多余的文字。
九数组分数1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法?下面的程序实现了该功能,请填写划线部分缺失的代码。
蓝桥杯java模拟赛试题及答案蓝桥杯Java模拟赛试题及答案一、选择题(每题2分,共20分)1. Java中,下列哪个关键字用于定义类?A. classB. interfaceC. enumD. struct答案:A2. 在Java中,哪个关键字用于定义一个方法?A. functionB. methodC. procedureD. action答案:B3. 下列哪个是Java中的合法标识符?A. 2variableB. variable2C. variable#2D. variable!答案:B4. Java中,哪个关键字用于实现接口?A. implementsB. extendsC. includesD. contains答案:A5. 在Java中,哪个关键字用于定义一个包?A. packageB. groupC. bundleD. container答案:A6. Java中,下列哪个是正确的数组声明方式?A. int[] array;B. array int[];C. int array[];D. array[] int;答案:A7. 在Java中,哪个关键字用于定义一个构造方法?A. constructorB. initializerC. setupD. method答案:D8. Java中,哪个关键字用于实现多态?A. overrideB. extendsC. implementsD. abstract答案:A9. 下列哪个是Java中的引用数据类型?A. intB. charC. StringD. boolean答案:C10. 在Java中,哪个关键字用于抛出异常?A. throwB. throwsC. exceptionD. error答案:B二、简答题(每题10分,共20分)1. 简述Java中异常处理的机制。
答案:Java中的异常处理机制主要通过try、catch、finally和throw关键字来实现。
蓝桥杯java历年真题及答案整理(参考网络资料整理出来)1.字符排序算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。
如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。
package Question1_9;import ;import ;public class Question1 {public static long count=0;private void fullPermutation(Vector<Character>sourse, Vector<Character> result) {if(sourse.size()==0){for (int i = 0; i < result.size(); i++) {;}"\n");count++;return;}for (int i = 0; i < sourse.size(); i++) {Vector<Character>tsourse=new Vector<Character>(sourse);Vector<Character>tresult=new Vector<Character>(result);tresult.add(sourse.elementAt(i));tsourse.remove(i);new Question1().fullPermutation(tsourse, tresult);}}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();Vector<Character> sourse=new Vector<Character>();Vector<Character> result=new Vector<Character>();for (int i = 0; i < n; i++) {sourse.add((char)('A'+i));}new Question1().fullPermutation(sourse, result);;}}方法二:import ;import ;import ;import ;import ;import ;public class Demo03 {// 去掉重复元素,放入lispublic static void removeDuplicate(String s,Set<Character> lis){for(char x:s.toCharArray()){lis.add(x);}}// 为方便操作将sets 转lispublic static void convert(List<Character> lis,Set<Character> sets){Iterator<Character> iter = sets.iterator();while(iter.hasNext()){lis.add(iter.next());}}// 检测符合条件的元素组合public static void check(Set<Character> sets){List<Character> lis = new ArrayList<Character>();convert(lis,sets); // 为方便操作将sets 转lisStringBuffer sb = new StringBuffer();for(int i=0;i<lis.size()-2;i++){for(int j=i+1;j+1<lis.size();j++){ // 向后添加两位,所以j+1<lis.size() for(int k=j+1;k<lis.size();k++){sb.append(lis.get(i));sb.append(lis.get(j));sb.append(lis.get(k));; // 输出组合sb.setLength(0); // 清空}}}}public static void main(String[] args){Scanner scan = new Scanner(System.in);"输入串(不大于30个字符)。
大学生蓝桥杯试题及答案一、选择题(每题2分,共20分)1. 在计算机科学中,通常用什么来表示一个算法的效率?A. 时间复杂度B. 空间复杂度C. 算法的可读性D. 算法的可维护性答案:A2. 下列哪种数据结构在插入和删除操作时不需要移动其他元素?A. 链表B. 数组C. 栈D. 队列答案:A3. 以下哪个选项是面向对象编程的三个基本特征?A. 封装、继承、多态B. 抽象、封装、继承C. 继承、封装、多态D. 封装、继承、抽象答案:A4. 在HTML中,用于定义最重要的标题的标签是什么?A. <h1>B. <h6>C. <title>D. <header>答案:A5. 在数据库管理系统中,用于从数据库中检索数据的SQL语句是?A. INSERTB. UPDATEC. DELETED. SELECT答案:D6. 在Java中,用于定义一个类的方法的关键字是什么?A. classB. methodC. functionD. public答案:D7. 在C语言中,用于声明一个变量为静态存储的关键字是什么?A. staticB. externC. registerD. auto答案:A8. 在Python中,用于定义一个函数的关键字是什么?A. defB. functionC. methodD. class答案:A9. 在操作系统中,用于管理进程的调度和资源分配的组件是什么?A. 文件系统B. 内存管理C. 进程管理器D. 设备驱动程序答案:C10. 以下哪个协议是用于在互联网上发送电子邮件的?A. HTTPB. FTPC. SMTPD. TCP答案:C二、填空题(每题2分,共20分)1. 在计算机科学中,________是用来衡量算法在最坏情况下执行时间的量度。
答案:时间复杂度2. 在数据结构中,________是一种允许在任意位置插入和删除数据的线性数据结构。
蓝桥杯本科java试题及答案蓝桥杯本科Java试题及答案一、选择题(每题2分,共10分)1. 在Java中,以下哪个关键字用于定义类?A. classB. functionC. interfaceD. struct答案:A2. 下列哪个是Java中的合法标识符?A. 2classB. class@2C. _classD. class-class答案:C3. Java中的哪个类提供了一种计算时间和日期的方法?A. DateB. TimeC. CalendarD. Clock答案:C4. 在Java中,以下哪个是正确的条件表达式?A. if (x = 5)B. if (x == 5)C. if (x : 5)D. if (x / 5)答案:B5. Java中的异常处理机制是通过哪两个关键字实现的?A. try-catchB. if-elseC. switch-caseD. for-loop答案:A二、填空题(每题3分,共15分)1. Java中的所有类都是继承自ng.________类。
答案:Object2. 在Java中,________关键字用于实现方法的多态。
答案:override3. Java中的集合框架主要分为两大类:________和________。
答案:List、Set4. Java中的线程同步机制是通过________关键字实现的。
答案:synchronized5. Java中,要实现网络通信,可以使用________类。
答案:Socket三、简答题(共20分)1. 请简述Java中接口和抽象类的区别。
(10分)答案:接口定义了一组可供实现的抽象方法,它不包含任何实现细节,一个类可以实现多个接口。
抽象类可以包含抽象方法和具体方法,它提供了一个通用的模板,一个类只能继承一个抽象类。
接口主要用于定义一个或多个类必须遵守的规则,而抽象类则更侧重于代码的共享和重用。
2. 请解释Java中垃圾回收机制的作用及其工作原理。
第四届“蓝桥杯”全国软件专业人才设计与创业大赛校内选拔赛试题(Java组)第一部分:准备工作:1、在D:盘中建立一个以自己“学号+姓名”命名的考生文件夹。
如:学号:123456,姓名:张三,则考生文件夹为:123456张三2、答题时:(1)填空题的答案全部写在一个记事本(.txt)文件中,文件名为“tk_姓名的首字母”。
如:姓名:张三,则文件名为“tk_zs.txt”(2)编程题,每个小题一个源文件,每道题的源程序文件名为:“姓名的首字母+题号”。
如:姓名:张三,第1小题,源程序文件名为“zs1.java”3、答题结束时,请把填空题答案文件和所有的源程序文件复制到您的考生文件夹中,再把考生文件夹复制到F:\LQXB4中。
第二部分:试题一、填空题:(第空5分,共50分)1、素数问题输入一个正整数,判断它是否为素数。
素数就是该数只能被1和它本身整除,除1之外的正整数。
#include <stdio.h>#include <math.h> /* 程序中调用平方根函数sqrt,需包含math.h */void main( ){int number,i,k;printf("Please enter a positive integer:");scanf("%d",&number);k=(int)sqrt(number);for(i=2;【1】______________;i++)if(number%i==0) break;/* 如果number能被某个i整除,则number不是素数,提前结束循环 *//*若number是素数,i>k时for循环才结束,若number不是素数,i<=k时,就提前结束循环。
*/if(【2】_______________)printf("%d is a prime number.\n",number);elseprintf("%d isn't a prime number.\n",number);}运行情况1:Please enter a positive integer:77 is a prime number.运行情况2:Please enter a positive integer:2020 isn’t a prime number.2、下面程序段的执行结果是【3】______________3、圆周率我国古代数学家对圆周率方面的研究工作,成绩是突出的。
试题一:公式求值问题描述输入n, m, k,输出下面公式的值。
其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数。
组合数的计算公式如下。
输入格式输入的第一行包含一个整数n;第二行包含一个整数m,第三行包含一个整数k。
输出格式计算上面公式的值,由于答案非常大,请输出这个值除以999101的余数。
样例输入313样例输出162样例输入201010样例输出359316数据规模和约定对于10%的数据,n≤10,k≤3;对于20%的数据,n≤20,k≤3;对于30%的数据,n≤1000,k≤5;对于40%的数据,n≤10^7,k≤10;对于60%的数据,n≤10^15,k ≤100;对于70%的数据,n≤10^100,k≤200;对于80%的数据,n≤10^500,k ≤500;对于100%的数据,n在十进制下不超过1000位,即1≤n<10^1000,1≤k≤1000,同时0≤m≤n,k≤n。
提示999101是一个质数;当n位数比较多时,绝大多数情况下答案都是0,但评测的时候会选取一些答案不是0的数据;通过推导,可以将原式变为一个只含2^(n-i)的项和C(n,m)项的公式,然后分别求这两类公式的值,均有快速方法。
最终将这些项组合起来得到答案。
1.import java.math.BigInteger;2.import java.util.Scanner;3.public class Main4.{5.public static BigInteger lucas(BigInteger n,BigInteger m,BigInteger p){6.if(m.equals(BigInteger.ZERO)) return BigInteger.ONE;7.return BigInteger.valueOf(f(n.mod(p).longValue(),m.mod(p).longValue())).multiply(lucas(n.divide(p),m.divide(p),p)).mod(p);8.}9.10.11.public static long f(long n,long m){12.if(m>n) return 1;13.if(n==m|| m==0) return 1;14.if(m>n-m) m=n-m;15.long tmpi=1,tmpn=1,s1=1,s2=1,ans=1;16.for (int i = 1; i<=m; i++) {17.tmpi=i;18.tmpn=n-i+1;19.s1=s1*tmpi%999101;20.s2=s2*tmpn%999101;21.}22.ans = s2*pow1(s1,999099)%999101;23.return ans%999101;25.public static long pow1(long x,long n) {26.if(x==1) return 1;27.if (n==0)28.return 1;29.else {30.while ((n & 1)==0) {31.n>>=1;32.x=(x *x)%999101;33.}34.}35.long result = x%999101;36.n>>=1;37.while (n!=0) {38.x=(x *x)%999101;;39.if ((n & 1)!=0)40.result =result*x%999101;41.n>>=1;42.}43.return result;44.}45.public static void main(String[] args) {46.Scanner sc = new Scanner(System.in);47.BigInteger n = new BigInteger(sc.nextLine());48.BigInteger m = new BigInteger(sc.nextLine());49.int k = Integer.parseInt(sc.nextLine());50.long start = System.currentTimeMillis();51.BigInteger md = new BigInteger("999101");52.long Cnm=lucas(n, m,md).longValue()%999101;53.long sum = 0;54.if(Cnm!=0){55.int[][] a = new int[k][k];56.int h = 1;57.for (int i = 0; i < k; i++) {58.for (int j = 0; j < k; j++) {59.if (j >= h)60.a[i][j] =0;61.else {62.if (j == 0 || j == h - 1)63.a[i][j] = 1;64.else {65.a[i][j] = (a[i - 1][j - 1]*(h - j)+a[i - 1][j])%999101;66.}67.}69.h++;70.}71.long m1 = 1,n1 =1;72.long x=n.subtract(new BigInteger(k+"")).mod(md.subtract(BigInteger.ONE)).longValue();73.long n3 = pow1(2,x);74.for (int i = k - 1; i >= 0; i--) {75.n1=n3*pow1(2,i)%999101;76.m1 = m1*(n.subtract(new BigInteger((k - 1 - i) + "")).mod(md).longValue())%999101;77.sum = (sum+m1*a[k - 1][i]*n1)%999101;78.}79.sum = sum*Cnm%999101;80.}81.System.out.println(sum);82.long end = System.currentTimeMillis();83.}84.85.86.}试题二:九宫重排如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。
2011 模拟java 本科注意:本套模拟题主要模拟命题形式与考核范围。
真实竞赛题的数量、难度可能与此套模拟题有差异。
说明:本试卷包含两种题型:“代码填空”与“程序设计”。
填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不多于一条语句(即不能出现分号)。
编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。
注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
1.代码填空(满分2分)在A B C D E F 六人中随机抽取3人中奖,要求中奖人不能重复。
请完善以下代码:public class MyTest{public static void main(String[] args){Vector a = new Vector();for(char i='A'; i<='F'; i++) a.add("" +i);for(int k=0; k<3; k++){int d = ____________________________;System.out.println(a.remove(d));}}}new Random().nextInt(6-k) //(int)(Math.random()*(6-k))2.代码填空(满分3分)不同进制的数值间的转换是软件开发中很可能会遇到的常规问题。
下面的代码演示了如何把键盘输入的3进制数字转换为十进制。
试完善之。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String s = br.readLine();int n = 0;for(int i=0; i<s.length(); i++){char c = s.charAt(i);if(c<'0' || c > '2') throw newRuntimeException("Format error");n = ______________________;}System.out.println(n);3*n+c-'0'3.代码填空(满分4分)有如下程序,完成的功能为:找出数组中的最大元素。
请填写程序的中空白,使程序运行正确。
public class test{public static void main(String[] args) { intarray[]={0,34,67,90,21,-9,98,1000,-78};System.out.println(new test().findMax (array, 0));}public int findMax(int array[],int index) {if(array==null || array.length==0){return 0;}int max=array[0];while(index<array.length-1){max=____________________}if(max<array[index]) max= array[index];return max;}}max>array[++index]?max:array[index]4.代码填空(满分5分)电视台开宝箱节目:打进电话的人可以开启一个宝箱。
箱子中有一件礼品。
礼品是iphone的机率为1/12;是mp3 的机率为1/5;是洗衣粉的机率为1/2;剩余是KFC优惠券。
每次打进电话,宝箱会重置。
以下程序模拟了该抽奖过程。
请填写缺失的部分。
public static void main(String[] args){int i = (int) (Math.random() * _____________);if (i < 5) {System.out.println("恭喜中了:iphone手机");}else if (i < 17) {System.out.println("恭喜中了:mp3");} else if (i < 47) {System.out.println("恭喜中了:洗衣粉");} else {System.out.println("恭喜中了:KFC优惠券");}}605.代码填空(满分6分)下列代码求出一个二进制串中连续的1或连续的0出现的最大次数。
请填缺失代码。
例如:s = “1011”则返回:4又例如:s=”0111100000”则返回:5public static int getMaxContinuity(String s){int max_1 = 0;int max_0 = 0;int n_1 = 0; // 当前1连续的次数int n_0 = 0; // 当前0连续的次数for(int i=0; i<s.length(); i++) {if(s.charAt(i)=='0'){n_0++;________;}else{n_1++;_________;}if(n_1 > max_1) max_1 = n_1;if(n_0 > max_0) max_0 = n_0;}return max_1>max_0? max_1 : max_0);}n_1=0 n_0=06.代码填空(满分9分)下列代码把16进制表示的串转换为3进制表示的串。
试完善之。
例如:x=“5”则返回:“12”又例如:x=”F”则返回:“120”private static int getRealValue(char x){if(x>='0' && x<='9') return x-'0';if(x>='a' && x<='f') return x-'a'+10;if(x>='A' && x<='F') return x-'A'+10;return 0;}public static String jin_zhi_16_3(String x){int n = 0; // 累加真值for(int i=0; i<x.length(); i++){n = _________ +getRealValue(x.charAt(i)); // 填空}String t = "";for(;;){if(n==0) break;t = (n % 3) + t;_____________; // 填空}return t;}16*n n/=37.代码设计(满分5分)625这个数字很特别,625的平方等于390625,刚好其末3位是625本身。
除了625,还有其它的3位数有这个特征吗?请编写程序,寻找所有这样的3位数:它的平方的末3位是这个数字本身。
输出结果中,从小到大,每个找到的数字占一行。
比如那个625就输出为:625public static void main(String[] args) { int temp = 0;for(int i = 100; i <= 999; ++i){temp = i*i;temp %= 1000;if(temp == i)System.out.println(i);}}8.代码设计(满分11分)考虑方程式:a^3 + b^3 = c^3 + d^3其中:“^”表示乘方。
a、b、c、d是互不相同的小于30的正整数。
这个方程有很多解。
比如:a = 1,b=12,c=9,d=10 就是一个解。
因为:1的立方加12的立方等于1729,而9的立方加10的立方也等于1729。
当然,a=12,b=1,c=9,d=10 显然也是解。
如果不计abcd交换次序的情况,这算同一个解。
你的任务是:找到所有小于30的不同的正整数解。
把a b c d 按从小到大排列,用逗号分隔,每个解占用1行。
比如,刚才的解输出为:1,9,10,12不同解间的顺序可以不考虑。
public static void main(String[] args) {int []arr = new int[31];for(int i = 1; i <= 30; ++i){arr[i] = (int)i*i*i;}for(int a = 1 ; a <= 27; ++a){for(int b = a+1 ; b <= 28; ++b){for(int c = b+1 ; c <= 29; ++c){for(int d = c+1 ; d <= 30; ++d){if((arr[a] + arr[d])==(arr[b] +arr[c]))System.out.println(a + "," + b + "," + c + "," + d);}}}}}9.代码设计(满分18分)整数的分划问题。
如,对于正整数n=6,可以分划为:65+14+2, 4+1+13+3, 3+2+1, 3+1+1+12+2+2, 2+2+1+1, 2+1+1+1+11+1+1+1+1+1+1现在的问题是,对于给定的正整数n,编写算法打印所有划分。
用户从键盘输入n (范围1~10)程序输出该整数的所有划分。
import java.util.*;public class Test {private static LinkedList<String> str=newLinkedList<String>();public static void main(String[] args){ int input = 10;Test.integerDivide(input, input);}public static void integerDivide(int limit, int max){if(1 == max) {str.add(String.valueOf(1));formatResult(str);str.removeLast();return;}if(0 == max) {formatResult(str);return;}for(int i = limit ; i >= 1; --i){if(i <= max){str.add(String.valueOf(i));integerDivide(i, max-i);str.removeLast();}}}public static voidformatResult(LinkedList<String> s){System.out.print(s.getFirst());for(int i=1;i<s.size();i++)System.out.print("+"+s.get(i));System.out.println();}}10.代码设计(满分20分)一个N位的十进制正整数,如果它的每个位上的数字的N 次方的和等于这个数本身,则称其为花朵数。