算法第四版习题答案.doc

上传人:h**** 文档编号:801480 上传时间:2018-11-01 格式:DOC 页数:25 大小:176.50KB
下载 相关 举报
算法第四版习题答案.doc_第1页
第1页 / 共25页
算法第四版习题答案.doc_第2页
第2页 / 共25页
算法第四版习题答案.doc_第3页
第3页 / 共25页
算法第四版习题答案.doc_第4页
第4页 / 共25页
算法第四版习题答案.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、1.1.1 给出以下表达式的值:a. ( 0 + 15 ) / 2b. 2.0e-6 * 100000000.1c. true a=b=c=0;StdOut.println(“Please enter three numbers“);a =StdIn.readInt();b=StdIn.readInt();c=StdIn.readInt();if(equals(a,b,c)=1)StdOut.print(“equal“);elseStdOut.print(“not equal“);public static int equals(int a ,int b , int c)if(a=belser

2、eturn 0;1.1.4 下列语句各有什么问题(如果有的话)?a. if (a b) then c = 0;b. if a b c = 0; c. if (a b) c = 0;d. if (a b) c = 0 else b = 0;答案:a. if (a b) c = 0; b. if (a b) c = 0; 1.1.5 编写一段程序,如果double 类型的变量x 和y 都严格位于0 和1 之间则打印true,否则打印false。public class TestUqual public static void main(String args)double x;double y;x

3、=StdIn.readDouble();y=StdIn.readDouble();StdOut.print(compare(x)public static boolean compare(double x)If(x0StdOut.printf(“%.5fn“, t);b. int sum = 0;for (int i = 1; i 0; n /= 2)s = (n % 2) + s;1.1.10 下面这段代码有什么问题?int a;for (int i = 0; i =M)N=N/M;a+;return a;1.1.15 编写一个静态方法histogram(),接受一个整型数组a 和一个整数M

4、 为参数并返回一个大小为M的数组,其中第i个元素的值为整数i在参数数组中出现的次数。如果a中的值均在0到M-1之间,返回数组中所有元素之和应该和a.length 相等。public static int histogram(int a,int M)int b= new int M;int n=0;int m=0;for(int i=0;i1)return Math.ln(N)+factorialln(N-1);elsereturn 0;1.1.21 编写一段程序,从标准输入按行读取数据,其中每行都包含一个名字和两个整数。然后用printf() 打印一张表格,每行的若干列数据包括名字、两个整数和

5、第一个整数除以第二个整数的结果,精确到小数点后三位。可以用这种程序将棒球球手的击球命中率或者学生的考试分数制成表格。public class ScoreTable public static void main(String args) String s = “Lets go for lunch!“;In in = new In(“Se“);String whitelist = in.readAllStrings();/将文件中的字符串读取到数组中for(int i=0;i amid) lo = mid + 1;else return mid;return -1;if(c=-)while (l

6、o amid) lo = mid + 1;else return -1;return 0;elsereturn -1;1.1.24 给出使用欧几里德算法计算105 和24 的最大公约数的过程中得到的一系列 p 和 q 的值。扩展该算法中的代码得到一个程序Euclid,从命令行接受两个参数,计算它们的最大公约数并打印出每次调用递归方法时的两个参数。使用你的程序计算1 111 111 和1 234 567 的最大公约数。public static int CommomDivisor(int x,int y)if(x=1|y=1)StdOut.println(“x=“+x+“y=“+y);retur

7、n 1;if(x b) t = a; a = b; b = t; if (a c) t = a; a = c; c = t; if (b c) t = b; b = c; c = t; 1.1.27 二项分布。估计用以下代码计算binomial(100, 50) 将会产生的递归调用次数:public static double binomial(int N, int k, double p)if (N = 0 and if (N 0 | k 0) return 0.0;return (1.0 - p)*binomial(N-1, k, p) + p*binomial(N-1, k-1);将已经

8、计算过的值保存在数组中并给出一个更好的实现。估计递归调用次数: 100!public static double binomial(int N,int k,double p)cnt+;StdOut.println(“N=“+N+“k=“+k+“p=“+p);if (N = 0 return 1.0; if (N 0 | k 0)StdOut.println(“N 0 | k 0“);return 0; return (1.0 - p)*binomial(N-1, k, p) + p*binomial(N-1, k-1,p);值保存在数组中的实现方法:public static void binomialArrays(int N,int K,double p)double a=new doubleN+1K+1;a00=1;for(int j=1;jN+1;j+)aj0=aj-10*(1-p);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 参考答案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。