教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 政务民生 >

代码填空打印版

来源:网络收集 时间:2024-05-08
导读: 一、有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止。问剩下第几个孩子。下面的程序以10个孩子为例,模拟了这个过程,请完善之(提示:报数的过程被与之逻辑等价的更容易操作的过程所代

一、有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分)

可能有多个答案,代入到源程序中,运行程序,输出结果正确则给分。

代码填空打印版.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/1439258.html(转载请注明文章来源)
Copyright © 2020-2021 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)