JAVA各章习题及答案 下载本文

long fact = 1, sum = 0; do{ fact *= i; sum += fact; i++;

} while(i<=100) ;

System.out.println(\ } }

【运行结果】

sum = 1005876315485501977 6.编程序,求

?kk?1103

【编程分析】本例主要考查利用任意一种循环结构实现给定数列求和的程序设计方法。实现方法和前几例类似,在此不再赘述。 【参考程序】

public class X3_4_6 {

public static void main(String[] args) { int k, sum = 0;

for(k=1;k<=10;k++) sum += Math.pow(k,3);

System.out.println(\ } }

【运行结果】

sum = 3025

7.编写打印“九九乘法口诀表”的程序。

【编程分析】本例主要考查利用循环嵌套进行程序设计的方法。“九九乘法口诀表”既涉及到行,又涉及到列,因此需要利用循环嵌套来实现,实现时还需要注意输出格式。 【参考程序】

public class X3_4_7 {

public static void main(String[] args) { int i, j;

for(i=1;i<10;i++){ for(j=1;j<=i;j++) System.out.print(i + \ System.out.println(\ } } }

【运行结果】

1x1=1

2x1=2 2x2=4

17

3x1=3 3x2=6 3x3=9

4x1=4 4x2=8 4x3=12 4x4=16

5x1=5 5x2=10 5x3=15 5x4=20 5x5=25

6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36

7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49

8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64

9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81 8.水仙花数是指其个位、十位和百位三个数的立方和等于这个三位数本身,求出所有的水仙花数。 【编程分析】本例主要考查如何利用循环结构将一个多位整数拆分成多个个位数的程序设计方法。在求“水仙花数”过程中,需要将这个百位的数拆分成3个个位数。 【参考程序】

public class X3_4_9 {

public static void main(String[] args) { for(int i=100;i<=999;i++){ int k = i; int gw = k % 10; k /= 10; int sw = k % 10; k /= 10; int bw = k; int sum = (int)(Math.pow(gw,3)+Math.pow(sw,3)+Math.pow(bw,3)); if(i == sum) System.out.print(i+ \ } } }

【运行结果】

153 370 371 407

9.编写一个程序,接受用户输入的两个数据为上、下限,然后输出上、下限之间的所有素数。

【编程分析】本例主要考查如何利用Java语言的流程控制语句解决求素数的问题。由于素数是除了能被1和它本身整除外,不能被其他任何整数整除的自然数。假设要判断某数i是否为素数,可以利用循环语句让该数分别除以2~i-1之间的所有数,如果一直不能整除,则i是素数,否则不是。如果让i分别除以2~i/2之间的所有数,如果一直不能整除,则i也是素数,因为任何数都不可能被大于它一半的数整除,这样可以减少循环次数,提高程序运行效率。另外,数学原理证明,如果让i分别除以2~(int)i之间的所有数,如果一直不能整除,则i也是素数,这样就可以大大减少循环次数,提供程序效率。 【参考程序】

import java.io.*;

public class X3_4_10 {

public static void main(String[] args) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in);

18

BufferedReader br = new BufferedReader(isr); int top, bottom, i, j; System.out.print(\请输入上限:\ top = Integer.parseInt(br.readLine()); System.out.print(\请输入下限:\ bottom = Integer.parseInt(br.readLine()); if(topk) System.out.print(i + \ } System.out.println(); } }

【运行结果】

请输入上限:500 请输入下限:100

101 103 107 109 113 127 131 137 139 151 157 163 167 173 179 181 191 193 199 211 223 227 229 233 239 241 251 263 269 271 277 281 283 293 307 311 317 331 337 347 349 353 359 367 373 383 389 397 401 409 419 421 431 433 443 449 457 461 463 467 479 487 491 第4章

一、选择题

1.下列哪种类成员修饰符修饰的变量只能在本类中被访问?( D ) (A)protected (B)public (C)default (D)private 【解析】只有私有访问权限修饰符才能限制变量只能在本类中被访问。 2.在Java语言中,哪一个包中的类是自动导入的?( A ) A)java.lang B)java.awt C)java.io D)java.applet

【解析】只有java.lang包中的类能够被自动导入。 3.给出下面的程序代码:

public class X4_1_3 { private float a;

149 197 257 313 379 439 499

19

public static void m ( ){ }

}

如何使成员变量a被方法m( )访问( C )

(A)将private float a改为protected float a(B)将private float a改为public float a (C)将private float a改为static float a (D)将private float a改为float a

【解析】static类型的方法只能访问static类型的数据成员。

4.有一个类B,下面为其构造方法的声明,正确的是( B )。 (A)void B(int x) {} (B)B(int x) {} (C)b(int x) {} (D)void b(int x) {}

【解析】构造方法没有类型,且方法名与类名相同。

5.下面关于类的说法,不正确的是( C )。 (A)类是同种对象的集合和抽象 (B)类属于Java语言中的复合数据类型 (C)类就是对象 (D)对象是Java语言中的基本结构单位

【解析】类是对象的抽象,对象是类的实例,因此类和对象是有区别的。

6.下面关于方法的说法,不正确的是( C )。 (A)Java中的构造方法名必须和类名相同

(B)方法体是对方法的实现,包括变量声明和合法语句

(C)如果一个类定义了构造方法,也可以用该类的默认构造方法 (D)类的私有方法不能被其他类直接访问

【解析】类中一旦用户定义了构造方法,该类默认的构造方法就不存在了,除非用户再自定义该类的默认构造方法。

7.关于内部类,下列说法不正确的是( A )。 (A)内部类不能有自己的成员方法和成员变量 (B)内部类可用private或protected修饰符修饰

(C)内部类可以作为其他类的成员,而且可访问它所在的类的成员 (D)除static内部类外,不能在类内声明static成员

【解析】内部类也可以有自己的成员方法和变量。

8.定义外部类时不能用到的关键字是( C )。 (A)final (B)public (C)protected (D)abstract 【解析】定义外部类不能使用protected修饰符。

9.为AB类定义一个无返回值的方法f,使得使用类名就可以访问该方法,该方法头的形式为( D )

(A)abstract void f() (B)public void f() (C)final void f() (D)static void f()

【解析】只有static类型的方法才可以直接使用类名来引用。

10.定义一个公有double型常量PI,哪一条语句最好?( B )

(A)public final double PI; (B)public final static double PI=3.14; (C)public final static double PI; (D)public static double PI=3.14;

【解析】用public final static来定义常量,既可以节省存储空间,又可以保证数值不会被改变。 二、填空题

1. 对象 是对事物的抽象,而 类 是对对象的抽象和归纳。

2.从用户的角度看,Java源程序中的类分为两种: 系统定义的类 和 用户自己定义的类 。

20