蓝桥杯java模拟试题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Arrays.sort(a); int t1=0,t2=0; for(int i=0;i<a.length;i++) { t1=10*t1+a[i]-'0'; t2=10*t2+a[a.length-i-1]-'0'; } return t2-t1; } public static int getIndex(int[] arr,int t) { for(int i=0;i<t;i++) { if(arr[t]==arr[i]) return i; } return -1; } public static void main(String[] args) { BitSet b=new BitSet(100001); for(int k=0;k<100001;k++) { b.set(k); } for(int i=10000;i<100000;i++) { if(b.get(i)) { int[] a=new int[10000]; int j=0; a[j]=i; int temp=getNext(a[j]); if(b.get(temp)) { while(temp!=0) { j++; a[j]=temp; if((temp=getIndex(a,j))>=0) { System.out.print("["); for(;temp<j-1;temp++) { System.out.print(a[temp]+",");
f(1,n,1); print(store, n); } } 9.程序设计(满分 9 分) 从键盘输入一个日期,格式为 yyyy-M-d 要求计算该日期与 1949 年 10 月 1 日距离多少天 例如: 用户输入了:1949-10-2 程序输出:1 用户输入了:1949-11-1 程序输出:31 import java.io.*; import java.util.Scanner; public class MyTest { public static int getDays(int year,int month,int day) { int temp[][]={{31,28,31,30,31,30,31,31,30,31,30 ,31},{31,29,31,30,31,30,31,31,30,31,30,31}} ; year=((year%4==0&&year%100!=0)||year%400==0 )?1:0; for(int i=0;i<month-1;i++) day+=temp[year][i]; return day; } public static int getDays(int year) { return ((year%4==0&&year%100!=0)||year%400==0)?366 :365; } public static void main(String[] args) throws IOException { Scanner br=new Scanner(System.in); String str=br.nextLine().trim(); int n=str.indexOf('-'); int m=str.lastIndexOf('-'); int year=Integer.parseInt(str.substring(0,n)); int month=Integer.parseInt(str.substring(n+1,m) ); int day=Integer.parseInt(str.substring(m+1));
int sum=0; if(year<1949) { for(;year<1949;year++) { sum+=getDays(year); } sum+=getDays(1949,10,1); sum-=getDays(year,month,day); } else if(year==1949) { sum=Math.abs(getDays(year,month,day)-getD ays(1949,10,1)); } else { for(int i=1949;i<year;i++) { sum+=getDays(year); } sum+=getDays(year,month,day); sum-=getDays(1949,10,1); } System.out.println(sum); } } 10.程序设计(满分 20 分) 任意一个 5 位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432, 一个最小的数 23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足 5 位,则前边补 0)。如此往复,数字会落入某个循环圈(称为数字黑洞)。 比如,刚才的数字会落入:[82962, 75933, 63954, 61974] 这个循环圈。 请编写程序,找到 5 位数所有可能的循环圈,并输出,每个循环圈占 1 行。 其中 5 位数全都相同 则循环圈为[0],这个可以不考虑。循环圈的输出格式仿照: [82962, 75933, 63954, 61974] 其中数字的先后顺序可以不考虑。 import java.util.*; public class MyTest { public static int getNext(int num) { String str=String.valueOf(num); str+="00000"; char a[]=str.substring(0,5).toCharArray();
1331 14641 1 5 10 10 5 1 下列的程序给出了计算第 m 层的第 n 个系数的计算方法,试完善之(m,n 都从 0 算起)。 public static int f(int m, int n) { if(m==0) return 1; if(n==0 || n==m) return 1; return __________________________; } f(m-1, n-1)+f(m-1, n) 7.代码填空(满分 4 分) 下面的代码将数组中的元素的位置颠倒过来: 比如:原来的元素是 [1,2,3] 则颠倒后变为:[3,2,1] public static void reverse(int[] arrs) { for (int i = 0, j = arrs.length - 1; i <_________ ; i++, j--) { int temp = arrs[i]; arrs[i] = arrs[j]; arrs[j] = temp; } } j 8.程序设计(满分 15 分) 从键盘输入一个整数(1~20) 则以该数字为矩阵的大小,把 1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如ຫໍສະໝຸດ Baidu 输入数字 2,则程序输出: 12 43 输入数字 3,则程序输出: 123 894 765 输入数字 4,则程序输出: 1234 12 13 14 5 11 16 15 6 10 9 8 7 import java.io.*; import java.util.Scanner; public class MyTest
蓝桥杯 java 模拟试题
本试卷包含两种题型:“代码填空”与“程序设计”。 填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、 完整。所填写的代码不多于一条语句(即不能出现分号)。 编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。注意:在评卷时使用的 输入数据与试卷中给出的实例数据可能是不同的。选手的程序必须是通用的,不能只对试卷 中给定的数据有效。 1.代码填空(满分 3 分) 以下程序打印出 0~9 的数字,请补充缺少的代码。 public class MyTest { public static void f(int begin, int end) { __________________; System.out.println(begin); f(begin+1, end); } public static void main(String[] args) { f(0,9); } } if(begin>end) return 2.代码填空(满分 4 分) 如果要把两个整型变量 a、 b 的值交换,一般要采用一个中间变量做过渡,但也可以在不借助任 何其它变量的情况下完成。试填写缺 第 1/19 页 失的代码。 a = a ^ b; b = _________; a = _________; a^b a^b 3.代码填空(满分 3 分) 许多人都曾经玩过“拍七”游戏。规则是:大家依次从 1 开始顺序数数,数到含有 7 或 7 的倍数 的要拍手或其它规定的方式表示越过(比如:7,14,17,71 等都不能数出),下一人继续数下面的数 字。违反规则者受罚。下面的程序模拟这个过程,拍 7 的情况输出“*”,请完善之。 for(int i=1; i<100; i++) { if(i % 7 == 0) System.out.println("*"); else if(___________________) System.out.println("*"); else
System.out.println(i); } (i-7)%10==0||i/10==7 下面的静态方法的目的是求出某个日期是该年度的第几天。试完 善之。 如果传入:year=1980,month=1, day=1 则返回 1 如果传入:year=1980,month=2, day=1 则返回 32 public static int getDayOfYear(int year, int month, int day) { int [][]days=_____________________; int flag =(year%4==0 && year%100!=0) || year%400 == 0 ? 1 : 0; int sum = day ; for(int i=0;i<month;i++) { sum += days[flag][i]; } return sum; } {{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31 ,29,31,30,31,30,31,31,30,31,30,31}} 下列方法的目的是,找出 1~n 之间所有的平方数。试补全缺失的代码。 当 n=10 时,输出结果是: 149 当 n=100 时,输出结果是: 1 4 9 16 25 36 49 64 81 public static void showSqure(int n) { for(int i=0; i<n; i++) { for(int j=1; j<=i; j++) { if(i==_____________) System.out.print(i + " "); } } System.out.println(); } j*j (a+b)的 n 次幂的展开式中各项的系数很有规律,对于 n=2,3,4 时分别是:1 2 1,1 3 3 1,1 4 6 4 1。 这些系数构成了著名的杨辉三角形: 1 11 121
{ private static int[][] store=new int[101][101]; public static void f(int row,int length,int start) { int i; for(i=0;i<length;i++) { store[row][row+i]=start; start++; } for(i=1;i<length;i++) { store[row+i][row+length-1]=start; start++; } for(i=length-2;i>=0;i--) { store[row+length-1][row+i]=start; start++; } for(i=length-2;i>0;i--) { store[row+i][row]=start; start++; } if(length==1||length==2) return; f(row+1, length-2, start); } public static void print(int[][] store,int n) { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) System.out.printf("%4d",store[i][j]); System.out.println(); } } public static void main(String[] args) throws IOException { Scanner br=new Scanner(System.in); String str=br.nextLine(); int n=Integer.parseInt(str);
相关文档
最新文档