首页 全国软件设计大赛java模拟题及答案

全国软件设计大赛java模拟题及答案

举报
开通vip

全国软件设计大赛java模拟题及答案2011 模拟 java 本科 注意: 本套模拟题主要模拟命题形式与考核范围。真实竞赛题的数量、难度可能与此套模拟题有差异。 说明: 本试卷包含两种题型:“代码填空”与“程序设计”。 填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。所填写的代码不多于一条语句(即不能出现分号)。 编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。 1. 代码填空(满分...

全国软件设计大赛java模拟题及答案
2011 模拟 java 本科 注意: 本套模拟 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 主要模拟命题形式与考核范围。真实竞赛题的数量、难度可能与此套模拟题有差异。 说明: 本试卷包含两种题型:“代码填空”与“程序设计”。 填空题 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。所填写的代码不多于一条语句(即不能出现分号)。 编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。 1. 代码填空(满分2分) 在A B C D E F 六人中随机抽取3人中奖,要求中奖人不能重复。请完善以下代码: public class MyTest { public static void main(String[] args) { Vector a = new Vector(); for(char i='A'; i<='F'; i++) a.add("" + i); for(int k=0; k<3; k++) { int d = ____________________________; System.out.println(a.remove(d)); } } } int d = (int) ((6-1-k)* Math.random()); 2. 代码填空(满分3分) 不同进制的数值间的转换是软件开发中很可能会遇到的常规问题。下面的代码演示了如何把键盘输入的3进制数字转换为十进制。试完善之。 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); int n = 0; for(int i=0; i '2') throw new RuntimeException("Format error"); n = ______________________; } System.out.println(n); (int) (n+(c-'0')*Math.pow(3, (s.length()-i-1))); 3. 代码填空(满分4分) 有如下程序,完成的功能为:找出数组中的最大元素。请填写程序的中空白,使程序运行正确。 public class test { public static void main(String[] args) { int array[]={0,34,67,90,21,-9,98,1000,-78}; System.out.println(new test().findMax (array, 0)); } public int findMax(int array[],int index) { if(array==null || array.length==0) { return 0; } int max=array[0]; if(index max_1) max_1 = n_1; if(n_0 > max_0) max_0 = n_0; } return max_1>max_0? max_1 : max_0); } n_1=0; n_0=0; 6. 代码填空(满分9分) 下列代码把16进制表示的串转换为3进制表示的串。试完善之。 例如:x=“5” 则返回:“12” 又例如:x=”F” 则返回:“120” private static int getRealValue(char x) { if(x>='0' && x<='9') return x-'0'; if(x>='a' && x<='f') return x-'a'+10; if(x>='A' && x<='F') return x-'A'+10; return 0; } public static String jin_zhi_16_3(String x) { int n = 0; // 累加真值 for(int i=0; i 0) { if (i 0) { return false; } // 最大值匹配 if (maxVal.compareTo(MIN) < 0) { return false; } String minStr = minVal.compareTo(MIN) > 0 ? minVal.toString() : MIN .toString(); String maxStr = maxVal.compareTo(MAX) < 0 ? maxVal.toString() : MAX .toString(); // 找到最小值与最大值间首部相同的部分 int[] sameCountArray = new int[10]; for (int i = 0; i < SIZE; i++) { char c; if ((c = minStr.charAt(i)) == maxStr.charAt(i)) { sameCountArray[c - '0'] = sameCountArray[c - '0'] + 1; } else { break; } } // 判断如果相同部分有数据大于现在已 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 的位数,返回false for (int i = 0; i <= offset; i++) { if (countArray[i] < sameCountArray[9 - i]) { return false; } } // 如果当前值的总数为SIZE位,那么判断该值是不是需要查找的值 if (countSumArray[offset] == SIZE) { String sumStr = sumArray[offset].toString(); BigInteger sum = ZERO; for (int i = 0; i < sumStr.length(); i++) { sum = sum.add(p(sumStr.charAt(i) - '0')); } return sum.compareTo(sumArray[offset]) == 0; } return true; } /** * 退出循环,打印 * * @return */ private void success() { System.out.println("find a match number:" + sumArray[offset]); } /** * 将浮标指向下一位数 * * @return */ private void next() { offset++; setValue(SIZE - countSumArray[offset - 1]); } /** * * 回退浮标,找到最近的浮标,并减一 * * @return */ private boolean back() { // 回退浮标,找到最近的浮标,并减一 if (countArray[offset] == 0) { while (countArray[offset] == 0) { if (offset > 0) { offset--; } else { return true; } } } if (offset > 0) { setValue(countArray[offset] - 1); return false; } else { return true; } } /** * 测试程序 * * @param startValue * 测试匹配数中包含9的个数 * @param startTime * 程序启动时间 */ private void test(int startValue, long startTime) { // 设置9的个数 offset = 0; setValue(startValue); while (true) { if (checkPersentArray()) {// 检查当前提交数据是否匹配 // 匹配且总数正好为SIZE的位数,那么就是求解的值 if (countSumArray[offset] == SIZE) { success(); } // 总数不为SIZE,且当前值不在第10位(即不等于0) if (offset != 9) { next(); continue; } // 总数不为SIZE,且当前值在第10位。 if (back()) { break; } } else { if (back()) { break; } } } System.out.println(Thread.currentThread() + " End,Spend time " + (System.currentTimeMillis() - startTime) / 1000 + "s"); } /** * 主函数 */ public static void main(String[] args) { final long startTime = System.currentTimeMillis(); int s = MAX.divide(p(9)).intValue(); for (int i = 0; i <= s; i++) { // new Main().test(i, startTime); // 启动十个线程同时运算 final int startValue = i; new Thread(new Runnable() { public void run() { new Main().test(startValue, startTime); } }).start(); } } private static final BigInteger ZERO = new BigInteger("0"); private static final BigInteger MIN; private static final BigInteger MAX; /** * 0-SIZE间的BigInteger */ private static final BigInteger n(int i) { return (BigInteger) ht.get("n_" + i); } /** * 0-9的次方的BigInteger */ private static final BigInteger p(int i) { return (BigInteger) ht.get("p_" + i); } /** * 用于缓存BigInteger数据,并初始化0-SIZE间的BigInteger和0-9的次方的BigInteger */ private static Hashtable ht = new Hashtable(); static { int s = SIZE < 10 ? 10 : SIZE; for (int i = 0; i <= s; i++) { ht.put("n_" + i, new BigInteger(String.valueOf(i))); } for (int i = 0; i <= 10; i++) { ht.put("p_" + i, new BigInteger(String.valueOf(i)).pow(SIZE)); } MIN = n(10).pow(SIZE - 1); MAX = n(10).pow(SIZE).subtract(n(1)); } } 第 1/12 页
本文档为【全国软件设计大赛java模拟题及答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_133616
暂无简介~
格式:doc
大小:85KB
软件:Word
页数:12
分类:互联网
上传时间:2011-12-10
浏览量:33