Java语言程序设计 课后习题+答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章课后习题
1.编译Java程序的命令是什么?
2.执行Java程序的命令是什么?
3.Java应用程序和小程序的区别是什么?
4.编写一个application ,实现在屏幕上打印自己名字的功能。

第一章课后习题答案
1.编译Java程序的命令是什么?
答案:javac 源文件名
2.执行Java程序的命令是什么?
java 主类名
3.Java应用程序和小程序的区别是什么?
Java application
⏹由Java解释器独立运行字节码
⏹由专门的命令行启动程序执行
⏹程序中有定义了main()方法的主类
Java applet
⏹不能独立运行,字节码必须嵌入HTML文档
⏹当浏览器调用含applet的Web页面时执行
⏹程序中含有java. applet. Applet 类的子类
4.编写一个application ,实现在屏幕上打印自己名字的功能。

class Test
{
public static void main(String[] args)
{
System.out.println(“张三”);
}
}
第二章课后习题(1)
一、选择题
1.下列变量定义错误的是。

A) int a; B) double b=4.5; C) boolean b=true; D)float f=9.8;
2.下列数据类型的精度由高到低的顺序是:
a)float,double,int,long
b)double,float,int,byte
c)byte,long,double,float
d)double,int,float,long
3.执行完下列代码后,
int a=3;
char b='5';
char c=(char)(a+b);
c的值是?
A)’8’ b)53 c)8 d)56
4.Unicode是一种_____________
A) 数据类型 B)java包 C)字符编码 D)java类
5.6+5%3+2的值是___________
A)2 B)1 C) 9 D)10
6.下面的逻辑表达式中合法的是__________
A)(7+8)&&(9-5) B)(9*5)||(9*7) C)9>6&&8<10 D)(9%4)&&(8*3) 7.java语言中,占用32位存储空间的是__________。

A)long,double
B)long,float
C)int,double
D)int,float
8.假设int a=1,b=2,c=3,以下语句正确的是___________。

D)c=c/float(a//b) b) c=c/((float a)/b)
c) c=(float)c/(a/b) d) c= c/(int)(a/(float)b)
9.2|3&5的值是________________。

A)1 B)2 C)3 D)5
10.指出下列正确的语句: (D)
A) byte i = 389;
B) long lv = i*3+4.5;
C) int x = 87L;
D) long l = 10;
11.指出下列类型转换中正确的是______________。

A)int i=’A’ B)long L=8.4f C)int i=(boolean)8.9 D)int i=8.3
12.以下的选项中能正确表示Java语言中的一个整型常量的是( )。

A) 12. B) -20 C) 1,000 D) 4 5 6
13.以下选项中,合法的赋值语句是( )。

(B)
A) a = = 1; B) ++ i;
C) a=a + 1= 5; D) y = int ( i );
14.若所用变量都已正确定义,以下选项中,非法的表达式是( )。

A) a != 4||b==1 B) 'a' % 3
C) 'a' = 1/2 D) 'A' + 32
15.对于一个三位的正整数 n,取出它的十位数字k(k为整型)的表达式是( )。

A) k = n / 10 % 10 B) k = ( n - n / 100 * 100 )%10
C) k = n % 10 D) k = n / 10
16.现有一变量声明为boolean aa;下面赋值语句中正确的是( )。

A)aa=false; B)aa=False; C)aa="true"; D)aa=0;
17.设有定义 int i = 6 ;,则执行以下语句后,i 的值为( )。

i += i - 1;
A) 10 B) 121 C) 11 D) 100
18.下列语句序列执行后,ch1 的值是( )。

char ch1=’A’,ch2=’W’;
if(ch1 + 2 < ch2 ) ++ch1;
A) ‘A’ B) ‘B’ C) ‘C’ D) B
19.下列语句序列执行后,i 的值是( )。

int i=8, j=16;
if( i-1 > j ) i--; else j--;
A) 15 B) 16 C) 7 D) 8
20.设有定义 float x=3.5f, y=4.6f, z=5.7f;则以下的表达式中,值为true的是( )。

A) x > y || x > z B) x != y
C) z > ( y + x ) D) x < y & ! ( x < z )
21.设有定义 int i=123; long j=456; 下面赋值不正确的语句是( )。

A) j=i; B) j=(long)i; C) i=(int)j; D) i=j;
22.下列的变量定义中,错误的是( )。

A) int i; B) int i=10000;
C) static int i=100; D) int 123_$;
23.以下的变量定义语句中,合法的是( )。

A) float $_*5= 3.4F; B) byte b1= 15678;
C) double a =10000;
D) int _abc_ = 3721L;
24.以下字符常量中不合法的是( )。

A) '|' B) '\' C) "\n" D) '我'
25.若以下变量均已正确定义并赋值,下面符合Java语言语法的语句是( )。

A) b = a!=7 ; B) a = 7 + b + c=9;
C) i=12.3* % 4; D) a = a + 7 = c + b;
26.执行下列程序段后,b, x, y的值分别是( )。

int x=6,y=8;
boolean b;
b=x>y&&++x==--y;
A) true , 6, 8 B) false , 7, 7
C) true, 7, 7 D) false, 6, 8
二、填空题
1.以下代码的输出结果是________________。

int i=9;
char c=’a’;
char d=(char)(c+i);
System.out.println(d);
2.面代码执行完后的输出是__________-。

int x=3;
int y=4;
boolean b=true;
System.out.println("b is:"+(b==(y<x)));
3.表达式(-100%3)的值是_________。

4.int x=2,y=4,z=3 则x>y&&z>y的结果是__________________。

5.写出定义双精度浮点型常量PI,值为3.1415926的语句:_______________________。

(答案: final double PI=3.1415926)
6.在Java语言中,逻辑常量只有true 和 ___________ 两个值。

7.表达式1/2*3的计算结果是_________。

(答案:0)
8.执行以下程序段后:a = ________, b = ________ 。

int a = 5, b;
b = ++a * 3;
9.Java中的的字符使用的是 16 位的________________ 编码。

10.Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float 和 __________两种具体类型。

11.当整型变量n的值不能被13除尽时,其值为 false 的Java语言表达式是
_____________ 。

12.表达式3/6 * 5的计算结果是________ 。

13.若a,b为int型变量且已分别赋值为2,4。

表达式!(++a!=b--)的值是_________ 。

14.若a,b为int型变量且已分别赋值为2,6。

表达式(a++)+(++b) +a*b的值是
________ 。

三、编程题
1.编写程序输出以下信息:
**************************
* Welcome To Java! *
**************************
2.编写程序计算半径为5的圆的面积,计算公式为:面积=半径*半径*圆周率
3.编写程序将华氏温度78度转换为摄氏温度,转换成的摄氏温度在屏幕上显示出来:转换公式为:摄氏度=(5/9)*(华氏度-32)
4.编写程序计算底边长为7、高为3的三角形的面积。

计算公式为:三角形面积=底边长*高/2
5.编写程序,打印汉字’我’在unicode码中对应的十进制编码:
第二章课后习题(1)答案
一、选择题
1.下列变量定义错误的是。

(D)
A) int a; B) double b=4.5; C) boolean b=true; D)float f=9.8;
2.下列数据类型的精度由高到低的顺序是:(B)
a)float,double,int,long
b)double,float,int,byte
c)byte,long,double,float
d)double,int,float,long
3.执行完下列代码后, (A)
int a=3;
char b='5';
char c=(char)(a+b);
c的值是?
A)’8’ b)53 c)8 d)56
4.Unicode是一种_____________(C)
A) 数据类型 B)java包 C)字符编码 D)java类
5.6+5%3+2的值是___________(D)
A)2 B)1 C) 9 D)10
6.下面的逻辑表达式中合法的是__________(C)
A)(7+8)&&(9-5) B)(9*5)||(9*7) C)9>6&&8<10 D)(9%4)&&(8*3) 7.java语言中,占用32位存储空间的是__________。

(D)
E)long,double
F)long,float
G)int,double
E)int,float
8.假设int a=3,b=2,c=1,以下语句正确的是___________。

(D)
H)c=c/float(a//b) b) c=c/((float a)/b)
c) c=(float)c/(a/b) d) c= c/(int)(a/(float)b)
9.2|3&5的值是________________。

(C)
A)1 B)2 C)3 D)5
10.指出下列正确的语句: (D)
A) byte i = 389;
B) long lv = i*3+4.5;
C) int x = 87L;
D) long l = 10;
11.指出下列类型转换中正确的是______________。

(A)
A)int i=’A’ B)long L=8.4f C)int i=(boolean)8.9 D)int i=8.3
12.以下的选项中能正确表示Java语言中的一个整型常量的是( )。

(B)
A) 12. B) -20 C) 1,000 D) 4 5 6
13.以下选项中,合法的赋值语句是( )。

(B)
A) a = = 1; B) ++ i;
C) a=a + 1= 5; D) y = int ( i );
14.若所用变量都已正确定义,以下选项中,非法的表达式是( )。

(C)
A) a != 4||b==1 B) 'a' % 3
C) 'a' = 1/2 D) 'A' + 32
15.对于一个三位的正整数 n,取出它的十位数字k(k为整型)的表达式是( )。

(A)
A) k = n / 10 % 10 B) k = ( n - n / 100 * 100 )%10
C) k = n % 10 D) k = n / 10
16.现有一变量声明为boolean aa;下面赋值语句中正确的是( )。

(A)
A)aa=false; B)aa=False; C)aa="true"; D)aa=0;
17.设有定义 int i = 6 ;,则执行以下语句后,i 的值为( )。

(C)
i += i - 1;
A) 10 B) 121 C) 11 D) 100
18.下列语句序列执行后,ch1 的值是( )。

(B)
char ch1=’A’,ch2=’W’;
if(ch1 + 2 < ch2 ) ++ch1;
A) ‘A’ B) ‘B’ C) ‘C’ D) B
19.下列语句序列执行后,i 的值是( )。

(D)
int i=8, j=16;
if( i-1 > j ) i--; else j--;
A) 15 B) 16 C) 7 D) 8
20.设有定义 float x=3.5f, y=4.6f, z=5.7f;则以下的表达式中,值为true的是( )。

(B)
A) x > y || x > z B) x != y
C) z > ( y + x ) D) x < y & ! ( x < z )
21.设有定义 int i=123; long j=456; 下面赋值不正确的语句是( )。

(D)
A) j=i; B) j=(long)i; C) i=(int)j; D) i=j;
22.下列的变量定义中,错误的是( )。

(D)
A) int i; B) int i=10000;
C) static int i=100; D) int 123_$;
23.以下的变量定义语句中,合法的是( )。

(C)
A) float $_*5= 3.4F; B) byte b1= 15678;
C) double a =10000;
D) int _abc_ = 3721L;
24.以下字符常量中不合法的是( )。

(C)
A) '|' B) '\' C) "\n" D) '我'
25.若以下变量均已正确定义并赋值,下面符合Java语言语法的语句是( )。

(A)
A) b = a!=7 ; B) a = 7 + b + c=9;
C) i=12.3* % 4; D) a = a + 7 = c + b;
26.执行下列程序段后,b, x, y的值分别是( )。

(D)
int x=6,y=8;
boolean b;
b=x>y&&++x==--y;
A) true , 6, 8 B) false , 7, 7
C) true, 7, 7 D) false, 6, 8
二、填空题
1.以下代码的输出结果是________________。

(答案:字母j)
int i=9;
char c=’a’;
char d=(char)(c+i);
System.out.println(d);
2.面代码执行完后的输出是__________-。

(答案:b is:false)
int x=3;
int y=4;
boolean b=true;
System.out.println("b is:"+(b==(y<x)));
3.表达式(-100%3)的值是_________。

(答案:-1)
4.int x=2,y=4,z=3 则x>y&&z>y的结果是__________________。

(答案:false)
5.写出定义双精度浮点型常量PI,值为3.1415926的语句:_______________________。

(答案: final double PI=3.1415926)
6.在Java语言中,逻辑常量只有true 和 ___________ 两个值。

(答案:false)
7.表达式1/2*3的计算结果是_________。

(答案:0)
8.执行以下程序段后:a = ________, b = ________ 。

(答案:6,18)
int a = 5, b;
b = ++a * 3;
9.Java中的的字符使用的是 16 位的________________ 编码。

(答案:Unicode)
10.Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float 和 __________两种具体类型。

(答案:double)
11.当整型变量n的值不能被13除尽时,其值为 false 的Java语言表达式是
_____________ 。

(答案:(n%3= =0))
12.表达式3/6 * 5的计算结果是________ 。

(答案:0)
13.若a,b为int型变量且已分别赋值为2,4。

表达式!(++a!=b--)的值是_________ 。

(答案:true)
14.若a,b为int型变量且已分别赋值为2,6。

表达式(a++)+(++b) +a*b的值是
________ 。

(答案:30)
三、编程题
1.编写程序输出以下信息:
**************************
* Welcome To Java! *
**************************
(答案:
public class Test{
public static void main(String[] args){
System.out.println("**************************");
System.out.println("* Welcome To Java! *");
System.out.println("**************************");
}
}

2.编写程序计算半径为5的圆的面积,计算公式为:面积=半径*半径*圆周率
(答案:
public class Test{
public static void main(String[] args){
double radius=5.0;
double area;
final double PI = 3.14159;
area= radius * radius*PI;
System.out.println(area);
}
}

3.编写程序将华氏温度78度转换为摄氏温度,转换成的摄氏温度在屏幕上显示出来:转换公式为:摄氏度=(5/9)*(华氏度-32)
(答案:
public class Test{
public static void main(String[] args){
double hs=78.0;
double cs;
cs=(5.0/9)*(hs-32);
System.out.println(cs);
}
}

4.编写程序计算底边长为7、高为3的三角形的面积。

计算公式为:三角形面积=底边长*高/2
(答案:
public class Test{
public static void main(String[] args){
double l=7;
double h=3;
double area=l*h/2;
System.out.println(area);
}
}

5.编写程序,打印汉字’我’在unicode码中对应的十进制编码:(答案:
public class Test{
public static void main(String[] args){
char c='我';
int i=c;
System.out.print(i);
}
}

第二章课后习题(2)
一、练习题
1.下列语句序列执行后,m 的值是。

int a=10, b=3, m=5;
if( a==b ) m+=a; else m=++a*m;
A) 15 B) 50 C) 55 D) 5
2.下列语句序列执行后,k 的值是。

int i=4,j=5,k=9,m=5;
if(i>j||m<k) k++; else k--;
A) 5 B) 10 C) 8 D) 9
3.下列语句序列执行后,k 的值是。

int i=10, j=18, k=30;
switch( j - i )
{ case 8 : k++;
case 9 : k+=2;
case 10: k+=3;
default : k/=j;
}
A) 31 B) 32 C) 2 D) 33
4.若a和b均是整型变量并已正确赋值,正确的switch语句是。

A) switch(a+b); { ...... } B) switch( a+b*3.0 ) { ...... }
C) switch a { ...... } D) switch ( a%b ) { ...... }
5.下列语句序列执行后,r 的值是。

char ch='8'; int r=10;
switch( ch+1 )
{
case '7': r=r+3;
case '8': r=r+5;
case '9': r=r+6; break;
default: r=r+8;
}
A) 13 B) 15 C) 16 D) 18
6.设int 型变量 a、b,float 型变量 x、y,char 型变量 ch 均已正确定义并赋值,正确的switch语句是。

A) switch (x + y) { ...... } B) switch ( ch + 1 ) { ...... }
C) switch ch { ...... } D) switch ( a + b ); { ...... }
7.下列语句序列执行后,k 的值是。

int x=6, y=10, k=5;
switch( x%y )
{
case 0: k=x*y;
case 6: k=x/y;
case 12: k=x-y;
default: k=x*y-x;
}
A) 60 B) 5 C) 0 D) 54
8.下列语句序列执行后,r 的值是。

char ch='A'; int r=6;
switch( ch+5 )
{
case 'A': r=r+3;
case 'B': r=r+5;
case 'C': r-=6; break;
default : r/=2;
}
A) 11 B) 3 C) 2 D) 9
9.以下for循环的执行次数是。

for(int x=0;(x==0)&(x>4);x++);
A)无限次 B)一次也不执行 C)执行4次 D)执行3次
10.下列语句序列执行后,j 的值是。

int j=1;
for( int i=5; i>0; i-=2 ) j*=i;
A) 15 B) 1 C) 60 D) 0
11.以下for循环的执行次数是。

for(int x=0;(x==0)&(x<4);x++);
A)无限次 B)一次 C)执行4次 D)执行3次
12.下列语句序列执行后,j 的值是。

int j=2;
for( int i=7; i>0; i-=2 ) j*=2;
A) 15 B) 1 C) 60 D) 32
13.以下由 for 语句构成的循环执行的次数是。

for ( int i = 0; true ; i++) ;
A)有语法错,不能执行 B)无限次
C)执行1次 D)一次也不执行
14.下列语句序列执行后,i 的值是。

int s=1,i=1;
while( i<=4 ) {s*=i;i++;}
A) 6 B) 4 C) 24 D) 5
15.下列语句序列执行后,j 的值是。

int j=8, i=6;
while( i >4 ) i-=2;
- -j;
A) 5 B) 6 C) 7 D) 8
16. 若有循环:
int x=5,y=20;
do { y-=x; x+=2; }while(x<y);
则循环体将被执行。

A) 2次 B) 1次 C) 0次 D) 3次
17.以下由do-while语句构成的循环执行的次数是。

int m = 8;
do { ++m; } while ( m < 8 );
A)一次也不执行 B)执行1次
C)8次 D)有语法错,不能执行
18.下列语句序列执行后,i的值是。

int i=10;
do { i/=2; } while( i>1 );
A) 1 B) 5 C) 2 D) 0
19.下列语句序列执行后,i的值是。

int i=10;
do { i/=2; } while( i--> 1 );
A) 1 B) 5 C) 2 D) -1
20.下列循环中,执行break outer语句后,所列()语句将被执行。

outer:
for(int i=1;i<10;i++)
{
inner:
for(int j=1;j<10;j++)
{
if(i*j>50)
break outer;
System.out.println(i*j);
}
next:
A)标号为inner的语句 B)标号为outer的语句
C)标号为next的语句 D)以上都不是
21.下列循环中,执行continue outer语句后,()说法正确。

outer:
for(int i=1;i<10;i++)
{
inner:
for(int j=1;j<10;j++)
{
if(i*j>50)
continue outer;
System.out.println(i*j);
}
}
A)程序控制在外层循环中并且执行外层循环的下一迭代
B)程序控制在内层循环中并且执行内层循环的下一迭代
C)执行标号为next的语句
D)以上都不是
22.下面是一个java应用程序(Application),它的功能是在屏幕上输出26个小写英文字母,其中每个字母相隔一个制表符,请完成程序填空。

public _____ Class1
{
public static void main( String args[] )
{
char c='a';
for (int i=1;i<=26;i++)
{ System.out.print(______); }
}
}
23.下面是一个java应用程序(Application),它的功能是计算 s=1+2+3+...+10 ,请完成程序填空。

public _____ Class1
{
public static void main( String args[] )
{
int s=0;
for (int i=1;i<=10;i++)
{
s+=______;
}
System.out.println("s="+s);
}
}
24.下面是一个java Application 的主类的定义,其功能是输出乘法口诀表第一列,请完成程序填空。

import java.io.*;
public class MyClass
{
public static void main(String[] args)
{
int j=1;
for(int i=1; _______; i++)
{
System.out.println(i+"*"+j+"="+_______);
}
}
}
25. 设ch1, ch2是 char 型变量:
if ( ch1 == ‘a’ )
{ if ( ch2 == ‘b’ )
System.out.print(" ch1=\’a\’ , ch2=\’b\’ ");
}
else
System.out.print(" ch1!=\’a\’ ");
System.out.println(" end ");
问题: 1)若执行前 ch1 的值为‘a’, ch2 的值为’c’ 该程序段输出是什么?
2)若执行前 ch1 的值为’w’, ch2 的值为’b’ 该程序段输出是什么?
3)若执行前 ch1 的值为’a’, ch2 的值为’b’ 该程序段输出是什么?
26.阅读下面的程序段,回答问题。

if ( x < 5 )
System.out.print(" one ");
else
{
if ( y < 5 )
System.out.print(" two ");
else
System.out.println(" three ");
}
问题:
1)若执行前 x=6, y=8,该程序段输出是什么?
2)若执行前 x=1, y=8,该程序段输出是什么?
27.下面的程序的输出结果是什么?
public class Mystery {
public static void main (String [] args )
{
int y, x = 1 , total = 0 ;
while (x<=10)
{
y = x*x;
System.out.println( y );
total += y;
System.out.println( “Total is ”+total );
}
}
}
28.确定以下各段程序当x=9 , y=11以及x=11 , y=9 时的输出结果。

(下面程序我们取消缩进格式)
a)
if ( x < 10 )
if ( y > 10 )
System.out.println(“*****”);
else
System.out.println(“#####”);
System.out.println(“$$$$$”);
b)
if ( x < 10 ) {
if ( y > 10 )
System.out.println(“*****”);
}
else {
System.out.println(“#####”);
System.out.println(“$$$$$”);
}
二、编程题:
1.用while循环,求1-100的和
2.编写程序输出1-20之间的偶数
3.水仙花数是指个位、十位和百位三个数的立方和等于这个三位数本身的数,编写程序求出所有的水仙花数。

4.编写一个Java应用程序,用循环结构打印如下的数值列表:
N 10*N 100*N 1000*N
1 10 100 1000
2 20 200 2000
3 30 300 3000
4 40 400 4000
5 50 500 5000
5.编写一个应用程序,计算1~10之间的各个整数的阶乘,并将结果输出到屏幕上。

6.用while循环求n2大于12000的最小数n。

7.打印2到10000的所有素数,每行显示8个素数。

8.写一个嵌套的for循环打印下列图案:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
9.编写JAVA Application,要求输出一个如下图的菱形。

*
* * *
* * * * *
* * *
*
10.编写一个主类Triangle,要求在它的main方法中写一个嵌套的for循环,通过这个嵌套的循环在屏幕上打印下列图案:
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2
1
1 2 3 4 5 4 3 2
1
1 2 3 4 5 6 5 4 3 2
1
1 2 3 4 5 6 7 6 5 4 3
2 1
1 2 3 4 5 6 7 8 7 6 5 4 3
2 1
11.输出1到100中能被7整除或者个位数是7的数字
12.有三个整型变量a、b和c,编写程序求3个数中的最大值
13.输出1~100这100个数
14.编写一个程序把十进制的数转换成一个二进制的数
第二章课后习题(2)答案
一、练习题
1.下列语句序列执行后,m 的值是( C)。

int a=10, b=3, m=5;
if( a==b ) m+=a; else m=++a*m;
A) 15 B) 50 C) 55 D) 5
2.下列语句序列执行后,k 的值是(B )。

int i=4,j=5,k=9,m=5;
if(i>j||m<k) k++; else k--;
A) 5 B) 10 C) 8 D) 9
3.下列语句序列执行后,k 的值是(C )。

int i=10, j=18, k=30;
switch( j - i )
{ case 8 : k++;
case 9 : k+=2;
case 10: k+=3;
default : k/=j;
}
A) 31 B) 32 C) 2 D) 33
4.若a和b均是整型变量并已正确赋值,正确的switch语句是(D )。

A) switch(a+b); { ...... } B) switch( a+b*3.0 ) { ...... }
C) switch a { ...... } D) switch ( a%b ) { ...... }
5.下列语句序列执行后,r 的值是( C)。

char ch='8'; int r=10;
switch( ch+1 )
{
case '7': r=r+3;
case '8': r=r+5;
case '9': r=r+6; break;
default: r=r+8;
}
A) 13 B) 15 C) 16 D) 18
6.设int 型变量 a、b,float 型变量 x、y,char 型变量 ch 均已正确定义并赋值,正确的switch语句是(B )。

A) switch (x + y) { ...... } B) switch ( ch + 1 ) { ...... }
C) switch ch { ...... } D) switch ( a + b ); { ...... }
7.下列语句序列执行后,k 的值是(D )。

int x=6, y=10, k=5;
switch( x%y )
{
case 0: k=x*y;
case 6: k=x/y;
case 12: k=x-y;
default: k=x*y-x;
}
A) 60 B) 5 C) 0 D) 54
8.下列语句序列执行后,r 的值是(B )。

char ch='A'; int r=6;
switch( ch+5 )
{
case 'A': r=r+3;
case 'B': r=r+5;
case 'C': r-=6; break;
default : r/=2;
}
A) 11 B) 3 C) 2 D) 9
9.以下for循环的执行次数是(B)。

for(int x=0;(x==0)&(x>4);x++);
A)无限次 B)一次也不执行 C)执行4次 D)执行3次
10.下列语句序列执行后,j 的值是( A )。

int j=1;
for( int i=5; i>0; i-=2 ) j*=i;
A) 15 B) 1 C) 60 D) 0
11.以下for循环的执行次数是( B )。

for(int x=0;(x==0)&(x<4);x++);
A)无限次 B)一次 C)执行4次 D)执行3次
12.下列语句序列执行后,j 的值是(D )。

int j=2;
for( int i=7; i>0; i-=2 ) j*=2;
A) 15 B) 1 C) 60 D) 32
13.以下由 for 语句构成的循环执行的次数是(B )。

for ( int i = 0; true ; i++) ;
A)有语法错,不能执行 B)无限次
C)执行1次 D)一次也不执行
14.下列语句序列执行后,i 的值是( D)。

int s=1,i=1;
while( i<=4 ) {s*=i;i++;}
A) 6 B) 4 C) 24 D) 5
15.下列语句序列执行后,j 的值是( C )。

int j=8, i=6;
while( i >4 ) i-=2;
- -j;
A) 5 B) 6 C) 7 D) 8
16. 若有循环:
int x=5,y=20;
do { y-=x; x+=2; }while(x<y);
则循环体将被执行(A )。

A) 2次 B) 1次 C) 0次 D) 3次
17.以下由do-while语句构成的循环执行的次数是(B)。

int m = 8;
do { ++m; } while ( m < 8 );
A)一次也不执行 B)执行1次
C)8次 D)有语法错,不能执行
18.下列语句序列执行后,i的值是(A )。

int i=10;
do { i/=2; } while( i>1 );
A) 1 B) 5 C) 2 D) 0
19.下列语句序列执行后,i的值是(D)。

int i=10;
do { i/=2; } while( i--> 1 );
A) 1 B) 5 C) 2 D) -1
20.下列循环中,执行break outer语句后,所列(C)语句将被执行。

outer:
for(int i=1;i<10;i++)
{
inner:
for(int j=1;j<10;j++)
{
if(i*j>50)
break outer;
System.out.println(i*j);
}
next:
A)标号为inner的语句 B)标号为outer的语句
C)标号为next的语句 D)以上都不是
21.下列循环中,执行continue outer语句后,(A)说法正确。

outer:
for(int i=1;i<10;i++)
{
inner:
for(int j=1;j<10;j++)
{
if(i*j>50)
continue outer;
System.out.println(i*j);
}
}
A)程序控制在外层循环中并且执行外层循环的下一迭代
B)程序控制在内层循环中并且执行内层循环的下一迭代
C)执行标号为next的语句
D)以上都不是
22.下面是一个java应用程序(Application),它的功能是在屏幕上输出26个小写英文字母,其中每个字母相隔一个制表符,请完成程序填空。

(class (c++)+"\t" 或 (c++)+'\t')
public _____ Class1
{
public static void main( String args[] )
{
char c='a';
for (int i=1;i<=26;i++)
{ System.out.print(______); }
}
}
23.下面是一个java应用程序(Application),它的功能是计算 s=1+2+3+...+10 ,请完成程序填空。

(class i)
public _____ Class1
{
public static void main( String args[] )
{
int s=0;
for (int i=1;i<=10;i++)
{
s+=______;
}
System.out.println("s="+s);
}
}
24.下面是一个java Application 的主类的定义,其功能是输出乘法口诀表第一列,请完成程序填空。

(i<=9 j*i)
import java.io.*;
public class MyClass
{
public static void main(String[] args)
{
int j=1;
for(int i=1; _______; i++)
{
System.out.println(i+"*"+j+"="+_______);
}
}
}
25. 设ch1, ch2是 char 型变量:
if ( ch1 == ‘a’ )
{ if ( ch2 == ‘b’ )
System.out.print(" ch1=\’a\’ , ch2=\’b\’ ");
}
else
System.out.print(" ch1!=\’a\’ ");
System.out.println(" end ");
问题: 1)若执行前 ch1 的值为‘a’, ch2 的值为’c’ 该程序段输出是什么? (end) 2)若执行前ch1 的值为’w’, ch2 的值为’b’ 该程序段输出是什么?(ch1=’a’end)
3)若执行前ch1 的值为’a’, ch2 的值为’b’ 该程序段输出是什么? (ch1=’a’,ch2=’b’end)
26.阅读下面的程序段,回答问题。

if ( x < 5 )
System.out.print(" one ");
else
{
if ( y < 5 )
System.out.print(" two ");
else
System.out.println(" three ");
}
问题:
1)若执行前 x=6, y=8,该程序段输出是什么?(three)
2)若执行前 x=1, y=8,该程序段输出是什么? (one)
27.下面的程序的输出结果是什么?
public class Mystery {
public static void main (String [] args )
{
int y, x = 1 , total = 0 ;
while (x<=10)
{
y = x*x;
System.out.println( y );
total += y;
System.out.println( “Total is ”+total );
}
}
}
答案:
1
4
9
16
25
36
49
64
81
100
Total is 385
28.确定以下各段程序当x=9 , y=11以及x=11 , y=9 时的输出结果。

(下面程序我们取消缩进格式)
a)
if ( x < 10 )
if ( y > 10 )
System.out.println(“*****”);
else
System.out.println(“#####”);
System.out.println(“$$$$$”);
b)
if ( x < 10 ) {
if ( y > 10 )
System.out.println(“*****”); }
else {
System.out.println(“#####”); System.out.println(“$$$$$”); }
答案:
a)
当x=9 , y=11 :
*****
$$$$$
当x=11 , y=9 :
$$$$$
b)
当x=9 , y=11 :
*****
当x=11 , y=9 :
#####
$$$$$
编程题:
1.用while循环,求1-100的和
public class Exercise2_1
{
public static void main(String[ ] args)
{
int I = 1;
int sum = 0;
while(i<=100)
{
sum += i;
i++;
}
System.out.println(sum);
}
}
2.编写程序输出1-20之间的偶数
public class DoWhileTest {
public static void main(String[] args) {
int i=1;
do
{
if(i%2==0)
System.out.println(i+" ");
i++;
}while(i<=20);
}
}
3.水仙花数是指个位、十位和百位三个数的立方和等于这个三位数本身的数,编写程序求出所有的水仙花数。

答案:
public class Narcissus
{
public static void main(String args[])
{
int i, j, k;
for(int num = 101; num <=999; num++)
{
i = num % 10; //个位数
j =num/ 10 % 10; //十位数
k = num / 100; //百位数
if(i * i * i + j * j * j + k * k * k == num)
System.out.print(num + "\t");
}
}
}
4.编写一个Java应用程序,用循环结构打印如下的数值列表:
N 10*N 100*N 1000*N
➢ 1 10 100 1000
➢ 2 20 200 2000
➢ 3 30 300 3000
➢ 4 40 400 4000
➢ 5 50 500 5000
答案:
public class Table {
public static void main(String [] args) {
int n = 1;
System.out.println(“N\t10*N\t100*N\t1000*N\n”);
while ( n <= 5) {
System.out.println (n +”\t”+(10*n) +”\t”+(100*n) +”\t”+(1000*n));
n++;
}
}
}
5.编写一个应用程序,计算1~10之间的各个整数的阶乘,并将结果输出到屏幕上。

答案:
public class Factorial {
public static void main (String [] args){
for (int number =1 ; number <=10 ; number++) {
int factorial = 1;
for (it smaller = 1; smaller <= number ; smaller++)
factorial *= smaller ;
System.out.println(number +”! is ”+ factorial);
}
}
}
6.用while循环求n2大于12000的最小数n。

public class Exercise2_6
{
public static void main(String[] args)
{
int i = 1;
while (i*i <= 12000 )
{
i++;
}
System.out.println("This number is "+i); }
}
7.打印2到10000的所有素数,每行显示8个素数。

public class Exercise2_7
{
public static void main(String[] args)
{
boolean isPrime=false;
int count=0;
int i=2;
while(i<=10000)
{
isPrime=true;
int j=2;
while(j<i/2)
{
if(i%j==0)
{
isPrime=false;
break;
}
j++;
}
if(isPrime)
{
count++;
if(count%8==0)
System.out.println(" "+i);
else
System.out.print(" "+i);
}
i++;
}
}
}
8.写一个嵌套的for循环打印下列图案:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
答案:
public class Exercise2_9
{
public static void main(String[] args)
{
for(int i=1;i<6;i++)
{
for(int j=1;j<=i;j++)
if(i==j)
{
System.out.println(i);
}
else
{
System.out.print(j+" ");
}
}
}
}
9.编写JAVA Application,要求输出一个如下图的菱形。

*
* * *
* * * * *
* * *
*
答案:
import java.io.*;
public class Star
{
public static void main(String args[])
{
int num = 5;
for(int i = 1;i <= num;i +=2)
{
for(int j = 1;j < num - i;j+=2) System.out.print(" ");
for(int k = 1;k <= i;k++) System.out.print("* ");
System.out.println();
}
for(int i = num - 2;i >= 1;i -=2)
{
for(int j = 1; j < num - i;j+=2) System.out.print(" ");
for(int k = 1;k <= i;k++) System.out.print("* ");
System.out.println();
}
}
}
10.编写一个主类Triangle,要求在它的main方法中写一个嵌套的for循环,通过这个嵌套的循环在屏幕上打印下列图案:
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2
1
1 2 3 4 5 4 3 2
1
1 2 3 4 5 6 5 4 3 2
1
1 2 3 4 5 6 7 6 5 4 3
2 1
1 2 3 4 5 6 7 8 7 6 5 4 3
2 1
答案:
public class Triangle
{
public static void main(String[] args)
{
for(int row =0; row <=7; row ++)
{
//print blanks
for(int column =1; column <=7- row; column ++)
System.out.print(" ");
//print left half of the row
for(int column =1; column <= row +1; column ++)
{
System.out.print(" "+ column);
}
//print right half of the row
for(int column = row ; column >0; column --)
{
System.out.print(" "+ column);
}
//start a new line
System.out.println();
}
}
}
11.输出1到100中能被7整除或者个位数是7的数字
public class Ex2_11
{
public static void main(String[] args)
{
for(int i=1;i<=100;i++)
{
if((i%7==0)||(i%10==7))
System.out.println(i);
}
}
}
12.有三个整型变量a、b和c,编写程序求3个数中的最大值public class Ex2_12
{
public static void main(String[] args)
{
int a=5,b=6,c=7;
int max=0;
if(a>b)
max = a;
else
max = b;
if(max<c)
max = c;
System.out.println(max);
}
}
13.输出1~100这100个数
public class Ex2_13
{
public static void main(String[] args)
{
for(int i=1;i<=100;i++)
{
System.out.println(i);
}
}
}
14.编写一个程序把十进制的数转换成一个二进制的数public class Ex2_14
{
public static void main(String[] args)
{
int number = 26;
int temp = 0;
String result =””;
while(number!=0)
{
temp = number%2;
result = temp + result;
number = number / 2;
}
System.out.println(result);
}
}
第三章课后习题一、填空题
1. 以下方法fun的功能是求两参数之积。

int fun ( int a, int b ) { __________________; }
2. 以下方法fun的功能是求两参数之积。

float fun ( int a, double b ) { __________________; }
3. 以下方法fun的功能是求两参数的最大值。

int fun ( int a, int b ) { __________________; }
4. 以下方法m的功能是求两参数之积的整数部分。

int m ( float x, float y ) { __________________; }
5. 下面是用户程序对 Applet 类中方法 paint( ) 的重新定义。

public ___ paint(Graphics ____)
{ call.drawString("Hello,java!",10,20); }
6.下面方法的功能是判断一个整数是否为偶数,将程序补充完整。

public ________ isEven(int a)
{ if(a%2==0)
return _____;
else
return false;
}
7.同一个类中多个方法具有相同的方法名,不同的_____________称为方法的重载。

二、选择题
1.下列方法定义中,正确的是()。

A) int x( int a,b ) { return (a-b); }
B) double x( int a,int b) { int w; w=a-b; }
C) double x( a,b ) { return b; }
D) int x( int a,int b) { return a-b; }
2.下列方法定义中,正确的是()。

A) void x( int a,int b ); { return (a-b); }
B) x( int a,int b) { return a-b; }
C) double x { return b; }
D) int x( int a,int b) { return a+b; }
3. 下列方法定义中,不正确的是)。

A) float x( int a,int b ) { return (a-b); }
B) int x( int a,int b) { return a-b; }
C) int x( int a,int b ); { return a*b; }
D) int x(int a,int b) { return 1.2*(a+b); }
4. 下列方法定义中,正确的是()。

A) int x( ){ char ch='a'; return (int)ch; }
B) void x( ){ ...return true; }
C) int x( ){ ...return true; }
D) int x( int a, b){ return a+b; }
5. 列方法定义中,方法头不正确的是()。

A)public int x( ){ ... }
B)public static int x( double y ){ ... }
C)void x( double d ) { ... }
D)public static x( double a ){ ... }
6.在某个类中存在一个方法:void getSort(int x),以下能作为这个方法的重载的声明的是()。

A)public getSort(float x) B)int getSort(int y)
C)double getSort(int x,int y) D)void get(int x,int y)
7.在某个类中存在一个方法:void sort(int x),以下不能作为这个方法的重载的声明的是()。

A)public float sort(float x) B)int sort(int y)
C)double sort(int x,int y) D)void sort(double y)
8. 为了区分类中重载的同名的不同方法,要求()。

A) 采用不同的形式参数列表 B) 返回值类型不同
C) 调用时用类名或对象名做前缀 D) 参数名不同
三、编程题
1.编写一个方法,用来计算并输出:
1-1/2+1/3-1/4+………+(-1)(n-1) *1/n,其中n是用户输入的正整数。

2.编写方法,输出n以内的所有完数。

完数:如果一个数恰好等于它的因子之和,则这个数就是“完数”。

例如:6的因子是1、2、3.而6=1+2+3,因此6就是完数。

4.编写方法,求如下数值:1+1/3+ … + … +1/(2n-1);
5. 编写方法求一个double数值的向右取整,再写一个方法求它的向左取整。

数d的
向右取整是大于等于d的最小整数,d的向左取整是小于d的最大整数。

例如,5.4的向右取整是整数6而向左取整是5。

6.编写方法,计算一个整数各位数字的和。

使用如下方法说明:
public static int sumDigits(long n)
例如:sumDigits(234)返回2+3+4=9
第三章课后习题答案
一、填空题答案
1.以下方法fun的功能是求两参数之积。

(return a*b)
int fun ( int a, int b ) { __________________; }
2. 以下方法fun的功能是求两参数之积。

(return (float)a*b)
float fun ( int a, double b ) { __________________; }
3. 以下方法fun的功能是求两参数的最大值。

(return a>b?a:b)
int fun ( int a, int b ) { __________________; }
4. 以下方法m的功能是求两参数之积的整数部分。

(return (int)(a*b))。

相关文档
最新文档