蓝桥杯模拟试题java本科组试题及答案Word格式.docx

上传人:b****5 文档编号:20494641 上传时间:2023-01-23 格式:DOCX 页数:12 大小:19.89KB
下载 相关 举报
蓝桥杯模拟试题java本科组试题及答案Word格式.docx_第1页
第1页 / 共12页
蓝桥杯模拟试题java本科组试题及答案Word格式.docx_第2页
第2页 / 共12页
蓝桥杯模拟试题java本科组试题及答案Word格式.docx_第3页
第3页 / 共12页
蓝桥杯模拟试题java本科组试题及答案Word格式.docx_第4页
第4页 / 共12页
蓝桥杯模拟试题java本科组试题及答案Word格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

蓝桥杯模拟试题java本科组试题及答案Word格式.docx

《蓝桥杯模拟试题java本科组试题及答案Word格式.docx》由会员分享,可在线阅读,更多相关《蓝桥杯模拟试题java本科组试题及答案Word格式.docx(12页珍藏版)》请在冰豆网上搜索。

蓝桥杯模拟试题java本科组试题及答案Word格式.docx

}

}

}

newRandom().nextInt(6-k)//(int)(Math.random()*(6-k))

2.代码填空(满分3分)

不同进制的数值间的转换是软件开发中很可能会遇到的常规问题。

下面的代码演示了如何把键盘输入的3进制数字转换为十进制。

试完善之。

BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));

Strings=br.readLine();

intn=0;

for(inti=0;

s.length();

i++)

charc=s.charAt(i);

if(c<

'

0'

||c>

'

2'

)thrownewRuntimeException("

Formaterror"

);

n=______________________;

System.out.println(n);

3*n+c-'

3.代码填空(满分4分)

有如下程序,完成的功能为:

找出数组中的最大元素。

请填写程序的中空白,使程序运行正确。

publicclasstest

publicstaticvoidmain(String[]args){

intarray[]={0,34,67,90,21,-9,98,1000,-78};

System.out.println(newtest().findMax(array,0));

publicintfindMax(intarray[],intindex)

if(array==null||array.length==0)

return0;

intmax=array[0];

while(index<

array.length-1)

max=____________________

if(max<

array[index])max=array[index];

returnmax;

max>

array[++index]?

max:

array[index]

4.代码填空(满分5分)

电视台开宝箱节目:

打进电话的人可以开启一个宝箱。

箱子中有一件礼品。

礼品是iphone的机率为1/12;

是mp3的机率为1/5;

是洗衣粉的机率为1/2;

剩余是KFC优惠券。

每次打进电话,宝箱会重置。

以下程序模拟了该抽奖过程。

请填写缺失的部分。

publicstaticvoidmain(String[]args)

inti=(int)(Math.random()*_____________);

if(i<

5){

System.out.println("

恭喜中了:

iphone手机"

}elseif(i<

17){

mp3"

}elseif(i<

47){

洗衣粉"

}else{

KFC优惠券"

60

5.代码填空(满分6分)

下列代码求出一个二进制串中连续的1或连续的0出现的最大次数。

请填缺失代码。

例如:

s=“101100111100011”

则返回:

4

又例如:

s=”0111100000”

5

publicstaticintgetMaxContinuity(Strings)

intmax_1=0;

intmax_0=0;

intn_1=0;

//当前1连续的次数

intn_0=0;

//当前0连续的次数

for(inti=0;

if(s.charAt(i)=='

{

n_0++;

________;

}

else

n_1++;

_________;

if(n_1>

max_1)max_1=n_1;

if(n_0>

max_0)max_0=n_0;

returnmax_1>

max_0?

max_1:

max_0);

n_1=0n_0=0

6.代码填空(满分9分)

下列代码把16进制表示的串转换为3进制表示的串。

x=“5”

“12”

x=”F”

“120”

privatestaticintgetRealValue(charx)

if(x>

&

&

x<

9'

)returnx-'

a'

f'

+10;

return0;

publicstaticStringjin_zhi_16_3(Stringx)

intn=0;

//累加真值

x.length();

n=_________+getRealValue(x.charAt(i));

//填空

Stringt="

for(;

if(n==0)break;

t=(n%3)+t;

_____________;

returnt;

16*nn/=3

7.代码设计(满分5分)

625这个数字很特别,625的平方等于390625,刚好其末3位是625本身。

除了625,还有其它的3位数有这个特征吗?

请编写程序,寻找所有这样的3位数:

它的平方的末3位是这个数字本身。

输出结果中,从小到大,每个找到的数字占一行。

比如那个625就输出为:

625

publicstaticvoidmain(String[]args){

inttemp=0;

for(inti=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的不同的正整数解。

把abcd按从小到大排列,用逗号分隔,每个解占用1行。

比如,刚才的解输出为:

1,9,10,12

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

int[]arr=newint[31];

for(inti=1;

=30;

arr[i]=(int)i*i*i;

for(inta=1;

a<

=27;

++a){

for(intb=a+1;

b<

=28;

++b){

for(intc=b+1;

c<

=29;

++c){

for(intd=c+1;

d<

++d){

if((arr[a]+arr[d])==(arr[b]+arr[c]))

System.out.println(a+"

"

+b+"

+c+"

+d);

}

}

}

9.代码设计(满分18分)

整数的分划问题。

如,对于正整数n=6,可以分划为:

6

5+1

4+2,4+1+1

3+3,3+2+1,3+1+1+1

2+2+2,2+2+1+1,2+1+1+1+1

1+1+1+1+1+1+1

现在的问题是,对于给定的正整数n,编写算法打印所有划分。

用户从键盘输入n(范围1~10)

程序输出该整数的所有划分。

importjava.util.*;

publicclassTest{

privatestaticLinkedList<

String>

str=newLinkedList<

();

publicstaticvoidmain(String[]args){

intinput=10;

Test.integerDivide(input,input);

publicstaticvoidintegerDivide(intlimit,intmax){

if(1==max){

str.add(String.valueOf

(1));

formatResult(str);

str.removeLast();

return;

if(0==max){

for(inti=limit;

i>

=1;

--i){

if(i<

=max){

str.add(String.valueOf(i));

integerDivide(i,max-i);

str.removeLast();

publicstaticvoidformatResult(LinkedList<

s){

System.out.print(s.getFirst());

for(inti=1;

i<

s.size();

i++)

System.out.print("

+"

+s.get(i));

System.out.println();

10.代码设计(满分20分)

一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数。

当N=3时,153就满足条件,因为1^3+5^3+3^3=153,这样的数字也被称为水仙花数(其中,“^”表示乘方,5^3表示5的3次方,也就是立方)。

当N=4时,1634满足条件,因为1^4+6^4+3^4+4^4=1634。

当N=5时,92727满足条件。

实际上,对N的每个取值,可能有多个数字满足条件。

449177399146038697307

128468643043731391252

程序的任务是:

求N=21时,所有满足条件的花朵数。

这个整数有21位,它的各个位数字的21次方之和正好等于这个数本身。

如果满足条件的数字不只有一个,请从小到大输出所有符合条件的数字,每个数字占一行。

因为这个数字很大,请注意解法时间上的可行性。

要求程序在3分钟内运行完毕。

importjava.math.BigInteger;

importjava.util.Arrays;

publicclassTest{

privatestaticintnum=21;

privatestaticBigInteger[]table=newBigInteger[10];

privatestaticBigInteger[]store=newBigInteger[1000];

privatestaticintnTotal=0;

privatestaticint[]nums;

for(inti=0;

10;

i++)

table[i]=BigInteger.valueOf(i).pow(num);

//longtime=System.currentTimeMillis();

for(inti=0;

nums=newint[num];

for(intj=0;

j<

10;

j++)

find(nums,0,j);

if(0==nTotal)

System.out.println("

没有符合条件的数!

else{

Arrays.sort(store,0,nTotal);

for(inti=0;

nTotal;

System.out.println(store[i]);

//time=System.currentTimeMillis()-time;

//System.out.println(time/1000.0+"

s"

publicstaticvoidfind(int[]nums,intlevel,intnum){

nums[level]=num;

if(level==nums.length-1){

BigIntegerbig=sum(nums);

//当level为20时,表示nums数组下标为20即21位数字满后求和;

int[]temp=getArray(big);

//将得到的21位数和转化为整形数组;

并返回;

if(check(nums,temp))//测试是否是21位,并将数组复制给nums数组;

store[nTotal]=big;

//保存big数;

nTotal++;

return;

}

for(inti=num;

i++)//递归;

查找21位数字符合条件的数;

find(nums,level+1,i);

publicstaticbooleancheck(int[]a1,int[]a2){

if(a1.length!

=a2.length)

returnfalse;

Arrays.sort(a2);

returnArrays.equals(a1,a2);

/**

*449177399146038697307

128468643043731391252

*得到nums数组的数做为table下标的数的和。

*@paramnums

*@return

*/

publicstaticBigIntegersum(int[]nums){

BigIntegersum=BigInteger.ZERO;

nums.length;

sum=sum.add(table[nums[i]]);

returnsum;

*将BigInteger转化为int[]类型数据;

*@parambig

publicstaticint[]getArray(BigIntegerbig){

Strings=String.valueOf(big);

char[]ch=s.toCharArray();

int[]res=newint[ch.length];

ch.length;

res[i]=ch[i]-'

returnres;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 可爱清新

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1