去,直至该条件不满足为止,最后输出a的值。从循环过程来看,只有b为偶数时才加到a中去,因此a的值应该是“2+4+6+…+100”。 7. public class X3_3_7 {
public static void main(String[] args) { for(int i=1; i<=10; i++){ if(i<=5) continue; System.out.print(i + \ } } }
【运行结果】6 7 8 9 10
【程序解析】本程序主要考查continue语句的使用情况。由于“if(i<=5) continue;”语句,使得for循环变量i从1到5的循环过程中都不能执行“System.out.print(i + \”,只有i的值从6到10时才执行该语句,因此输出结果为“6 7 8 9 10”。 8. public class X3_3_8 {
public static void main(String[] args) { char ch='7'; int r=10;
switch(ch+1){ case '7': r += 7; case '8': r += 8; case '9': r += 9; default: }
System.out.print(r); } }
【运行结果】27
【程序解析】本程序主要考查switch…case语句,由于“ch+1”的值是'8',因此程序执行了“r += 8;”语句,由于该语句后没有break,因此又执行了后面的“r += 9;”语句,由于r的初值为10,因此r最后的值为27。 9. public class X3_3_9 {
public static void main(String[] args) { lable: for(int i=0; i<3; i++){
for(int j=0; j<3; j++){
if(i==j) continue lable; System.out.print(i*3+j+\ } System.out.print(\ } } }
【运行结果】3 6 7
【程序解析】本程序主要考查continue lab语句的运行情况。当程序执行到“continue
11
lable;”语句时,程序直接跳转到外层for循环,执行下一次循环。 10. public class X3_3_10 {
public static void main(String[] args) { int j=0;
a1: for(int i=3; i>0; i--){ j += i;
a2: for(int k=1; k<3;k++){ j *= k; if(i==k) break a1; } }
System.out.println(\ } }
【运行结果】j= 16
【程序解析】本程序主要考查break lab语句的执行情况。当程序执行到“break a1;”时,程序流程直接跳出a1所在的外层for循环,输出j的值。 四、编写程序
1.利用if语句,根据下列函数编写一个程序,当键盘输入x值时,求出并输出y的值。
x (x<=1) 3x-2 (1
【参考程序】 import java.io.*;
public class X3_4_1 {
public static void main(String[] args) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); int x, y; x = Integer.parseInt(br.readLine()); if(x<=1) y = x; else if(x<10) y = 3*x - 2; else y=4*x; System.out.println(\ } }
【运行结果】
9 x = 9 y = 25
3.利用for循环,计算1+3+7+??+(220-1)的和。
12
【编程分析】本例主要考查利用for循环求一个数列的和的编程方法。数列的项数和每一项的值都已知,因此直接利用for循环和数学类中的相应方法即可实现。 【参考程序】
public class X3_4_3 {
public static void main(String[] args) { int i, sum=0;
for(i=1; i<21; i++) sum += Math.pow(2,i) - 1; System.out.println(\ } }
【运行结果】
sum = 2097130 4.已知S?1?11111??????,利用while循环编程求解n=100时的S234n?1n值。
【编程分析】本例主要考查利用while循环实现对一个数列进行加、减运算的编程方法。由于项数已经确定,因此数列的首项和末项已知,但是由于加减交替出现,可以利用一个变量sign来确定符号,设sign初始值为1,循环一次让它变一次符号,从而实现符号的交替变化。 【参考程序】
public class X3_4_4 {
public static void main(String[] args) { int i=1, n = 100;
double sign = 1, sum = 0; while(i<=n){ double k = sign/i; sum += k; i++; sign = -sign; }
System.out.println(\ } }
【运行结果】
S = 0.688172179310195
5.利用do…while循环,计算1!+2!+3! +??+100!的和。
【编程分析】本例主要考查利用do…while循环实现数列相加的程序设计方法。由于每一项都是一个阶乘,所以在循环过程中先求阶乘,然后再相加。 【参考程序】
public class X3_4_5 {
public static void main(String[] args) { int i=1;
long fact = 1, sum = 0;
13
do{ fact *= i; sum += fact; i++;
} while(i<=100) ;
System.out.println(\ } }
【运行结果】
sum = 1005876315485501977
9.水仙花数是指其个位、十位和百位三个数的立方和等于这个三位数本身,求出所有的水仙花数。
【编程分析】本例主要考查如何利用循环结构将一个多位整数拆分成多个个位数的程序设计方法。在求“水仙花数”过程中,需要将这个百位的数拆分成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
第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 {
14
private float a; 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来定义常量,既可以节省存储空间,又可以保证数值不会被改变。
15