第三届蓝桥杯预赛真题.docx
- 文档编号:17783476
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:46
- 大小:123.45KB
第三届蓝桥杯预赛真题.docx
《第三届蓝桥杯预赛真题.docx》由会员分享,可在线阅读,更多相关《第三届蓝桥杯预赛真题.docx(46页珍藏版)》请在冰点文库上搜索。
第三届蓝桥杯预赛真题
专科预赛
1.土地测量
造成高房价的原因有许多,比如土地出让价格。
既然地价高,土地的面积必须仔细计算。
遗憾的是,有些地块的形状不规则,比如是如图【1.jpg】中所示的五边形。
一般需要把它划分为多个三角形来计算。
已知三边求三角形的面积需要用海伦定理,参见【2.jpg】
各条边长数据如下:
AB=52.1
BC=57.2
CD=43.5
DE=51.9
EA=33.4
EB=68.2
EC=71.9
根据这些数据求五边形地块的面积。
四舍五入到小数后两位。
只写结果,不要源代码!
答案写在“解答.txt”中,不要写在这里!
【1.jpg】
【2.jpg】
2.猜生日
今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。
休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:
“我说个题目,看你们谁先猜出来!
”
“把我出生的年月日连起来拼成一个8位数(月、日不足两位前补0)正好可以被今天的年、月、日整除!
”
他想了想,又补充到:
“再给个提示,我是6月出生的。
”
根据这些信息,请你帮小明算一下,他叔叔的出生年月日。
答案写在“解答.txt”中,不要写在这里!
格式是年月日连成的8位数。
例如,如果是1948年6月12日,就写:
19480612
3.放麦子
你一定听说过这个故事。
国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:
请在第1个棋盘格放1粒麦子,在第2个棋盘格放2粒麦子,在第3个棋盘格放4粒麦子,在第4个棋盘格放8粒麦子,......后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有64格)。
国王以为他只是想要一袋麦子而已,哈哈大笑。
当时的条件下无法准确计算,但估算结果令人吃惊:
即使全世界都铺满麦子也不够用!
请你借助计算机准确地计算,到底需要多少粒麦子。
答案写在“解答.txt”中,不要写在这里!
4.比酒量
有一群海盗(不多于20人),在船上比拼酒量。
过程如下:
打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。
再打开一瓶酒平分,又有倒下的,再次重复......直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。
当第4瓶酒平分喝下后,大家都倒下了。
等船长醒来,发现海盗船搁浅了。
他在航海日志中写到:
“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......”
请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。
如果有多个可能的答案,请列出所有答案,每个答案占一行。
格式是:
人数,人数,...
例如,有一种可能是:
20,5,4,2,0
答案写在“解答.txt”中,不要写在这里!
5.第一个数字
以下的静态方法实现了:
把串s中第一个出现的数字的值返回。
如果找不到数字,返回-1
例如:
s="abc24us43"则返回2
s="82445adb5"则返回8
s="ab"则返回-1
publicstaticintgetFirstNum(Strings)
{
if(s==null||s.length()==0)return-1;
charc=s.charAt(0);
if(c>='0'&&c<='9')return_____________;//填空
returngetFirstNum(______________);//填空
}
请分析代码逻辑,并推测划线处的代码。
答案写在“解答.txt”文件中
注意:
只写划线处应该填的内容,划线前后的内容不要抄写。
6.扑克牌移动
下面代码模拟了一套扑克牌(初始排序A~K,共13张)的操作过程。
操作过程是:
手里拿着这套扑克牌,从前面拿一张放在后面,再从前面拿一张放桌子上,再从前面拿一张放在后面,....
如此循环操作,直到剩下最后一张牌也放在桌子上。
下面代码的目的就是为了求出最后桌上的牌的顺序。
初始的排列如果是A,2,3...K,则最后桌上的顺序为:
[2,4,6,8,10,Q,A,5,9,K,7,3,J]
importjava.util.*;
publicclassA23
{
publicstaticListmoveCard(Listsrc)
{
if(src==null)returnnull;
Listdst=newVector();
for(;;)
{
if(__________________)break;//填空
src.add(src.remove(0));
dst.add(__________________);//填空
}
returndst;
}
publicstaticvoidmain(String[]args)
{
Lista=newVector();
a.addAll(Arrays.asList("A","2","3","4","5","6","7","8","9","10","J","Q","K"));
System.out.println(moveCard(a));
}
}
请分析代码逻辑,并推测划线处的代码。
答案写在“解答.txt”文件中
注意:
只写划线处应该填的内容,划线前后的内容不要抄写。
7.括号问题
下面的代码用于判断一个串中的括号是否匹配
所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉
例如:
..(..[..]..)..是允许的
..(...[...)....]....是禁止的
对于main方法中的测试用例,应该输出:
false
true
false
false
importjava.util.*;
publicclassA22
{
publicstaticbooleanisGoodBracket(Strings)
{
Stack
for(inti=0;i { charc=s.charAt(i); if(c=='(')a.push(')'); if(c=='[')a.push(']'); if(c=='{')a.push('}'); if(c==')'||c==']'||c=='}') { if(____________________)returnfalse;//填空 if(a.pop()! =c)returnfalse; } } if(___________________)returnfalse;//填空 returntrue; } publicstaticvoidmain(String[]args) { System.out.println(isGoodBracket("...(..[.)..].{.(..).}...")); System.out.println(isGoodBracket("...(..[...].(.).){.(..).}...")); System.out.println(isGoodBracket(".....[...].(.).){.(..).}...")); System.out.println(isGoodBracket("...(..[...].(.).){.(..)....")); } } 请分析代码逻辑,并推测划线处的代码。 答案写在“解答.txt”文件中 注意: 只写划线处应该填的内容,划线前后的内容不要抄写。 8.手机尾号 30年的改革开放,给中国带来了翻天覆地的变化。 2011全年中国手机产量约为11.72亿部。 手机已经成为百姓的基本日用品! 给手机选个好听又好记的号码可能是许多人的心愿。 但号源有限,只能辅以有偿选号的方法了。 这个程序的目的就是: 根据给定的手机尾号(4位),按照一定的规则来打分。 其规则如下: 1.如果出现连号,不管升序还是降序,都加5分。 例如: 5678,4321都满足加分标准。 2.前三个数字相同,或后三个数字相同,都加3分。 例如: 4888,6665,7777都满足加分的标准。 注意: 7777因为满足这条标准两次,所以这条规则给它加了6分。 3.符合AABB或者ABAB模式的加1分。 例如: 2255,3939,7777都符合这个模式,所以都被加分。 注意: 7777因为满足这条标准两次,所以这条标准给它加了2分。 4.含有: 6,8,9中任何一个数字,每出现一次加1分。 例如4326,6875,9918都符合加分标准。 其中,6875被加2分;9918被加3分。 尾号最终得分就是每条标准的加分总和! 要求程序从标准输入接收数据,在标准输出上输出结果。 输入格式为: 第一行是一个整数n(<100),表示下边有多少输入行,接下来是n行4位一组的数据,就是等待计算加分的手机尾号。 输出格式为: n行整数。 例如,输入: 14 3045 0211 2345 6543 7777 8888 7878 7788 6688 2424 2244 9918 6789 8866 则输出: 0 0 5 6 8 12 3 3 5 1 1 3 8 5 注意: 请仔细调试! 您的程序只有能运行出正确结果的时候才有机会得分! 在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。 请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。 相关的工程文件不要拷入。 请不要使用package语句。 源程序中只能出现JDK1.5中允许的语法或调用。 不能使用1.6或更高版本。 9.密码发生器 在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼: 如果为了好记用生日吧,容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或弄丢了... 这个程序的任务就是把一串拼音字母转换为6位数字(密码)。 我们可以使用任何好记的拼音串(比如名字,王喜明,就写: wangximing)作为输入,程序输出6位数字。 变换的过程如下: 第一步.把字符串6个一组折叠起来,比如wangximing则变为: wangxi ming 第二步.把所有垂直在同一个位置的字符的ascii码值相加,得出6个数字,如上面的例子,则得出: 228202220206120105 第三步.再把每个数字“缩位”处理: 就是把每个位的数字相加,得出的数字如果不是一位数字,就再缩位,直到变成一位数字为止。 例如: 228=>2+2+8=12=>1+2=3 上面的数字缩位后变为: 344836,这就是程序最终的输出结果! 要求程序从标准输入接收数据,在标准输出上输出结果。 输入格式为: 第一行是一个整数n(<100),表示下边有多少输入行,接下来是n行字符串,就是等待变换的字符串。 输出格式为: n行变换后的6位密码。 例如,输入: 5 zhangfeng wangximing jiujingfazi woaibeijingtiananmen haohaoxuexi 则输出: 772243 344836 297332 716652 875843 注意: 请仔细调试! 您的程序只有能运行出正确结果的时候才有机会得分! 在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。 请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。 相关的工程文件不要拷入。 请不要使用package语句。 源程序中只能出现JDK1.5中允许的语法或调用。 不能使用1.6或更高版本。 10.趣味算式 匪警请拨110,即使手机欠费也可拨通! 为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练! 某批警察叔叔正在进行智力训练: 123456789=110; 请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号(可以不填,但不能填入其它符号)。 之间没有填入符号的数字组合成一个数,例如: 12+34+56+7-8+9就是一种合格的填法;123+4+5+67-89是另一个可能的答案。 请你利用计算机的优势,帮助警察叔叔快速找到所有答案。 每个答案占一行。 形如: 12+34+56+7-8+9 123+4+5+67-89 ...... 已知的两个答案可以输出,但不计分。 各个答案的前后顺序不重要。 注意: 请仔细调试! 您的程序只有能运行出正确结果的时候才有机会得分! 请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。 相关的工程文件不要拷入。 请不要使用package语句。 源程序中只能出现JDK1.5中允许的语法或调用。 不能使用1.6或更高版本。 11.卖鸡蛋(C++) 大数学家欧拉在集市上遇到了本村的两个农妇,每人跨着个空篮子。 她们和欧拉打招呼说两人刚刚卖完了所有的鸡蛋。 欧拉随便问: “卖了多少鸡蛋呢? ” 不料一个说: “我们两人自己卖自己的,一共卖了150个鸡蛋,虽然我们卖的鸡蛋有多有少,但刚好得了同样的钱数。 你猜猜看! ” 欧拉猜不出。 另一个补充道: “如果我按她那样的价格卖,可以得到32元;如果她按我的价格卖,可以得到24.5元”。 欧拉想了想,说出了正确答案。 我们不是数学家,懒得列出公式来分析。 但计算机可以“暴力破解”,就是把所有可能情况都试验一遍,撞上为止! 请写出每人鸡蛋的数目(顺序不限),用逗号隔开。 答案写在“解答.txt”中,不要写在这里! 12.古堡算式(C++) 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE*? =EDCBA 他对华生说: “ABCDE应该代表不同的数字,问号也代表某个数字! ” 华生: “我猜也是! ” 于是,两人沉默了好久,还是没有算出合适的结果来。 请你利用计算机的优势,找到破解的答案。 把ABCDE所代表的数字写出来。 答案写在“解答.txt”中,不要写在这里! 13.巧排扑克牌 小明刚上小学,学会了第一个扑克牌“魔术”,到处给人表演。 魔术的内容是这样的: 他手里握着一叠扑克牌: A,2,....J,Q,K一共13张。 他先自己精心设计它们的顺序,然后正面朝下拿着,开始表演。 只见他先从最下面拿一张放到最上面,再从最下面拿一张翻开放桌子上,是A;然后再从最下面拿一张放到最上面,再从最下面拿一张翻开放桌子上,是2;......如此循环直到手中只有一张牌,翻开放桌子上,刚好是K。 这时,桌上牌的顺序是: A,2,3,4,5,6,7,8,9,10,J,Q,K 请你计算一下,小明最开始的时候手里牌的顺序是怎样的。 把结果写出来,逗号分割,小明“魔术”开始时,最下面的那张牌输出为第一个数据。 考场不提供扑克牌,你只能用计算机模拟了,撕碎草稿纸模拟扑克属于作弊行为! 另外,你有没有把录像倒着放过? 很有趣的! 回去试试! 14.干支纪年 在我国古代和近代,一直采用干支法纪年。 它采用10天干和12地支配合,一个循环周期为60年。 10天干是: 甲,乙,丙,丁,戊,己,庚,辛,壬,癸 12地支是: 子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥 如果某年是甲子,下一年就是乙丑,再下是丙寅,......癸酉,甲戌,乙亥,丙子,.... 总之天干、地址都是循环使用,两两配对。 今年(2012)是壬辰年,1911年辛亥革命 下面的代码根据公历年份输出相应的干支法纪年。 已知最近的甲子年是1984年。 voidf(intyear) { char*x[]={"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"}; char*y[]={"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"}; intn=year-1984; while(n<0)n+=60; printf("%s%s\n",x[_______],y[_______]); } intmain(intargc,char*argv[]) { f(1911); f(1970); f(2012); return0; } 请分析代码逻辑,并推测划线处的代码。 答案写在“解答.txt”文件中 注意: 只写划线处应该填的内容,划线前后的内容不要抄写。 15.身份证 如果让你设计个程序,用什么变量保存身份证号码呢? 长整数可以吗? 不可以! 因为有人的身份证最后一位是"X" 实际上,除了最后一位的X,不会出现其它字母! 身份证号码18位=17位+校验码 校验码的计算过程: 例如: 身份证前17位=ABCDEFGHIJKLMNOPQ A~Q每位数字乘以权值求和(每位数字和它对应的“权”相乘后累加) 17位对应的权值分别是: 7910584216379105842 求出的总和再对11求模 然后按下表映射: 余数012345678910 校验码: 10X98765432 下面的代码实现了校验过程,输入串为身份证前17位,打印出校验码。 charverifyCode(char*s) { staticintweight[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; staticcharmap[]={'1','0','X','9','8','7','6','5','4','3','2'}; intsum=0; for(inti=0;i<17;i++) { sum+=(______________)*weight[i];//填空 } returnmap[____________];//填空 } 请分析代码逻辑,并推测划线处的代码。 答案写在“解答.txt”文件中 注意: 只写划线处应该填的内容,划线前后的内容不要抄写。 16.转方阵 对一个方阵转置,就是把原来的行号变列号,原来的列号变行号 例如,如下的方阵: 1234 5678 9101112 13141516 转置后变为: 15913 261014 371115 481216 但,如果是对该方阵顺时针旋转(不是转置),却是如下结果: 13951 141062 151173 161284 下面的代码实现的功能就是要把一个方阵顺时针旋转。 voidrotate(int*x,intrank) { int*y=(int*)malloc(___________________);//填空 for(inti=0;i { y[_________________________]=x[i];//填空 } for(i=0;i { x[i]=y[i]; } free(y); } intmain(intargc,char*argv[]) { intx[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; intrank=4; rotate(&x[0][0],rank); for(inti=0;i { for(intj=0;j { printf("%4d",x[i][j]); } printf("\n"); } return0; } 请分析代码逻辑,并推测划线处的代码。 答案写在“解答.txt”文件中 注意: 只写划线处应该填的内容,划线前后的内容不要抄写。 17.罗马数字 古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了。 之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因,当时的宗教禁止在数字中出现0的概念! 罗马数字的表示主要依赖以下几个基本符号: I1 V5 X10 L50 C100 D500 M1000 这里,我们只介绍一下1000以内的数字的表示法。 单个符号重复多少次,就表示多少倍。 最多重复3次。 比如: CCC表示300XX表示20,但150并不用LLL表示,这个规则仅适用于IXCM。 如果相邻级别的大单位在右,小单位在左,表示大单位中扣除小单位。 比如: IX表示9IV表示4XL表示40更多的示例参见下表,你找到规律了吗? I,1 II,2 III,3 IV,4 V,5 VI,6 VII,7 VIII,8 IX,9 X,10 XI,11 XII,12 XIII,13 XIV,14 XV,15 XVI,16 XVII,17 XVIII,18 XIX,19 XX,20 XXI,21 XXII,22 XXIX,29 XXX,30 XXXIV,34 XXXV,35 XXXIX,39 XL,40 L,50 LI,51 LV,55 LX,60 LXV,65 LXXX,80 XC,90 XCIII,93 XCV,95 XCVIII,98 XCIX,99 C,100 CC,200 CCC,300 CD,400 D,500 DC,600 DCC,700 DCCC,800 CM,900 CMXCIX,999 本题目的要求是: 请编写程序,由用户输入若干个罗马数字串,程序输出对应的十进制表示。 输入格式是: 第一行是整数n,表示接下来有n个罗马数字(n<100)。 以后每行一个罗马数字。 罗马数字大小不超过999。 要求程序输出n行,就是罗马数字对应的十进制数据。 例如,用户输入: 3 LXXX XCIII DCCII 则程序应该输出: 80 93 702 注意: 请仔细调试! 您的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 届蓝桥杯 预赛