蓝桥杯模拟试题java 和C本科.docx
- 文档编号:4304668
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:13
- 大小:20.23KB
蓝桥杯模拟试题java 和C本科.docx
《蓝桥杯模拟试题java 和C本科.docx》由会员分享,可在线阅读,更多相关《蓝桥杯模拟试题java 和C本科.docx(13页珍藏版)》请在冰豆网上搜索。
蓝桥杯模拟试题java和C本科
2011模拟java本科
注意:
本套模拟题主要模拟命题形式与考核范围。
真实竞赛题的数量、难度可能与此套模拟题有差异。
说明:
本试卷包含两种题型:
“代码填空”与“程序设计”。
填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不多于一条语句(即不能出现分号)。
编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。
注意:
在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
1.代码填空(满分2分)
在ABCDEF六人中随机抽取3人中奖,要求中奖人不能重复。
请完善以下代码:
publicclassMyTest
{
publicstaticvoidmain(String[]args)
{
Vectora=newVector();
for(chari='A';i<='F';i++)a.add(""+i);
for(intk=0;k<3;k++)
{
intd=____________________________;
System.out.println(a.remove(d));
}
}
}
2.代码填空(满分3分)
不同进制的数值间的转换是软件开发中很可能会遇到的常规问题。
下面的代码演示了如何把键盘输入的3进制数字转换为十进制。
试完善之。
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
Strings=br.readLine();
intn=0;
for(inti=0;i { charc=s.charAt(i); if(c<'0'||c>'2')thrownewRuntimeException("Formaterror"); n=______________________; } System.out.println(n); 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]; if(index { max=____________________ } if(max returnmax; } } 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){ System.out.println("恭喜中了: mp3"); }elseif(i<47){ System.out.println("恭喜中了: 洗衣粉"); }else{ System.out.println("恭喜中了: KFC优惠券"); } } 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;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; } returnmax_1>max_0? max_1: max_0); } 6.代码填空(满分9分) 下列代码把16进制表示的串转换为3进制表示的串。 试完善之。 例如: x=“5” 则返回: “12” 又例如: x=”F” 则返回: “120” privatestaticintgetRealValue(charx) { if(x>='0'&&x<='9')returnx-'0'; if(x>='a'&&x<='f')returnx-'a'+10; if(x>='A'&&x<='F')returnx-'A'+10; return0; } publicstaticStringjin_zhi_16_3(Stringx) { intn=0;//累加真值 for(inti=0;i { n=_________+getRealValue(x.charAt(i));//填空 } Stringt=""; for(;;) { if(n==0)break; t=(n%3)+t; _____________;//填空 } returnt; } 7.代码设计(满分5分) 625这个数字很特别,625的平方等于390625,刚好其末3位是625本身。 除了625,还有其它的3位数有这个特征吗? 请编写程序,寻找所有这样的3位数: 它的平方的末3位是这个数字本身。 输出结果中,从小到大,每个找到的数字占一行。 比如那个625就输出为: 625 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 不同解间的顺序可以不考虑。 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) 程序输出该整数的所有划分。 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的每个取值,可能有多个数字满足条件。 程序的任务是: 求N=21时,所有满足条件的花朵数。 注意: 这个整数有21位,它的各个位数字的21次方之和正好等于这个数本身。 如果满足条件的数字不只有一个,请从小到大输出所有符合条件的数字,每个数字占一行。 因为这个数字很大,请注意解法时间上的可行性。 要求程序在3分钟内运行完毕。 2011模拟c语言本科 注意: 本套模拟题主要模拟命题形式与考核范围。 真实竞赛题的数量、难度可能与此套模拟题有差异。 说明: 本试卷包含两种题型: “代码填空”与“程序设计”。 填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。 所填写的代码不多于一条语句(即不能出现分号)。 编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。 注意: 在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。 选手的程序必须是通用的,不能只对试卷中给定的数据有效。 11.代码填空(满分2分) 下列代码,把一个2位整数交换十位与个位的位置。 请填写缺失的代码。 例如: 当x=95时,返回59。 intswitch_num(intx) { inta=x/10; intb=x%10; return__________________; } 12.代码填空(满分3分) 下列代码把一个二进制的串转换为整数。 请填写缺少的语句; char*p="1010110001100"; intn=0; for(inti=0;i { n=__________________; } printf("%d\n",n); 13.代码填空(满分3分) 假设a,b,c是3个互不相等的整数。 下列代码取出它们中居中的数值,记录在m中。 其中的swap()函数可以交换两个变量的值。 请完善代码。 if(a>b)swap(&a,&b); if(b>c)swap(&b,&c); ______________________; intm=b; 14.代码填空(满分5分) 计算3个A,2个B可以组成多少种排列的问题(如: AAABB,AABBA)是《组合数学》的研究领域。 但有些情况下,也可以利用计算机计算速度快的特点通过巧妙的推理来解决问题。 下列的程序计算了m个A,n个B可以组合成多少个不同排列的问题。 请完善它。 intf(intm,intn) { if(m==0||n==0)return1; return_______________________; } 15.代码填空(满分6分) 此段代码的意图是把一个缓冲区中的整数重新排列,使得所有负数都在正数的左边。 请分析其工作流程,补充缺失的代码。 voidreorder(int*pData,intlen) { if(pData==NULL||len==0)return; int*pBegin=pData; int*pEnd=____________; while(pBegin { if(*pBegin<0) { pBegin++; __________; } if(*pEnd>=0) { pEnd--; ___________; } inttemp=*pBegin; *pBegin=*pEnd; *pEnd=temp; } } intmain(intargc,char**argv) { inta[]={1,2,3,-5,-4,5,9,-8,-1}; reorder(a,9); for(inti=0;i<9;i++)printf("%d",a[i]); printf("\n"); return0; } 16.代码填空(满分9分) 给定一个字符串,其含有的字符各不相同。 程序输出该字符串的所有排列(全排列)情形。 例如: 给定字符串“xyz”,则程序输出: xyz xzy yxz yzx zyx zxy 试完善程序中空缺的部分。 voidf(char*str,intlen,intn) { inti; chartmp; char*p=(char*)malloc(__________); if(n==len-1){ printf("%s\n",str); }else{ for(i=n;i strcpy(p,str); tmp=*(str+n); *(str+n)=*(str+i); *(str+i)=tmp; _______________; strcpy(str,p); } } free(p); } intmain(intargc,char**argv) { charstr[]="xyz"; f(str,3,0); printf("\n"); return0; } 17.代码设计(满分5分) 625这个数字很特别,625的平方等于390625,刚好其末3位是625本身。 除了625,还有其它的3位数有这个特征吗? 请编写程序,寻找所有这样的3位数: 它的平方的末3位是这个数字本身。 输出结果中,从小到大,每个找到的数字占一行。 比如那个625就输出为: 625 18.代码设计(满分11分) 某游戏规则中,甲乙双方每个回合的战斗总是有一方胜利,一方失败。 游戏规定: 失败的一方要把自己的体力值的1/4加给胜利的一方。 例如: 如果双方体力值当前都是4,则经过一轮战斗后,双方的体力值会变为: 5,3。 现在已知: 双方开始时的体力值甲: 1000,乙: 2000。 假设战斗中,甲乙获胜的概率都是50% 求解: 双方经过4个回合的战斗,体力值之差小于1000的理论概率。 19.代码设计(满分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) 程序输出该整数的所有划分。 20.代码设计(满分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的每个取值,可能有多个数字满足条件。 程序的任务是: 求N=21时,所有满足条件的花朵数。 注意: 这个整数有21位,它的各个位数字的21次方之和正好等于这个数本身。 如果满足条件的数字不只有一个,请从小到大输出所有符合条件的数字,每个数字占一行。 因为这个数字很大,请注意解法时间上的可行性。 要求程序在3分钟内运行完毕。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 蓝桥杯模拟试题java 和C本科 蓝桥杯 模拟 试题 java 本科