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

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

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

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

《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

1

false

false,true

false,true

 

字符型

char

2

0

a,我,ぽ

0~65535

整数类型

字节性

byte

1

0

12,13,45

-128~127

短整型

short

2

0

12,13,45

-32768~32767

整型

int

8

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

8

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

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

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

分析:

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

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

程序运行结果:

/**

*@author段智敏

*/

publicclassWork2_6{

publicstaticvoidmain(String[]args){

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;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_1

{

publicstaticvoidmain(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;

publicclassWork2_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(Stringmessage,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

{

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

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

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

}

else

returnnumber;

}

/**

*弹出对话框,显示结果

*@paramstr-需要显示的字符串

*/

publicvoidshowResult(Stringstr)

{

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

JOptionPane.INFORMATION_MESSAGE);

}

publicstaticvoidmain(String[]args)

{

newWork2_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();

intn=-1;

try

{

n=Integer.parseInt(str);

}

catch(NumberFormatExceptione)

{

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

");

return;

}

if(n<1)

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

");

else

{

for(inti=0;i

{

for(intj=0;j

{

System.out.print("");

}

for(intk=0;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段智敏

*/

publicclassWork2_10

{

publicstaticvoidmain(String[]args){

StringresultString=newString("1000之前的所有水仙花数有:

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

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

{

if(isNarcissusNumber(i))

resultString+=""+i;

}

System.out.println(resultString.substring(0,resultString.length()-1));

}

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

{

intnumber=m;//把m存起来

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

intamount=0;//表示n的位数

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

{

a[amount]=m%10;

m=m/10;

amount++;

}

intsum=0;

for(intj=0;j

{

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

}

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

returntrue;

returnfalse;

}

2.11编程序解百鸡问题:

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

百钱买百鸡。

求鸡翁、鸡母和鸡雏各几何?

程序运行结果:

源代码文件:

Work2_11.java

/**

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


*百钱买百鸡。

求鸡翁、鸡母和鸡雏各几何。


*@author段智敏

*/

publicclassWork2_11

{

publicstaticvoidmain(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_12

{

publicstaticvoidmain(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的近似值:

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

程序运行结果:

源代码文件:

Work2_13.java

/**

*圆周率计算

*@author段智敏

*/

publicclassWork2_13

{

publicstaticvoidmain(Stringargs[])

{

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

}

/**

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

*

*@paramp-数值

*@return-项数

*/

publicstaticdoublegetIndex(doublep)

{

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

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

while(r

{

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

t=-t;

i=i+2;

r++;

if(pai>=p&&pai<=(p+0.000001))

break;

}

returnr;

}

/**

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

*@paramnum-公式项数

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

*/

publicstaticdoublegetPai(doublenum)

{

intr=1;

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

while(r

{

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

t=-t;

i=i+2;

r++;

}

returnpai;

}

}

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

程序运行结果:

importjavax.swing.JOptionPane;

/**

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

*@author段智敏

*/

publicclassWork2_14

{

privateintnumber;

publicWork2_14()

{

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

if(number<0)

return;

if(isPalindrome(number))

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

else

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

}

/**

*判断是否是回文数

*@paramnum

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

当前位置:首页 > 经管营销

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

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