《《Java语言程序设计一》课后习题答案全集 .doc》由会员分享,可在线阅读,更多相关《《Java语言程序设计一》课后习题答案全集 .doc(126页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.1 指出JAVA语言的主要特点和JAVA程序的执行过程。答:(1)强类型;(2)编译和解释;(3)自动无用内存回收功能;(4)面向对象;(5)与平台无关;(6)安全性;(7)分布式计算;(8)多线程;程序执行过程如图所示:编写源文件,编译器编译源文件转换成字节码,解释器执行字节码。1.2 说出开发与运行JAVA程序的重要步骤。答:(1)编写源文件:使用一个文本编译器,如Edit或记事本,不可以使用Word.将编好的源文件保存起来,源文件的扩展名必须是.java; (2)编译Java源文件:使用Java编译器()编译源文件得到字节码文件; (3)运行Java程序:Java程序分为两类Java
2、应用程序必须通过Java解释器()来解释执行其字节码文件;Java小应用程序必须通过支持Java标准的浏览器来解释执行。1.3 如何区分应用程序和小应用程序? 答:应用程序在与源文件名字相同的类中,有main()方法,该方法代表应用程序的入口; 小应用程序必须有一个Applet类的子类,该类称作主类,必须用public修饰。1.4 说出JAVA源文件的命名规则。答:源文件命名规则和类命名规则一样,所有的单词首字母都用大写字母,且必须和源文件的public类同名。1.6 JAVA语言使用什么字符集?共有多少个不同的字符? 答:Java语言使用Unicode字符集,共有65535个字符。 1.7
3、JAVA语言标识符的命名规则是什么?(1)由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字字符组成(2)限定标识符的第一个字符不能是数字字符(3)不能和关键字重名(4)长度不能超过255个字符1.8 JAVA有那些基本数据类型,它们的常量又是如何书写的?数据类型关键字字节数默认值常量举例范围逻辑类型布尔型boolean1falsefalse,truefalse,true字符型char20a,我,0 65535 整数类型字节性byte1012,13,45-128 127 短整型short2012,13,45-32768 32767整型int8012,13,45-2E31 2E31-1
4、长整型long80L12L,13L,45L-2E63 2E63-1浮点类型单精度浮点float40F12.345F,6.7891F-10E38 -10E-3810E-38 10E38双精度浮点double80D12.345D,6.7891D-10E308 -10E-30810E-308 10E3081.9 指出下列内容哪些是JAVA语言的整型常量,哪些是浮点数类型常量,哪些两者都不是。整型常量: 4)0xABCL,8)003,10)077,12)056L浮点数类型常量:3)-1E-31,5).32E31 13)0.,14).0两者都不是: 1),2),6),7),9),11)第二章 运算和语句
5、2.1 Java的字符能参加算术运算吗?可以。(1)字符与整型数据运算,结果为整型数据,只能赋给整型变量,如果附给字符型变量会损失精度,需要强制类型装换; (2)字符与字符运算,结果为字符型数据,可以直接赋给字符型或整型变量。2.2 占字节多的变量能直接赋值给占字节少的变量么? 答:不能直接赋值,需要强制类型转换。2.3 试用Java语言表达式描述以下数学计算式或逻辑条件:1)解:V = (4.0/3)*(r,3);2)解:R = 1.0 / (1.0/R1+1.0/R2);3)解:y = (x,5) + (x,3) + 6;4)解:F = 1.0 * M1 * M2 / (R * R);5)
6、解:(x) / a * x + ( ( * x / 2) );6)0 a 0 & a 10 7) 条件 x=1 与 y=2 有且只有一个成立. 解:( x = 1 & y != 2) | (x != 1 & y = 2) 2.4 设在求以下表达式之前,整型变量a的值是4,试指出在求了以下表达式之后,变量a、b和c的值。1) 解:a=5 ; b=16;2);解:a=5 ; c=102.6 若一个数恰好等于它的因子之和,则这个数称为“完全数”。编写程序求1000之内的所有完全数。分析:若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数。例如6=1+23;28=
7、124714程序运行结果:/* author 段智敏 */public class Work2_6 public static void main(String args) String resultString = 1000以内,完全数有:; /最后结果字符串for (int i = 1; i = 1000; i+)if (isPerfectNumber(i)resultString += i + ,;.println(resultString);private static boolean isPerfectNumber(int number)int sum = 0;/ 因子的和Strin
8、g str = new String();for (int i = 1; i number; i+)if (number % i = 0)sum += i;str += i + +;if (sum = number)/ 如果因子之和,等于本身,则是完数str = ring(0, h() - 1); / 去掉字符串最后一个多余的“+”;.println(number + 的因子有: + str);return true;return false;2.7 编写输入正实数x,求平方不超过x的最大整数n,并输出。程序运行结果:第一种命令行方式输入import .Scanner;/* * 编写输入正实数
9、x,求平方不超过x的最大整数n,并输出。 * 命令行方式,输入正实数,输出结果 * author 段智敏 */ public class Work2_7_1public static void main(String args)Scanner consoleScanner = new Scanner();.print(请输入正实数X:);String str = ();int number = -1; trynumber = Int(str);catch( NumberFormatException e ) .println(输入非法字符,程序结束!);return;if (number 1)
10、.println(输入的数不是正实数,程序结束!);elseint n = (int) (number);.println(平方不超过+number+的最大整数,n=+n+;);第二种窗口方式输入运行结果如下图:/* * 编写输入正实数x,求平方不超过x的最大整数n,并输出。 * 弹出窗口方式 * author 段智敏 */ import .JOptionPane;public class Work2_7_2private int number;public Work2_7_2()number = tegerNumber(请输入一个正实数, 1);if (number 1)return; /
11、非法,程序结束int n = (int) (number);showResult(平方不超过 + number + 的最大整数nn = + n + ;);/* * 通过图形界面,得到符合规则的正整数的方法 * param message - 在弹出的对话框中,显示提示信息message * param min - 要求此数必须大于等于min */public int getIntegerNumber(String message, int min)String str = nputDialog(null, 请输入一个正整数, 提示信息,MATION_MESSAGE);int number =
12、-1;trynumber = Int(str); / 得到输入的正整数catch( Exception e )essageDialog(null, 输入非数字字符n程序结束, 错误警告,_MESSAGE);return -1; / 输入的不是数字字符,程序结束if (number min)essageDialog(null, 输入的数不符合规则,不是正整数n程序结束,错误警告, _MESSAGE);return -1; / 输入的数不是大于2的正整数时候,程序结束elsereturn number;/* * 弹出对话框,显示结果 * param str - 需要显示的字符串 */public
13、void showResult(String str)essageDialog(null, str, 输出结果,MATION_MESSAGE);public static void main(String args)new Work2_7_2();2.8 输入正整数n,输出由n行n列星号字符组成的三角形图案。程序运行结果:源代码文件:Work2_8.java import .*;/* * 输入正整数n,输出由n行n列星号字符组成的三角形图案。 * author 段智敏 */ public class Work2_8public static void main(String args)Scan
14、ner consoleScanner = new Scanner();.print(请输入正整数n:);String str = ();int n = -1;tryn = Int(str);catch( NumberFormatException e ).println(输入非法字符,程序结束!);return;if (n 1).println(输入的数不是正实数,程序结束!);elsefor(int i=0;in;i+)for(int j=0;jn-i-1;j+).print( );for(int k=0;ki+1;k+).print(*);.println();2.9 设有整型变量x和y的
15、值分别为5和110。试指出执行了以下循环语句后,变量x和y的值分别多少?1)while(x=1);解:x=18; y=0; 2.10求小于999的所有水仙花数。程序运行结果:源代码文件:Work2_10.java/* * 求小于999的所有水仙花数 * author 段智敏 */ public class Work2_10public static void main(String args) String resultString = new String(1000之前的所有水仙花数有:);/ 用来存结果的字符串for (int i = 100; i 0)/ 通过循环得到m每个位上的数,存到
16、数组中aamount = m % 10;m = m / 10;amount+;int sum = 0;for (int j = 0; j amount; j+)/ 累加每位上的数的位数次方sum += (aj, amount);if (number = sum)/ 如果累加的和等于这个数本身,则他是水仙花数,返回真return true;return false;2.11 编程序解百鸡问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡。求鸡翁、鸡母和鸡雏各几何?程序运行结果:源代码文件:Work2_11.java/* * 鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。 * 百钱
17、买百鸡。求鸡翁、鸡母和鸡雏各几何。* author 段智敏 */public class Work2_11public static void main(String args)for (int i = 0; i = 100; i+)for (int j = 0; j = 100; j+) for (int k = 0; k = 100; k += 3) /鸡雏的个数必须使3的倍数if (5*i + 3 * j + k / 3) = 100) & (i + j + k = 100).println(鸡翁: + i + ; 鸡母: + j + ; 鸡雏:+ k);2.12 编写程序,按下面的公式
18、计算自然对数底e的值:e=1+1/1!+1/2!+1/3!+1/4!+./* * 按公式计算:e=1+1/1!+1/2!+1/3!+1/4!+. * author 段智敏 */public class Work2_12public static void main(String args)int n = 1000; / 计算精度double e = 1.0;for (int i = 1; i = n; i+)e = e + 1.0 / Work2_12.factorial(i);.println(e = + e);/* * 计算阶乘的静态方法 * param - 需要计算阶乘的数 * retu
19、rn - 最后结果 */static double factorial(int a)double f = 1.0;for (int j = 1; j = a; j+)f = f * j;return f;2.13 编写程序,用如下公式计算圆周率PI的近似值:PI4-4/3+4/5-4/7+4/9-4/11.程序运行结果:源代码文件:Work2_13.java/* * 圆周率计算 * author 段智敏 */public class Work2_13public static void main(String args)int num = ; / 控制计算的项数,越高,越准确.println(
20、用公式计算圆周率,n计算 + num + 项后圆周率的近似值为+ Work2_13.getPai(num);.println(3.14是第 + Work2_13.getIndex(3.14) + 项,tt值为:+ Work2_13.getPai(Work2_13.getIndex(3.14);.println(3.141是第 + Work2_13.getIndex(3.141) + 项,t值为:+ Work2_13.getPai(Work2_13.getIndex(3.141);.println(3.1415是第 + Work2_13.getIndex(3.1415) + 项,t值为:+ Wo
21、rk2_13.getPai(Work2_13.getIndex(3.1415);.println(3.14159是第 + Work2_13.getIndex(3.14159) + 项,t值为:+ Work2_13.getPai(Work2_13.getIndex(3.14159);/* * 根据给出的数值,得到需要计算多少项才能得到这个数值 * * param p - 数值 * return - 项数 */public static double getIndex(double p)int r = 1, num = ; / 控制计算的项数,越高,越准确double i = 1.0, pai =
22、 0.0, t = 1.0;while (r = p & pai = (p + 0.000001)break;return r;/* * 根据给出的数,按公式进行计算圆周率 * param num - 公式项数 * return 返回按公式计算出的圆周率 */public static double getPai(double num)int r = 1;double i = 1.0, pai = 0.0, t = 1.0;while (r =1的整数if (number 0) / 把整数的各个位上的数存到数组里ai = test % 10;test = test / 10;i+;/ 累计整数
23、位数for (int j = 0; j i; j+)if (aj != ai - j - 1)/ 有对应不相等的,肯定不是,直接跳出并附给b为falsereturn false;return true;/ 如果一直相等,则if里边的语句不能被执行b的值是true/* * 通过图形界面,得到符合规则的正整数的方法 * param message - 在弹出的对话框中,显示提示信息message * param min - 要求此数必须大于等于min * return 返回符合规则的整数 */public int getIntegerNumber(String message, int min)S
24、tring str = nputDialog(null, message, 提示信息,MATION_MESSAGE);int number = -1;trynumber = Int(str); / 得到输入的正整数catch( Exception e )essageDialog(null, 输入非数字字符n程序结束, 错误警告,_MESSAGE);return -1; / 输入的不是数字字符,程序结束if (number min)essageDialog(null, 输入的数不符合规则,不是正整数n程序结束,错误警告, _MESSAGE);return -1; / 输入的数不是大于2的正整数时
25、候,程序结束elsereturn number;/* * 弹出对话框,显示结果 * param str - 需要显示的字符串 */public void showResult(String str)essageDialog(null, str, 输出结果,MATION_MESSAGE);public static void main(String args)new Work2_14();2.15 草地上有一堆野果,有一只猴子每天吃掉这堆野果的一半又一个,5天后刚好吃完这堆野果,求这堆野果原来共有多少个?猴子每天吃多少个野果?程序运行结果:源代码文件:Work2_15.java/* * 猴子吃苹
26、果问题 * author 段智敏 */public class Work2_15 public static void main(String args)int i, j, test = 1;for (i = 1; i 100000; i+)test = i;for (j = 0; j 5; j+) / 5天test = test / 2 - 1;if (test = 0) / 5天后野果子数量为0,则满足要求.println(这堆野果原来共有 + i + 个);break;/ 打印出猴子每天吃野果子的个数int eat;test = i;for (j = 1; j 0) ? + : )+ (
27、image != 0) ? + i : );return result;/* * 复数加法, * param val - 另一个复数 * return - 当前复数对象与参数指定的复数对象的和 */public Complex add(Complex val)Complex result = new Complex ( + al(), + age();return result;/* * 复数减法,当前对象减去参数对象 * param val - 另一个复数 * return - 当前复数对象与参数指定的复数对象的差 */public Complex subtract(Complex val)
28、 / ,返回,Complex result = new Complex ( - al(), - age();return result;/* * 复数乘法 * param val - 另一个复数 * return - 当前复数对象与参数指定的复数对象的积 */public Complex multiply(Complex val)Complex result = new Complex ();al( * al() - * age();age( * age() + * al();return result;/* * 复数除法 * param val - 另一个复数 * return - 当前复数
29、对象与参数指定的复数对象的商 */public Complex divide(Complex val)Complex result = new Complex ();al( * al() + * age()/ (al() * al() + age() * age();age( * al() - * age()/ (al() * al() + age() * age();return result;复数测试类:程序运行结果:/* * 复数测试类 * author 段智敏 * */public class TestComplexpublic static void main(String args)Complex complex1 = new Complex(2, 4);Complex complex2 = new Complex(3, -1);Complex result = new Complex();.println(复数1: + ing() + ;实部 + al() + ;虚部+ age();.println(复数2: + ing() + ;实部 + al() + ;虚部+ age();result = (complex2);/ 两个复数之和.println(复数: + ing() + 与 + 复数: + ing()+ 之和为: + ing()
限制150内