《Java语言程序设计一》课后习题答案全集.docx

上传人:b****7 文档编号:11042111 上传时间:2023-02-24 格式:DOCX 页数:262 大小:805.02KB
下载 相关 举报
《Java语言程序设计一》课后习题答案全集.docx_第1页
第1页 / 共262页
《Java语言程序设计一》课后习题答案全集.docx_第2页
第2页 / 共262页
《Java语言程序设计一》课后习题答案全集.docx_第3页
第3页 / 共262页
《Java语言程序设计一》课后习题答案全集.docx_第4页
第4页 / 共262页
《Java语言程序设计一》课后习题答案全集.docx_第5页
第5页 / 共262页
点击查看更多>>
下载资源
资源描述

《Java语言程序设计一》课后习题答案全集.docx

《《Java语言程序设计一》课后习题答案全集.docx》由会员分享,可在线阅读,更多相关《《Java语言程序设计一》课后习题答案全集.docx(262页珍藏版)》请在冰豆网上搜索。

《Java语言程序设计一》课后习题答案全集.docx

《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有那些基本数据类型,它们的常量又是如何书写的?

数据类型

关键字

字节数

默认值

常量举例

范围

逻辑类型

布尔型

boolean

false

false,true

false,true

 

字符型

char

2

0

a,我,ぽ

0~ 65535

整数类型

字节性

byte

1

12,13,45

—128~127

短整型

short

2

0

12,13,45

—32768~32767

整型

int

0

12,13,45

-2E31 ~ 2E31—1

长整型

long

8

0L

12L,13L,45L

—2E63 ~ 2E63-1

浮点类型

单精度浮点

float

4

0F

12。

345F,6。

7891F

-10E38 ~ —10E-38

10E-38 ~10E38

双精度浮点

double

0D

12.345D,6.7891D

-10E308~-10E—308

10E-308~10E308

1。

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)

第二章运算和语句

2。

1 Java的字符能参加算术运算吗?

可以。

(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)0<a〈10

解:

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=10

2.6若一个数恰好等于它的因子之和,则这个数称为“完全数”。

编写程序求1000之内的所有完全数。

分析:

若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数。

例如6=1+2+3;28=1+2+4+7+14

程序运行结果:

/**

* @author段智敏

*/

public classWork2_6{ﻩ

publicstaticvoidmain(String[]args) {

ﻩﻩStringresultString =”1000以内,完全数有:

";//最后结果字符串

ﻩﻩfor (inti =1; i〈=1000;i++){

ﻩﻩﻩif(isPerfectNumber(i)){

ﻩresultString +=i+",";

ﻩ}

ﻩ}

ﻩﻩSystem.out.println(resultString);

ﻩprivatestaticbooleanisPerfectNumber(int number){

ﻩintsum=0;//因子的和

ﻩStringstr = newString(”");

for (inti=1;i〈number;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;

ﻩ}ﻩ

ﻩreturn false;ﻩ

}

}

2.7编写输入正实数x,求平方不超过x的最大整数n,并输出。

程序运行结果:

第一种命令行方式输入

importjava。

util.Scanner;

/**

*编写输入正实数x,求平方不超过x的最大整数n,并输出。

<BR〉

* 命令行方式,输入正实数,输出结果<BR>

*@author段智敏

 */

publicclassWork2_7_1

ﻩpublicstaticvoid main(String[] args)

ﻩ{

ﻩScannerconsoleScanner =newScanner(System。

in);

ﻩSystem.out。

print(”请输入正实数X:

");

ﻩStringstr= consoleScanner。

next();

ﻩintnumber= -1;

ﻩﻩtry

ﻩ{

number=Integer.parseInt(str);

}

ﻩcatch(NumberFormatExceptione)

ﻩ{

ﻩﻩSystem.out.println(”输入非法字符,程序结束!

");

ﻩﻩﻩreturn;

}

ﻩif(number<1)

ﻩﻩﻩSystem.out。

println("输入的数不是正实数,程序结束!

!

”);

ﻩelse

ﻩ{

ﻩﻩintn =(int)(Math。

sqrt(number));

ﻩSystem。

out.println("平方不超过"+number+"的最大整数,n=”+n+";”);

ﻩ}

}

}

第二种窗口方式输入

运行结果如下图:

/**

* 编写输入正实数x,求平方不超过x的最大整数n,并输出。

*弹出窗口方式

*@author 段智敏

*/

importjavax.swing.JOptionPane;

publicclass Work2_7_2

ﻩprivateintnumber;

publicWork2_7_2()

ﻩ{

ﻩnumber=this。

getIntegerNumber("请输入一个正实数",1);

ﻩif(number<1)

ﻩﻩreturn;//非法,程序结束

ﻩintn =(int) (Math.sqrt(number));

ﻩﻩshowResult("平方不超过" +number+"的最大整数\nn="+ n+";");

ﻩ}

ﻩ/**

ﻩ*通过图形界面,得到符合规则的正整数的方法

*@parammessage—在弹出的对话框中,显示提示信息message

ﻩ * @parammin—要求此数必须大于等于min

*/

ﻩpublicintgetIntegerNumber(String message,intmin)

Stringstr=JOptionPane。

showInputDialog(null,”请输入一个正整数",”提示信息”,

ﻩJOptionPane.INFORMATION_MESSAGE);

ﻩintnumber= —1;

ﻩtry

ﻩﻩnumber=Integer。

parseInt(str);//得到输入的正整数

ﻩ}

ﻩcatch(Exceptione)

ﻩ{

ﻩﻩJOptionPane.showMessageDialog(null,"输入非数字字符\n程序结束","错误警告",

ﻩﻩﻩJOptionPane。

ERROR_MESSAGE);

ﻩreturn —1;//输入的不是数字字符,程序结束

ﻩ}

ﻩﻩ

if(number< min)

ﻩﻩ{

ﻩJOptionPane.showMessageDialog(null,"输入的数不符合规则,不是正整数\n程序结束”,

ﻩﻩ”错误警告",JOptionPane.ERROR_MESSAGE);

ﻩﻩﻩreturn—1;//输入的数不是大于2的正整数时候,程序结束

ﻩ}

else

ﻩﻩreturn number;

ﻩ}

ﻩ/**

ﻩ *弹出对话框,显示结果

ﻩ*@param str-需要显示的字符串

*/

publicvoidshowResult(Stringstr)

ﻩ{

ﻩJOptionPane.showMessageDialog(null,str,”输出结果",

ﻩJOptionPane。

INFORMATION_MESSAGE);

}

ﻩpublicstatic voidmain(String[]args)

{

new Work2_7_2();

2.8输入正整数n,输出由n行n列星号字符组成的三角形图案.

程序运行结果:

源代码文件:

Work2_8.java

importjava.util.*;

/**

 *输入正整数n,输出由n行n列星号字符组成的三角形图案。

*@author段智敏

*/

publicclassWork2_8

ﻩpublicstaticvoidmain(Stringargs[])

ﻩ{

ScannerconsoleScanner =newScanner(System.in);

ﻩﻩSystem.out。

print("请输入正整数n:

”);

ﻩStringstr = consoleScanner。

next();

ﻩint n=—1;

ﻩtry

ﻩ{

n=Integer.parseInt(str);

ﻩ}

ﻩﻩcatch(NumberFormatExceptione)

ﻩ{

System.out。

println("输入非法字符,程序结束!

”);

ﻩreturn;

ﻩ}

ﻩif (n〈1)

ﻩSystem.out.println(”输入的数不是正实数,程序结束!

”);

ﻩelse

ﻩ{

ﻩfor(inti=0;i<n;i++)

ﻩ{

ﻩfor(intj=0;j〈n—i-1;j++)

ﻩﻩ{

ﻩﻩSystem.out.print(" ");

ﻩﻩﻩﻩ}

ﻩﻩﻩfor(intk=0;k〈i+1;k++)

ﻩﻩﻩ{

ﻩSystem.out。

print("*");

ﻩﻩﻩ}

ﻩﻩSystem.out。

println();

ﻩ}

ﻩﻩ}

}

2.9设有整型变量x和y的值分别为5和110。

试指出执行了以下循环语句后,变量x和y的值分别多少?

1)while(x〈=y)x*=2;

  解:

x=160;y=110;

2)do{x=y/x;y=y-x;}while(y〉=1);

  解:

x=18; y=0;

2。

10求小于999的所有水仙花数。

程序运行结果:

源代码文件:

Work2_10.java

/**

* 求小于999的所有水仙花数

*@author段智敏

*/

publicclass Work2_10

ﻩpublicstatic voidmain(String[]args){

ﻩﻩString resultString=newString("1000之前的所有水仙花数有:

");//用来存结果的字符串

ﻩfor(inti= 100; i<999;i++)

{

ﻩﻩif(isNarcissusNumber(i))

ﻩﻩresultString+=" ”+i;

ﻩ}

ﻩﻩSystem。

out.println(resultString。

substring(0,resultString.length()-1));

}

public staticbooleanisNarcissusNumber(intm)// 判断是否是水仙花数的方法

ﻩintnumber=m;//把m存起来

ﻩint a[]=newint[100];//用来存n每个位上的数

ﻩint amount=0;//表示n的位数

ﻩﻩwhile(m>0)// 通过循环得到m每个位上的数,存到数组中

ﻩ{

ﻩa[amount]=m %10;

ﻩﻩm =m/10;

ﻩﻩamount++;

ﻩ}

ﻩﻩintsum =0;

ﻩfor (intj=0;j〈amount; j++)//累加每位上的数的位数次方

ﻩ{

ﻩsum+= Math.pow(a[j],amount);

ﻩﻩ}

if(number== sum)//如果累加的和等于这个数本身,则他是水仙花数,返回真

ﻩreturn true;

returnfalse;

ﻩ}

2。

11编程序解百鸡问题:

鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。

百钱买百鸡.求鸡翁、鸡母和鸡雏各几何?

程序运行结果:

源代码文件:

Work2_11.java

/**

*鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。

〈BR〉

*百钱买百鸡。

求鸡翁、鸡母和鸡雏各几何.〈BR>

*@author段智敏

*/

public classWork2_11

{

publicstaticvoidmain(String args[])

ﻩ{

ﻩﻩfor(int i =0; i<=100;i++)

ﻩ{

for(intj=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))

ﻩﻩﻩ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段智敏

 */

public classWork2_12

publicstaticvoidmain(String args[])

ﻩ{

ﻩﻩ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)

ﻩ{

ﻩdouble f=1.0;

ﻩfor(intj=1; j<=a;j++)

ﻩf =f* j;

ﻩreturn f;

ﻩ}

}

2.13 编写程序,用如下公式计算圆周率PI的近似值:

PI=4-4/3+4/5—4/7+4/9-4/11.。

程序运行结果:

源代码文件:

Work2_13。

java

/**

* 圆周率计算

* @author 段智敏

*/

public classWork2_13

publicstatic voidmain(String args[])

ﻩintnum =1000000;//控制计算的项数,越高,越准确

ﻩSystem.out.println(”用公式计算圆周率,\n计算" +num+”项后圆周率的近似值为"

ﻩ+ Work2_13.getPai(num));

ﻩSystem。

out.println(”3。

14是第”+Work2_13.getIndex(3。

14)+"项,\t\t值为:

ﻩ+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)));

ﻩ}

/**

ﻩ*根据给出的数值,得到需要计算多少项才能得到这个数值

* 

*@param p -数值

ﻩ * @return- 项数

 */

publicstatic doublegetIndex(double p)

{

ﻩﻩintr=1, num =1000000;// 控制计算的项数,越高,越准确

doublei = 1.0,pai= 0.0, t=1.0;

while(r < num)

ﻩﻩpai=pai+(4.0/i) *t;

ﻩt=-t;

ﻩﻩﻩi=i+2;

ﻩr++;

ﻩif(pai〉= p&&pai〈=(p+0.000001))

ﻩﻩbreak;

ﻩﻩ}

ﻩﻩreturn r;

ﻩ}

ﻩ/**

ﻩ*根据给出的数,按公式进行计算圆周率

*@paramnum—公式项数

*@return返回按公式计算出的圆周率

*/

ﻩpublicstaticdouble getPai(doublenum)

{

intr=1;

ﻩdoublei= 1。

0, pai=0.0, t=1。

0;

ﻩwhile(r<num)

ﻩﻩ{

pai= pai+(4.0/i)* t;

t= —t;

ﻩi=i+2;

r++;

ﻩ}

return pai;

ﻩ}

}

2.14回文整数是指正读法和反读相同的整数,编写一个程序,输入一个整数,判断他是否为回文整数。

程序运行结果:

import javax.swing。

JOptionPane;

/**

 *输入整数,判断是否是回文整数

*@author段智敏

*/

public classWork2_14

ﻩprivate intnumber;

publicWork2_14()

ﻩ{

ﻩﻩnumber=getIntegerNumber("输入一个正整数n",1);//要求是〉=1的整数

ﻩif(number <0)

ﻩreturn;

ﻩif(isPalindrome(number))

ﻩﻩshowResult("输入的正整数 “"+number+""是回文数");

ﻩelse

ﻩshowResult("输入的正整数 “" +number + ""不是回文数");

ﻩ}

ﻩ/**

ﻩ* 判断是否是回文数

ﻩ*@paramnumber—需要判断的正整数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1