《Java语言程序设计一》课后习题答案解析全集.docx
- 文档编号:8253686
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:211
- 大小:784.31KB
《Java语言程序设计一》课后习题答案解析全集.docx
《《Java语言程序设计一》课后习题答案解析全集.docx》由会员分享,可在线阅读,更多相关《《Java语言程序设计一》课后习题答案解析全集.docx(211页珍藏版)》请在冰豆网上搜索。
Java语言程序设计一课后习题答案解析全集语言程序设计一课后习题答案解析全集1.1指出指出JAVA语言的主要特点和语言的主要特点和JAVA程序的执行过程。
程序的执行过程。
答:
(1)强类型;
(2)编译和解释;(3)自动无用内存回收功能;(4)面向对象;(5)与平台无关;(6)安全性;(7)分布式计算;(8)多线程;程序执行过程如图所示:
编写源文件,编译器编译源文件转换成字节码,解释器执行字节码。
1.2说出开发与运行说出开发与运行JAVA程序的重要步骤。
程序的重要步骤。
答:
(1)编写源文件:
使用一个文本编译器,如Edit或记事本,不可以使用Word.将编好的源文件保存起来,源文件的扩展名必须是.java;
(2)编译Java源文件:
使用Java编译器(javac.exe)编译源文件得到字节码文件;(3)运行Java程序:
Java程序分为两类Java应用程序必须通过Java解释器(java.exe)来解释执行其字节码文件;Java小应用程序必须通过支持Java标准的浏览器来解释执行。
1.3如何区分应用程序和小应用程序?
如何区分应用程序和小应用程序?
答:
应用程序在与源文件名字相同的类中,有main()方法,该方法代表应用程序的入口;小应用程序必须有一个Applet类的子类,该类称作主类,必须用public修饰。
1.4说出说出JAVA源文件的命名规则。
源文件的命名规则。
答:
源文件命名规则和类命名规则一样,所有的单词首字母都用大写字母,且必须和源文件的public类同名。
1.6JAVA语言使用什么字符集?
共有多少个不同的字符?
语言使用什么字符集?
共有多少个不同的字符?
答:
Java语言使用Unicode字符集,共有65535个字符。
1.7JAVA语言标识符的命名规则是什么?
语言标识符的命名规则是什么?
(1)由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字字符组成
(2)限定标识符的第一个字符不能是数字字符(3)不能和关键字重名(4)长度不能超过255个字符1.8JAVA有那些基本数据类型,它们的常量又是如何书写的?
有那些基本数据类型,它们的常量又是如何书写的?
数据类型关键字字节数默认值常量举例范围逻辑类型布尔型boolean1falsefalse,truefalse,true字符型char20a,我,065535整数类型字节性byte1012,13,45-128127短整型short2012,13,45-3276832767整型int8012,13,45-2E312E31-1长整型long80L12L,13L,45L-2E632E63-1浮点类型单精度浮点float40F12.345F,6.7891F-10E38-10E-3810E-3810E38双精度浮点double80D12.345D,6.7891D-10E308-10E-30810E-30810E3081.9指出下列内容哪些是指出下列内容哪些是JAVA语言的整型常量,哪些是浮点数类型常量,哪些两语言的整型常量,哪些是浮点数类型常量,哪些两者都不是。
者都不是。
整型常量:
4)0xABCL,8)003,10)077,12)056L浮点数类型常量:
3)-1E-31,5).32E3113)0.,14).0两者都不是:
1),2),6),7),9),11)第二章第二章运算和语句运算和语句2.1Java的字符能参加算术运算吗?
的字符能参加算术运算吗?
可以。
(1)字符与整型数据运算,结果为整型数据,只能赋给整型变量,如果附给字符型变量会损失精度,需要强制类型装换;
(2)字符与字符运算,结果为字符型数据,可以直接赋给字符型或整型变量。
2.2占字节多的变量能直接赋值给占字节少的变量么?
占字节多的变量能直接赋值给占字节少的变量么?
答:
不能直接赋值,需要强制类型转换。
2.3试用试用Java语言表达式描述以下数学计算式或逻辑条件:
语言表达式描述以下数学计算式或逻辑条件:
1)解:
V=(4.0/3)*Math.PI*Math.pow(r,3);2)解:
R=1.0/(1.0/R1+1.0/R2);3)解:
y=Math.pow(x,5)+Math.pow(x,3)+6;4)解:
F=1.0*M1*M2/(R*R);5)解:
Math.sin(x)/a*x+Math.abs(Math.cos(*x/2);6)0a0&a107)条件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=124714程序运行结果:
/*author段智敏*/publicclassWork2_6publicstaticvoidmain(Stringargs)StringresultString=1000以内,完全数有:
;/最后结果字符串for(inti=1;i=1000;i+)if(isPerfectNumber(i)resultString+=i+,;System.out.println(resultString);privatestaticbooleanisPerfectNumber(intnumber)intsum=0;/因子的和Stringstr=newString();for(inti=1;inumber;i+)if(number%i=0)sum+=i;str+=i+;if(sum=number)/如果因子之和,等于本身,则是完数str=str.substring(0,str.length()-1);/去掉字符串最后一个多余的“+”;System.out.println(number+的因子有:
+str);returntrue;returnfalse;2.7编写输入正实数编写输入正实数x,求平方不超过,求平方不超过x的最大整数的最大整数n,并输出。
,并输出。
程序运行结果:
第一种命令行方式输入importjava.util.Scanner;/*编写输入正实数x,求平方不超过x的最大整数n,并输出。
*命令行方式,输入正实数,输出结果*author段智敏*/publicclassWork2_7_1publicstaticvoidmain(Stringargs)ScannerconsoleScanner=newScanner(System.in);System.out.print(请输入正实数X:
);Stringstr=consoleScanner.next();intnumber=-1;trynumber=Integer.parseInt(str);catch(NumberFormatExceptione)System.out.println(输入非法字符,程序结束!
);return;if(number1)System.out.println(输入的数不是正实数,程序结束!
);elseintn=(int)(Math.sqrt(number);System.out.println(平方不超过+number+的最大整数,n=+n+;);第二种窗口方式输入运行结果如下图:
/*编写输入正实数x,求平方不超过x的最大整数n,并输出。
*弹出窗口方式*author段智敏*/importjavax.swing.JOptionPane;publicclassWork2_7_2privateintnumber;publicWork2_7_2()number=this.getIntegerNumber(请输入一个正实数,1);if(number1)return;/非法,程序结束intn=(int)(Math.sqrt(number);showResult(平方不超过+number+的最大整数nn=+n+;);/*通过图形界面,得到符合规则的正整数的方法*parammessage-在弹出的对话框中,显示提示信息message*parammin-要求此数必须大于等于min*/publicintgetIntegerNumber(Stringmessage,intmin)Stringstr=JOptionPane.showInputDialog(null,请输入一个正整数,提示信息,JOptionPane.INFORMATION_MESSAGE);intnumber=-1;trynumber=Integer.parseInt(str);/得到输入的正整数catch(Exceptione)JOptionPane.showMessageDialog(null,输入非数字字符n程序结束,错误警告,JOptionPane.ERROR_MESSAGE);return-1;/输入的不是数字字符,程序结束if(numbermin)JOptionPane.showMessageDialog(null,输入的数不符合规则,不是正整数n程序结束,错误警告,JOptionPane.ERROR_MESSAGE);return-1;/输入的数不是大于2的正整数时候,程序结束elsereturnnumber;/*弹出对话框,显示结果*paramstr-需要显示的字符串*/publicvoidshowResult(Stringstr)JOptionPane.showMessageDialog(null,str,输出结果,JOptionPane.INFORMATION_MESSAGE);publicstaticvoidmain(Stringargs)newWork2_7_2();2.8输入正整数输入正整数n,输出由,输出由n行行n列星号字符组成的三角形图案。
列星号字符组成的三角形图案。
程序运行结果:
源代码文件:
Work2_8.javaimportjava.util.*;/*输入正整数n,输出由n行n列星号字符组成的三角形图案。
*author段智敏*/publicclassWork2_8publicstaticvoidmain(Stringargs)ScannerconsoleScanner=newScanner(System.in);System.out.print(请输入正整数n:
);Stringstr=consoleScanner.next();intn=-1;tryn=Integer.parseInt(str);catch(NumberFormatExceptione)System.out.println(输入非法字符,程序结束!
);return;if(n1)System.out.println(输入的数不是正实数,程序结束!
);elsefor(inti=0;in;i+)for(intj=0;jn-i-1;j+)System.out.print();for(intk=0;ki+1;k+)System.out.print(*);System.out.println();2.9设有整型变量设有整型变量x和和y的值分别为的值分别为5和和110。
试指出执行了以下循环语句后,变。
试指出执行了以下循环语句后,变量量x和和y的值分别多少?
的值分别多少?
1)while(x=1);解:
x=18;y=0;2.10求小于求小于999的所有水仙花数。
的所有水仙花数。
程序运行结果:
源代码文件:
Work2_10.java/*求小于999的所有水仙花数*author段智敏*/publicclassWork2_10publicstaticvoidmain(Stringargs)StringresultString=newString(1000之前的所有水仙花数有:
);/用来存结果的字符串for(inti=100;i0)/通过循环得到m每个位上的数,存到数组中aamount=m%10;m=m/10;amount+;intsum=0;for(intj=0;jamount;j+)/累加每位上的数的位数次方sum+=Math.pow(aj,amount);if(number=sum)/如果累加的和等于这个数本身,则他是水仙花数,返回真returntrue;returnfalse;2.11编程序解百鸡问题:
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。
编程序解百鸡问题:
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。
百钱买百鸡。
求鸡翁、鸡母和鸡雏各几何?
百钱买百鸡。
求鸡翁、鸡母和鸡雏各几何?
程序运行结果:
源代码文件:
Work2_11.java/*鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。
*百钱买百鸡。
求鸡翁、鸡母和鸡雏各几何。
*author段智敏*/publicclassWork2_11publicstaticvoidmain(Stringargs)for(inti=0;i=100;i+)for(intj=0;j=100;j+)for(intk=0;k=100;k+=3)/鸡雏的个数必须使3的倍数if(5*i+3*j+k/3)=100)&(i+j+k=100)System.out.println(鸡翁:
+i+;鸡母:
+j+;鸡雏:
+k);2.12编写程序,按下面的公式计算自然对数底编写程序,按下面的公式计算自然对数底e的值的值:
e=1+1/1!
+1/2!
+1/3!
+1/4!
+./*按公式计算:
e=1+1/1!
+1/2!
+1/3!
+1/4!
+.*author段智敏*/publicclassWork2_12publicstaticvoidmain(Stringargs)intn=1000;/计算精度doublee=1.0;for(inti=1;i=n;i+)e=e+1.0/Work2_12.factorial(i);System.out.println(e=+e);/*计算阶乘的静态方法*param-需要计算阶乘的数*return-最后结果*/staticdoublefactorial(inta)doublef=1.0;for(intj=1;j=a;j+)f=f*j;returnf;2.13编写程序,用如下公式计算圆周率编写程序,用如下公式计算圆周率PI的近似值:
的近似值:
PI4-4/3+4/5-4/7+4/9-4/11.程序运行结果:
源代码文件:
Work2_13.java/*圆周率计算*author段智敏*/publicclassWork2_13publicstaticvoidmain(Stringargs)intnum=1000000;/控制计算的项数,越高,越准确System.out.println(用公式计算圆周率,n计算+num+项后圆周率的近似值为+Work2_13.getPai(num);System.out.println(3.14是第+Work2_13.getIndex(3.14)+项,tt值为:
+Work2_13.getPai(Work2_13.getIndex(3.14);System.out.println(3.141是第+Work2_13.getIndex(3.141)+项,t值为:
+Work2_13.getPai(Work2_13.getIndex(3.141);System.out.println(3.1415是第+Work2_13.getIndex(3.1415)+项,t值为:
+Work2_13.getPai(Work2_13.getIndex(3.1415);System.out.println(3.14159是第+Work2_13.getIndex(3.14159)+项,t值为:
+Work2_13.getPai(Work2_13.getIndex(3.14159);/*根据给出的数值,得到需要计算多少项才能得到这个数值*paramp-数值*return-项数*/publicstaticdoublegetIndex(doublep)intr=1,num=1000000;/控制计算的项数,越高,越准确doublei=1.0,pai=0.0,t=1.0;while(r=p&pai=(p+0.000001)break;returnr;/*根据给出的数,按公式进行计算圆周率*paramnum-公式项数*return返回按公式计算出的圆周率*/publicstaticdoublegetPai(doublenum)intr=1;doublei=1.0,pai=0.0,t=1.0;while(r=1的整数if(number0)/把整数的各个位上的数存到数组里ai=test%10;test=test/10;i+;/累计整数位数for(intj=0;ji;j+)if(aj!
=ai-j-1)/有对应不相等的,肯定不是,直接跳出并附给b为falsereturnfalse;returntrue;/如果一直相等,则if里边的语句不能被执行b的值是true/*通过图形界面,得到符合规则的正整数的方法*parammessage-在弹出的对话框中,显示提示信息message*parammin-要求此数必须大于等于min*return返回符合规则的整数*/publicintgetIntegerNumber(Stringmessage,intmin)Stringstr=JOptionPane.showInputDialog(null,message,提示信息,JOptionPane.INFORMATION_MESSAGE);intnumber=-1;trynumber=Integer.parseInt(str);/得到输入的正整数catch(Exceptione)JOptionPane.showMessageDialog(null,输入非数字字符n程序结束,错误警告,JOptionPane.ERROR_MESSAGE);return-1;/输入的不是数字字符,程序结束if(numbermin)JOptionPane.showMessageDialog(null,输入的数不符合规则,不是正整数n程序结束,错误警告,JOptionPane.ERROR_MESSAGE);return-1;/输入的数不是大于2的正整数时候,程序结束elsereturnnumber;/*弹出对话框,显示结果*paramstr-需要显示的字符串*/publicvoidshowResult(Stringstr)JOptionPane.showMessageDialog(null,str,输出结果,JOptionPane.INFORMATION_MESSAGE);publicstaticvoidmain(Stringargs)newWork2_14();2.15草地上有一堆野果,有一只猴子每天吃掉这堆野果的一半又一个,草地上有一堆野果,有一只猴子每天吃掉这堆野果的一半又一个,5天后刚天后刚好吃完这堆野果,求这堆野果原来共有多少个?
猴子每天吃多少个野果?
好吃完这堆野果,求这堆野果原来共有多少个?
猴子每天吃多少个野果?
程序运行结果:
源代码文件:
Work2_15.java/*猴子吃苹果问题*author段智敏*/publicclassWork2_15publicstaticvoidmain(Stringargs)inti,j,test=1;for(i=1;i100000;i+)test=i;for(j=0;j5;j+)/5天test=test/2-1;if(test=0)/5天后野果子数量为0,则满足要求System.out.println(这堆野果原来共有+i+个);break;/打印出猴子每天吃野果子的个数inteat;test=i;for(j=1;j0)?
+:
)+(image!
=0)?
this.image+i:
);returnresult;/*复数加法,*paramval-另一个复数*return-当前复数对象与参数指定的复数对象的和*/publicComplexadd(Complexval)Complexresult=newComplex(this.real+val.getReal(),this.image+val.getImage();returnresult;/*复数减法,当前对象减去参数对象*paramval-另一个复数*return-当前复数对象与参数指定的复数对象的差*/publicComplexsubtract(Complexval)/,返回,Complexresult=newComplex(this.real-val.getReal(),this.image-val.getImage();returnresult;/*复数乘法*paramval-另一个复数*return-当前复数对象与参数指定的复数对象的积*/publicComplexmultiply(Complexval)Complexresult=newComplex();result.setReal(this.real*val.getReal()-this.image*val.getImage();result.setImage(this.real*val.getImage()+this.image*val.getReal();returnresult;/*复数除法*paramval-另一个复数*return-当前复数对象与参数指定的复数对象的商*/publicComplexdivide(Complexval)Complexresult=newComplex();result.setReal(this.real*val.getReal()+this.image*val.getImage()/(val.getReal()*val.getReal()+val.getImage()*val.getImage();result.setImage(this.image*val.getReal()-this.real*val.getImage()/(val.getReal()*val.getReal()+val.getImage()*val.getImage();returnresult;复数测试类:
TestComplex.java程序运行结果:
/*复数测试类*author段智敏*/publicclassTestComplexpublicstaticvoidmain(Stringargs)Complexcomplex1=newComplex(2,4);Complexcomplex2=newComplex(3,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java语言程序设计一 Java 语言程序设计 课后 习题 答案 解析 全集