代码填空打印版
一、有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止。问剩下第几个孩子。下面的程序以10个孩子为例,模拟了这个过程,请完善之(提示:报数的过程被与之逻辑等价的更容易操作的过程所代替)。 Vector a = new Vector(); for(int i=1; i<=10; i++) {a.add("第" + i + "个孩子"); } for(;;) {if(a.size()==1) break; for(int k=0; k<2; k++) ________________; a.remove(0); } System.out.println(a);
参考答案:a.add(a.remove(0))
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。 二、 下列代码运行结果为: 12345 23456 89
23456789
即把一个串从数字不连续的位置断开。试完善之。 String s = "12345234568923456789"; String t = "1"; for(int i=1; i<s.length(); i++) {if(s.charAt(i)==s.charAt(i-1)+1) {t += s.charAt(i);} else {System.out.println(t); ____________________;} } System.out.println(t); 参考答案:
t = "" + s.charAt(i)
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。
三、猜数字
很多人都玩过这个游戏:甲在心中想好一个数字,乙来猜。每猜一个数字,甲必须告诉他是猜大了,猜小了,还是刚好猜中了。下列的代码模拟了这个过程。其中用户充当甲的角色,计算机充当乙的角色。为了能更快地猜中,计算机使用了二分法。 阅读分析代码,填写缺失的部分。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。 System.out.println("请在心中想好一个数字(1~100),我来猜"); System.out.println("我每猜一个数字,你要告诉我是“猜大了”,“猜小了”,还是“猜中”"); Scanner scan = new Scanner(System.in); int v1 = 1; int v2 = 100; for(;;) { int m = (v1 + v2)/2; System.out.println("我猜是:" + m); System.out.println("1.猜得太大了"); System.out.println("2.猜得太小了"); System.out.println("3.猜中!"); System.out.print("请选择:"); int user = Integer.parseInt(scan.nextLine()); if(user==3) break; if(user==1) _____________; if(user==2) _____________; }
参考答案:
空1:v2 = m-1 (4.5分) 空2:v1 = m+1 (4.5分)
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。 四、反转串
我们把“cba”称为“abc”的反转串。
求一个串的反转串的方法很多。下面就是其中的一种方法,代码十分简洁(甚至有些神秘),请聪明的你通过给出的一点点线索补充缺少的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件下对应题号的“解答.txt”中即可。 public static String reverseString(String x) { if(x==null || x.length()<2) return x; return ____________________ + x.charAt(0); }
参考答案:
reverseString(x.substring(1)) 注意:
reverseString(x.substring(1,x.length())) 是对的
这个绕弯的办法也是对的
reverseString(new StringBuffer(x).deleteCharAt(0).toString())
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。 五、
以下的静态方法实现了:把串s中第一个出现的数字的值返回。 如果找不到数字,返回-1
例如:
s = "abc24us43" 则返回2 s = "82445adb5" 则返回8 s = "ab" 则返回-1
public static int getFirstNum(String s) { if(s==null || s.length()==0) return -1; char c = s.charAt(0); if(c>='0' && c<='9') return ______c-48_______; //填空 return ___getFirstNum(s.substring(1,s.length()) ________________; //填空 }
请分析代码逻辑,并推测划线处的代码。
答案写在 “解答.txt” 文件中
注意:只写划线处应该填的内容,划线前后的内容不要抄写。
填空1(2分): c-'0' 或 c-48
填空2(3分): getFirstNum(s.substring(1)) 或 getFirstNum(s.substring(1,s.length())
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。 六、 以下程序打印出0~9的数字,请补充缺少的代码。
public class MyTest
public static void f(int begin, int end) { _if(begin>end) return_______; System.out.println(begin); f(begin+1, end); } public static void main(String[] args) { f(0,9); } }
参考答案: if(begin>end) return
注意: 类似:end < begin 当然也对
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。 七、 本程序将网站“http://doc.guandang.net”首页的内容复制保存在文件test.html中。写了如下代码,请完善之:
import http://doc.guandang.net.*; import java.io.*; class DaSai{ public static void main(String[] args) throws Exception { URL url=_new URL("http://doc.guandang.net")______; BufferedReader in =____ new BufferedReader(new InputStreamReader(url.openStream())) _______; String inString; File outfile=new File("test.html"); PrintWriter out=new PrintWriter(new FileWriter(outfile)); while ((inString=in.readLine())!=null){ out.println(inString); } in.close(); out.close(); } }
参考答案:
1. new URL("http://doc.guandang.net")
2. new BufferedReader(new InputStreamReader(url.openStream()))
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。 八、 股票风险
股票交易上的投机行为往往十分危险。假设某股票行为十分怪异,每天不是涨停(上涨10%)就是跌停(下跌10%)。假设上涨和下跌的概率均等(都是50%)。再假设交易过程没有任何手续费。某人在开始的时候持有总价值为x的该股股票,那么100个交易日后,他盈利的可能性是多少呢?
以下程序通过计算机模拟了该过程,一般的输出结果在0.3左右。请填写缺失的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。 int N = 10000; int n = 0; for(int i=0; i<N; i++) { double value = 1000.0; for(int k=0; k<100; k++) { if(Math.random() > __0.5___) value = value * 1.1; else value = value * 0.9; } if(__value>1000__) n++; } System.out.println(1.0*n/N);
参考答案: 空1: 0.5
空2: value>1000
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。 九、 基因牛
张教授采用基因干预技术成功培养出一头母牛,三年后,这头母牛每年会生出1头母牛, 生出来的母牛三年后,又可以每年生出一头母牛。如此循环下去,请问张教授n年后有多少头母牛?
以下程序模拟了这个过程,请填写缺失的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
public static class Cow { private int age; public Cow afterYear() { age++; return age > 2 ? new Cow() : __null_____; } public static void showTotalCowNum(int n) { List<Cow> list = new ArrayList<Cow>(); list.add(new Cow()); for (int i = 0; i < n; i++) { int cowCount = list.size(); for (int j = 0; j < cowCount; j++) { Cow cow = list.get(j).afterYear(); // 填空 if (cow != null) { _cow.afterYear() __; list.add(cow); } } } System.out.println(n + "年后,共有:" + list.size()); } }
参考答案:
空1: null (4.5分) 空2: cow.afterYear() (4.5分)
cow.age++ 也是正确的
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。 十、
下面的代码用于判断一个串中的括号是否匹配
所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉
例如:
..(..[..]..).. 是允许的 ..(...[...)....].... 是禁止的
对于 main 方法中的测试用例,应该输出: false true false false
import java.util.*; public class A22 { public static boolean isGoodBracket(String s) { Stack<Character> a = new Stack<Character>(); for(int i=0; i<s.length(); i++) { char c = s.charAt(i); if(c=='(') a.push(')'); if(c=='[') a.push(']'); if(c=='{') a.push('}');//入站 if(c==')' || c==']' || c=='}') { if(_____a.size()==0__) return false; // 填空 if(a.pop() != c) return false; //pop出站 } } if(__a.empty()==false__) return false; // 填空 else{ return true; } } public static void main(String[] args) { System.out.println( isGoodBracket("...(..[.)..].{.(..).}...")); System.out.println( isGoodBracket("...(..[...].(.).){.(..).}...")); System.out.println( isGoodBracket(".....[...].(.).){.(..).}...")); System.out.println( isGoodBracket("...(..[...].(.).){.(..)....")); } }
请分析代码逻辑,并推测划线处的代码。
答案写在 “解答.txt” 文件中
注意:只写划线处应该填的内容,划线前后的内容不要抄写。
填空1(4分): a.empty() 或 a.isEmpty() 或 a.size()==0
填空2(5分): !a.empty() 或 a.empty()==false 或 a.isEmpty()==false 或...
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。 十一、
为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。 但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。
事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。
我们希望寻找到能除尽1至n的的每个数字的最小整数。
不要小看这个数字,它可能十分大,比如n=100, 则该数为: 69720375229712477164533808935312303556800
为此,有必要使用BigInteger来记录这样的大数。
请阅读下面的代码,填写缺失的部分(下划线部分)。
注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
直接写在题面中不能得分。
import java.math.BigInteger; public class My1 { // 求能除尽1~n 每个数字的最小整数 public static BigInteger f(int n) { int[] x = new int[n+1]; for(int i=1; i<=n; i++) x[i] = i; for(int i=2; i<n; i++)
{ for(int j=i+1; j<=n; j++) { if(x[j] % x[i]==0) __ x[j] = x[j]/x[i]___; // 填空1 } } BigInteger m = BigInteger.ONE; for(int i=2; i<=n; i++) { m = m.multiply(_BigInteger.valueOf(x[i])_)); // 填空2 } return m; } public static void main(String[] args) { System.out.println(f(30)); } }
填空1:(4分) x[j] /= x[i] 或者:
x[j] = x[j]/x[i]
填空2:(4分)
BigInteger.valueOf(x[i]) 或者:
BigInteger.valueOf(x[i]
注意:题面中多印了一个右括号,所以两种答案都算正确
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。 十二、 孪生素数
所谓孪生素数指的就是间隔为 2 的相邻素数,它们之间的距离已经近得不能再近了,就象孪生兄弟一样。最小的孪生素数是 (3, 5),在 100 以内的孪生素数还有 (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61) 和 (71, 73),总计有 8 组。但是随着数字的增大,孪生素数的分布变得越来越稀疏,寻找孪生素数也变得越来越困难。那么会不会在超过某个界限之后就再也不存在孪生素数了呢?
孪生素数有无穷多对!这个猜想被称为孪生素数猜想,至今没有被严格证明。但借助于计算
机我们确实可以找到任意大数范围内的所有孪生素数对。
下面的代码求出了正整数n以内(不含n)的所有孪生素数对的个数。比如,当n=100的时候,该方法返回8。试补全缺少的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。 public static boolean isPrime(int x) { for(int i=2; i<=x/2; i++) { if(x%i==0) _____________; } return true; } public static int twinPrimeNum(int n) { int sum = 0; for(int i=2; i<n; i++) { if(isPrime(i) && ___________) sum++; } return sum; }
参考答案:
空1: return false
空2: isPrime(i+2) && i+2<n
注意所有的逻辑等价格式: 例如:
isPrime(i+2) && i<n-2 isPrime(2+i) && i<n-2
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。 十三、
迷宫问题
对于走迷宫,人们提出过很多计算机上的解法。深度优先搜索、广度优先搜索是使用最广的方法。生活中,人们更愿意使用“紧贴墙壁,靠右行走”的简单规则。
下面的代码则采用了另一种不同的解法。它把走迷宫的过程比做“染色过程”。假设入口点被染为红色,它的颜色会“传染”给与它相邻的可走的单元。这个过程不断进行下去,如果
最终出口点被染色,则迷宫有解。
仔细分析代码中的逻辑,填充缺少的部分。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
public class Maze { class Cell { private int row; private int col; private Cell from; public Cell(int row, int col, Cell from) { this.row = row; this.col = col; this.from = from; } } char[][] maze = {{'#','#','#','#','B','#','#','#','#','#','#','#'}, {'#','#','#','#','.','.','.','.','#','#','#','#'}, {'#','#','#','#','.','#','#','#','#','.','.','#'}, {'#','.','.','.','.','#','#','#','#','#','.','#'}, {'#','.','#','#','#','#','#','.','#','#','.','#'}, {'#','.','#','#','#','#','#','.','#','#','.','#'}, {'#','.','#','#','.','.','.','.','.','.','.','#'}, {'#','.','#','#','.','#','#','#','.','#','.','#'}, {'#','.','.','.','.','#','#','#','.','#','.','#'}, {'#','#','.','#','.','#','#','#','.','#','.','A'}, {'#','#','.','#','#','#','.','.','.','#','#','#'}, {'#','#','#','#','#','#','#','#','#','#','#','#'}}; public void show() { for(int i=0; i<maze.length; i++) { for(int j=0; j<maze[i].length; j++) System.out.print(" " + maze[i][j]); System.out.println();
} }
//把与from集合中相邻的可染色节点染色,被染色节点记入 dest //一旦发现出口将被染色,则返回当前的“传播源”节点 public Cell colorCell(Set<Cell> from, Set<Cell> dest) { Iterator<Cell> it = from.iterator(); while(it.hasNext()) { Cell a = it.next(); Cell[] c = new Cell[4]; c[0] = new Cell(a.row-1, a.col, a); c[1] = new Cell(a.row, a.col-1, a); c[2] = new Cell(a.row+1, a.col, a); c[3] = ___________________________; for(int i=0; i<4; i++) { if(c[i].row < 0 || c[i].row >= maze.length) continue; if(c[i].col < 0 || c[i].col >= maze[0].length) continue; char x = maze[c[i].row][c[i].col]; if(x=='B') return a; if(x=='.') { maze[c[i].row][c[i].col] = '?'; ____________________; } } } return null; }
public void resolve() { Set<Cell> set = new HashSet<Cell>(); set.add(new Cell(9,11,null)); for(;;) { Set<Cell> set1 = new HashSet<Cell>(); Cell a = colorCell(set, set1); if(a!=null)
{ System.out.println("找到解!"); while(a!=null) { maze[a.row][a.col] = '+'; ______________; } break; } if(set1.isEmpty()) { System.out.println("无解!"); break; } set = set1; } } public static void main(String[] args) { Maze m = new Maze(); m.show(); m.resolve(); m.show(); } }
参考答案:
空1: new Cell(a.row, a.col+1, a) (2分) 空2: dest.add(c[i]) (8分) 空3: a = a.from (9分)
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。 十四、 许多人都曾经玩过“拍七”游戏。规则是:大家依次从1开始顺序数数,数到含有7或7的倍数的要拍手或其它规定的方式表示越过(比如:7,14,17等都不能数出),下一人继续数下面的数字。违反规则者受罚。下面的程序模拟这个过程,拍7的情况输出“*”,请完善之。 for(int i=1; i<100; i++) { if(i % 7 == 0) printf("*\n");
else if(___________________) printf("*\n"); else printf("%d\n", i); }
参考答案: i/10 == 7 || i%10 == 7
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。 十五、
若干不同的数字,排列组合后能产生多少个平方数? 下面的代码解决了这个问题。 对于:1,6,9
排列后,可产生3个平方数: 169 196 961
请阅读下面的代码,填写缺失的部分(下划线部分)。
注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
直接写在题面中不能得分。
public class My { public static void f(int[] a, int n) { if(n==a.length-1) { int k = 0; for(int i=0; i<a.length; i++) k = _k * 10__ + a[i]; // 填空1 int m = (int)(Math.sqrt(k)+0.5); if(m*m==k) { System.out.println(k); } return; } for(int i=n; i<a.length; i++) {
int t = a[n]; a[n] = a[i]; a[i] = t; f(a, ___n+1__); // 填空2 t = a[n]; a[n] = a[i]; a[i] = t; } } public static void main(String[] args) { int[] a = {1,9,6}; f(a, 0); } }
参考答案 //
// 第一空 6分 // k * 10 或者 // 10 * k //
// 第二空 8分 // n+1 或者 // 1+n
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。
十六、
最近距离
已知平面上的若干点的位置,存入一个List中。现在需要计算所有这些点中,距离最近的两个点间的最小距离。请补全缺失的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
class MyPoint {
private double x; // 横坐标 private double y; // 纵坐标 public MyPoint(double x, double y) { this.x = x; this.y = y; } public static double distance(MyPoint p1, MyPoint p2) { double dx = p1.x - p2.x; double dy = p1.y - p2.y; return Math.sqrt(dx*dx + dy*dy); } /* lst中含有若干个点的坐标 返回其中距离最小的点的距离 */ public static double getMinDistance(List<MyPoint> lst) { if(lst==null || lst.size()<2) return Double.MAX_VALUE;//开始给予无限大作为基准 double r = Double.MAX_VALUE; MyPoint p0 = lst.remove(0); for(int i=0; i<lst.size(); i++) { MyPoint p = lst.get(i); double d = MyPoint.distance(p0,p); if(d<r) __r=d__; } double d2 = __getMinDistance(lst)___; return d2 < r ? d2 : r;//若成立时d2, } }
参考答案:
空1: r = d (2分)
空2: getMinDistance(lst) (5分)
可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。
相关推荐:
- [政务民生]第三章 无约束最优化方法
- [政务民生]泛读教程第三册答案
- [政务民生]魏晋南北朝文学
- [政务民生]幂的运算复习题
- [政务民生]城市环境问题的成因与治理策略_以社会冲突理论为视角
- [政务民生]钢结构行业产业链及竞争分析研究
- [政务民生]新型热塑性弹性体增韧聚丙烯的研究
- [政务民生]中国旅游地理B卷试题及答案
- [政务民生](苏教版)五年级数学上册第三单元测试卷
- [政务民生]不稳定性心绞痛诊断与治疗
- [政务民生]俞氏国际后勤职能部门绩效考核办法
- [政务民生]GB7258-2017新标准考试题含答案
- [政务民生]小学生汉字听写比赛活动方案
- [政务民生]1.3《平抛运动》学案 教科版必修2
- [政务民生]2011香港特别行政区公务员考试复习资料公共基础知识考
- [政务民生]考虑水力条件变化的城市给水管网可靠性分析与研究
- [政务民生]表面活性剂在油田开发和生产中的应用
- [政务民生]ITT内部培训资料-FI端吸泵的介绍
- [政务民生]文明守纪,从我做起学生发言稿
- [政务民生]初中读《聊斋志异》心得体会800字范文
- 2020年专业技术人员继续教育单选
- 初三英语试题 (33)
- 百度地图编辑工具做分析图的json模板
- 高考全国大纲卷:语文考试大纲背诵篇目
- 公司财务计算题
- 振动光纤周界安防系统——一种新型安防
- 安全生产岗位操作规程
- 《现代大学英语听力2》听力原文及答案U
- 滨江区建设工程规划许可证审批程序
- 使用marquee标记实现滚动字幕效果
- 2013年江苏省普通高中学业水平测试历史
- 中国大唐集团公司火力发电机组A级检修
- 微生物学教程第三版(周德庆版)
- 词形变换专项练习100
- 肿瘤放射治疗学最新进展
- 大副批注常用格式
- 物流与供应链管理复习题2011
- 党员干部联系困难群众结对帮扶制度
- 【创新设计】2015高考数学(人教通用,理
- 新视野第三版读写教程 第二册 U3 课后