当前位置:首页 > (部选)JAVA各章习题及答案
1x1=1
2x1=2 2x2=4
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
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) } } } 【运行结果】
153 370 371 407
10.编写一个程序,接受用户输入的两个数据为上、下限,然后输出上、下限之间的所有素数。
【编程分析】本例主要考查如何利用Java语言的流程控制语句解决求素数的问题。由于素数是除了能被1和它本身整除外,不能被其他任何整数整除的自然数。假设要判断某数i是否为素数,可以利用循环语句让该数分别除以2~i-1之间的所有数,如果一直不能整除,则i是素数,否则不是。如果让i分别除以2~i/2之间的所有数,如果一直不能整除,则i也是素数,因为任何数都不可能被大于它一半的数整除,这样可以减少循环次数,提高程序运行效率。另外,数学原理证明,如果让i分别除以2~(int)如果一直不能整除,则i也是素数,这样就可以大大减少循环次数,提供程序效率。 【参考程序】
import java.io.*;
public class X3_4_10 {
public static void main(String[] args) throws IOException{ 13
InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); int top, bottom, i, j;
System.out.print(\请输入上限:\top = Integer.parseInt(br.readLine()); System.out.print(\请输入下限:\System.out.print(i+ \
i之间的所有数,
}
bottom = Integer.parseInt(br.readLine()); if(top for(i=bottom; i<=top; i++){ } System.out.println(); int k = (int)Math.sqrt(i); for(j=2; j<=k; j++){ } if(j>k) System.out.print(i + \ if(i % j == 0) break; System.out.println(\输入的上、下限不正确!\System.exit(1); } 【运行结果】 请输入上限:500 请输入下限:100 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 第四章 一、选择题 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 { } 如何使成员变量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 )。 14 private float a; public static void m ( ){ } (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源程序中的类分为两种: 系统定义的类 和 用户自己定义的类 。 3.一个类主要包含两个要素: 数据成员 和 成员方法 。 4.创建包时需要使用关键字 package 。 5.类中的 构造 方法是一个特殊的方法,该方法的方法名和类名相同。 6.如果用户在一个自定义类中未定义该类的构造方法,系统将为这个类定义一个默认构造方法。这个方法没有 形式参数 ,也没有任何 具体语句 ,不能完成任何操作。 7.静态数据成员被保存在类的内存区的 公共存储 单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是 相同 (相同/不同)的数值。 8.静态数据成员既可以通过 对象名 来访问,也可以通过 类名 直接访问它。 9.定义常量时要用关键字 final ,同时需要说明常量的 数据类型 并指出常量的 具体值 。 10.方法体内定义变量时,变量前不能加 修饰符 ;局部变量在使用前必须 明确赋值 ,否则编译时会出错;而类变量在使用前可以不用赋值,它们都有一个 默认 的值。 11.static方法中只能引用 static 类型的数据成员和 static 类型的成员方法;而非static类型的方法中既可以引用 static 类型的数据成员和成员方法,也可以引用非static 类型的数据成员和成员方法。 12.引用static类型的方法时,可以使用 类名 做前缀,也可以使用 对象名 做前缀。 13.当程序中需要引用java.awt.event包中的类时,导入该包中类的语句为 import java.awt.event.*。 14.定义类时需要 class 关键字,继承类时需要 extends 关键字,实现接口时需要关键字 implements 。 三、编程题 1.编一个程序,程序中包含以下内容: 一个圆类(Circle),包含: 属性:圆半径radius;常量:PI。 方法:构造方法;求面积方法area();求周长方法:perimeter()。 主类(X4_3_1),包含: 15 主方法main(),在主方法中创建圆类的对象c1和c2并初始化,c1的半径为100,c1的半径为200,然后分别显示两个圆的面积和周长。 【编程分析】按照要求创建Circle类,其中的半径可以定义为int类型,PI定义为final static double类型,求面积和周长的方法都应定义为double类型,在构造方法中对radius进行初始化。 【参考答案】 public class X4_3_1 { public static void main(String[] args) { Circle c1 = new Circle(100); Circle c2 = new Circle(200); System.out.println(\ System.out.println(\ } } class Circle{ } 【运行结果】 c1.area() = 31400.0 c1.perimenter() = 628.0 c2.area() = 125600.0 c2.perimenter() = 1256.0 2.编一个程序,程序中包含以下内容: 一个学生类(Student),包含: 属性:学号s_No,姓名s_Name,性别s_Sex,年龄s_Age。 方法:构造方法,显示学号方法showNo(),显示姓名方法showName(),显示性别方法showSex(),显示年龄方法showAge(),修改年龄方法modifyAge()。 主类(X4_3_2),包含: 主方法main(),在其中创建两个学生对象s1和s2并初始化,两个对象的属性自行确定,然后分别显示这两个学生的学号、姓名、性别、年龄,然后修改s1的年龄并显示修改后的结果。 【编程分析】按照要求首先编写Student类,其中的属性和方法根据实际情况选择相应的类型和权限修饰符,要通过方法来修改年龄,因此s_Age属性应该为private类型,否则可以直接在主类中进行修改,就没有必要使用方法了。 【参考答案】 public class X4_3_2 { public static void main(String[] args) { Student s1 = new Student(101,\张三\男\ Student s2 = new Student(102,\李四\女\ System.out.println(\第1个学生的信息为:\ s1.showNo(); s1.showName(); 16 int radius; final static double PI=3.14; Circle(int r){ } double area(){ } double perimeter(){ } return 2*PI*radius; return PI*radius*radius; radius = r;
共分享92篇相关文档