1、二级 JAVA 机试 38 及答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)1.下面的程序的功能是求 1100 的奇数的和及该和的平均值。请在程序的每条横线处填写一个语句,程序的功能完整。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 public class SumAndAve public static void main(String args ) int count=0,sum=0,ave=0; for(int i=1;i=100;_) if(_) continue; else _ sum
2、=sum+i; ave=sum/count; System.out.println(“sum=“+sum); System.out.println(“ave=“+ave); (分数:30.00)_二、B2简单应用题/B(总题数:1,分数:40.00)2.请完成下列 Java 程序:读取自己的源文件并把它压缩成 GZIP 文件。 注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。 import java.io.*; import java.util.zip.*; public class exl6 2 public static void mainString a
3、rg) ex16_2 obj16_2 = new ex16_2(); obj16_2.doZip(“ex16_2.java“,“ex16_2.gzip“) public void doZip(String strIn,String strOut FileInputStream in; FileOutputStream out; GZIPOutputStream gzip; int nFileLength; byte barray = new byte10; try in = new FileInputStream(strIn); out = new FileOutputStream(strOu
4、t); gzip = new GZIPOutputStream(out); while(nFileLength = in.read(barray, 0 barray.length) 0) _; _; gzip.close(); catch(Exception e) e.printStackTrace(); (分数:40.00)_三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是绘制三维矩形以使该矩形面凹下,并将图像放入凹下的矩形面中。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 程序运行
5、结果如下: (分数:30.00)_二级 JAVA 机试 38 答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)1.下面的程序的功能是求 1100 的奇数的和及该和的平均值。请在程序的每条横线处填写一个语句,程序的功能完整。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 public class SumAndAve public static void main(String args ) int count=0,sum=0,ave=0; for(int i=1;i=100;_) if(_) cont
6、inue; else _ sum=sum+i; ave=sum/count; System.out.println(“sum=“+sum); System.out.println(“ave=“+ave); (分数:30.00)_正确答案:()解析:i+=2 i%2=0 +count; 解析 本题主要考查 for 循环语句的用法。解答本题的关键是熟练使用for 循环语句。在本题中,for(int i=1;i=100;i+=2;)语句是用来控制被求的奇数,i+=2;语句是使循环变量递增 2,即所求的奇数,在程序中用到的 count 计数器是记录所求奇数的个数。二、B2简单应用题/B(总题数:1,分
7、数:40.00)2.请完成下列 Java 程序:读取自己的源文件并把它压缩成 GZIP 文件。 注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。 import java.io.*; import java.util.zip.*; public class exl6 2 public static void mainString arg) ex16_2 obj16_2 = new ex16_2(); obj16_2.doZip(“ex16_2.java“,“ex16_2.gzip“) public void doZip(String strIn,String s
8、trOut FileInputStream in; FileOutputStream out; GZIPOutputStream gzip; int nFileLength; byte barray = new byte10; try in = new FileInputStream(strIn); out = new FileOutputStream(strOut); gzip = new GZIPOutputStream(out); while(nFileLength = in.read(barray, 0 barray.length) 0) _; _; gzip.close(); cat
9、ch(Exception e) e.printStackTrace(); (分数:40.00)_正确答案:()解析:gzipwrite(barray,0,nFileLength) inclose() 解析 本题主要考查文件的读写操作。解题关键是熟悉文件读写操作,熟悉 GZIP 的编程模式,使用 FileInputStream 读取待压缩的文件,使用GZIPOutputStream 进行压缩,除了压缩之外还有解压缩,但是编程的模式一样,一旦压缩数据流被打开,可以象其他数据流一样进行读写。本题中,第 1 个空,熟练掌握压缩数据流的写操作;第 2 今空,关闭输出文件刷新输出缓冲器很重要,因为程序没有
10、执行正常刷新数据的垃圾回收,所以就会暂停程序的执行。三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是绘制三维矩形以使该矩形面凹下,并将图像放入凹下的矩形面中。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 程序运行结果如下: (分数:30.00)_正确答案:()解析:new MediaTracker(this) g.drawImage(img,x,y,this) g.draw3DRect(-x,-y,w+(2*i),h+(2*i),false) 解析 本题主要考查 Applet 图形绘制
11、和图像显示。解题关键是掌握绘制三维矩形的基本方法,掌握 MediaTracker 的基本用法,熟悉图形界面的坐标分布级已通过简单的方法来获得坐标。本题中,第一处,MediaTracker 类的对象初始化需要将 this 指针作为参数传递给该类的构造方法;第二处,Graphics 类的对象 g 调用 drawImage()方法显示从磁盘文件中读取的 Image 对象,第四个参数需要将this 作为参数传给该方法;第三处,g 调用 draw3DRect()方法绘制三维矩形,最后一个参数为 false 表示矩形是凹下的,相反为凸起,第一和第二个参数作递减是为了让显示效果看起来是矩形的左上方和图像的左上方有一定的距离,让人感觉矩形将图像包含在内。