首页 > 代码库 > 第五届蓝桥杯全国软件设计大赛--2013年校内选拔赛Java题目

第五届蓝桥杯全国软件设计大赛--2013年校内选拔赛Java题目

第五届蓝桥杯全国软件设计大赛

2013年校内选拔赛Java题目

一、考生注意:

(1)【结果填空题】要求参赛选手根据题目描述直接填写结果。求解方式不限。不要求源代码。

把答案存入【考生文件夹】下对应题号的文件中即可。

(2)【代码填空题】要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。所填写的代码不超过一条语句(即中间不能出现分号)。

把填空的答案(仅填空处的答案,不包括题面已存在的代码)存入【考生文件夹】下对应题号的文件中中即可。

(3)【编程题】要求选手设计的程序对于给定的输入能给出正确的输出结果。考生的程序只有能运行出正确结果的时候才有机会得分。注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。

对每个编程题目,要求考生把所有方法写在一个文件中。调试好后,存入与【考生文件夹】下对应题号的文件中中即可。相关的工程文件不要拷入。

二、操作准备:

(1)在“2013Java校内选拔赛文件”下建立【考生文件夹】,名字为“学号+姓名”,例如你的姓名为:李明,学号是2012999001,则你的【考生文件夹】为:2012999001李明。

(2)把“2013Java校内选拔赛文件”下的全部文本文件移动到你的【考生文件夹】中。

 

三、考试内容:

1.【结果填空题】(5分)

问题描述:

1949年的国庆节(10月1日)是星期六。今年(2013)的国庆节是星期二。

那么,从建国到现在,有10次国庆节正好是星期一。分别为哪几年?要求写出分别是哪几年,每一年作为一行。

只要答案,不限手段!可以用windows日历,windows计算器等工具。当然,也可以编程!不用提交源代码!

把答案放到文件t1.txt中即可。

 

2. 【结果填空题】(5分)

问题描述:

625这个数字很特别,625的平方等于390625,刚好其末3位是625本身。除了625,还有其它的3位数有这个特征吗?

请寻找所有这样的2位数和3位数:2位数的平方的末2位是这个数字本身;3位数的平方的末3位是这个数字本身。

输出结果按如下格式输出,要求从小到大,每个找到的数字占一行。比如找到那个625就输出为:

625*626=390625

只要答案,不限手段!当然,也可以编程!不用提交源代码!

把答案放到文件t2.txt中即可。

3.【代码填空题】(5分)

问题描述:三部排序

一般的排序有许多经典算法,如快速排序、希尔排序等。

但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。

比如,对一个整型数组中的数字进行分类排序:

使得负数都靠左端,正数都靠右端,0在中部。注意问题的特点是:负数区域和正数区域内并不要求有序。可以利用这个特点通过1次线性扫描就结束战斗!!

以下的程序实现了该目标。

static void sort(int[] x)

{

   int p = 0;

   int left = 0;

   int right = x.length-1;

   while(p<=right){

       if(x[p]<0){

          int t = x[left];

          x[left] = x[p];

          x[p] = t;

          left++;

          p++;

       }

       else if(x[p]>0){

          int t = x[right];

          x[right] = x[p];

          x[p] = t;

          right--;         

       }

       else{

          _________________________;  //代码填空位置

       }

   }

}

如果给定数组:

25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0

则排序后为:

-3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25

请分析代码逻辑,并推测划线处的代码,把答案放到文件t3.txt中即可。

注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!!

 

4.【代码填空题】(5分)

问题描述:有理数类

   有理数就是可以表示为两个整数的比值的数字。一般情况下,我们用近似的小数表示。但有些时候,不允许出现误差,必须用两个整数来表示一个有理数。

    这时,我们可以建立一个“有理数类”,下面的代码初步实现了这个目标。为了简明,它只提供了加法和乘法运算。

class Rational

{

    private long ra;

    private long rb;

   

    private long gcd(long a, long b){

       if(b==0) return a;

       return gcd(b,a%b);

    }

    public Rational(long a, long b){

       ra = a;

       rb = b;   

       long k = gcd(ra,rb);

       if(k>1){ //需要约分

           ra /= k; 

           rb /= k;

       }

    }

    // 加法

    public Rational add(Rational x){

       return ________________________________________;  //填空位置

    }

    // 乘法

    public Rational mul(Rational x){

       return new Rational(ra*x.ra, rb*x.rb);

    }

    public String toString(){

       if(rb==1) return "" + ra;

       return ra + "/" + rb;

    }

}

 

使用该类的示例:

   Rational a = new Rational(1,3);

   Rational b = new Rational(1,6);

   Rational c = a.add(b);

   System.out.println(a + "+" + b + "=" + c);

请分析代码逻辑,并推测划线处的代码,把答案放到文件t4.txt中即可。

注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!!

 

 

 

5. 问题描述(20分)

Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。

当n比较大时,Fn也非常大,现在我们想知道,Fn除以1000的余数是多少。请编写程序实现。

输入格式

输入一个整数n。

输出格式

输出一行,包含一个整数,表示Fn除以1000的余数。

(注意不用任何多余的输入和输出提示)

样例输入

样例输入

样例输入

样例输入

10

22

100

10000

样例输出

样例输出

样例输出

样例输出

55

711

75

875

 

数据规模与约定:1 <= n <= 10000。

把答案放到文件t5.txt中即可。

 

6. 问题描述(20分)

考虑方程式: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

不同解间的顺序可以不考虑。

把答案放到文件t6.txt中即可。

 

 

7. 问题描述(20分)

  123321是一个非常特殊的数,它从左边读和从右边读是一样的。

   输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

输入格式

  输入一行,包含一个正整数n。

输出格式

按从小到大的顺序输出满足条件的整数,每个整数占一行。

 

样例输入

样例输入

52

50

样例输出

样例输出

899998

 989989

 998899

799997

889988

898898

979979

988889

997799

 

 

数据规模和约定:1<=n<=54。

把答案放到文件t7.txt中即可。

 

8. 问题描述(20分)

请编写一个方法 void fun(int m, int k, int xx[]),该方法的功能是: 将大于整数 m 且紧靠 m 的 k 个素数存入数组 xx 传回。

例如, 若输入17, 5, 则应输出:19, 23, 29, 31, 37。

把答案放到文件t8.txt中即可。

第五届蓝桥杯全国软件设计大赛--2013年校内选拔赛Java题目