1、二级 JAVA 机试-182 及答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:33.00)1.请在每条横线处填写一个语句,使程序的功能为:判断输入的年份是否为闰年(例如:1998 年不是闰年,2000 年是闰年)注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。import java.io.*;public class LeapYearpublic static void main(String args)_;BufferedReader in;ir=new InputStreamReader(_);in=new Buf
2、feredReader(ir);System. out. print In(“输入年份是: “);String s=in.readline();int year=_if(year%4=0elseSystem.out.println(“ “ +year+ “ “年不是闰年.“);(分数:33.00)_二、2简单应用题(总题数:1,分数:33.00)2.请完成下列 Java 程序:将整型数组中的所有奇数移到所有偶数之前,并打印结果。要求初始化一个大小为 10 的数组,里面按照数组下标顺序存放 09,输出交换位置后的数组。注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语
3、句。程序运行结果如下:9173546280public class ex20_2 private int a=new int10;public static void main(String args)ex20_2 obj20_2=new ex20_2 );obj20_2. method ( );public void init () for(int i=0;ia.length;i+) ai =i;public void method() int c,i,j;i=0;j=a.length-1;init();while(ij)while(ai%2=1)while(aj%2=0)_;aj=c;_;
4、for(i=0;ia.length;i+)System.out.print(Integer.toString(ai);(分数:33.00)_三、3综合应用题(总题数:1,分数:34.00)3.下面是一个 Applet 程序,其功能是用一组坐标点绘制一个多边形,并通过沿坐标的垂直方向移动,把它移到窗口的下半部分,然后填充它。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。程序运行结果如下:(分数:34.00)_二级 JAVA 机试-182 答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:33.00)1.
5、请在每条横线处填写一个语句,使程序的功能为:判断输入的年份是否为闰年(例如:1998 年不是闰年,2000 年是闰年)注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。import java.io.*;public class LeapYearpublic static void main(String args)_;BufferedReader in;ir=new InputStreamReader(_);in=new BufferedReader(ir);System. out. print In(“输入年份是: “);String s=in.readlin
6、e();int year=_if(year%4=0elseSystem.out.println(“ “ +year+ “ “年不是闰年.“);(分数:33.00)_正确答案:(InputStreamReader ir;SysteminIntegerparseInt(S);)解析:解析本题主要考查 I/O 流。解答本题的关键是理解和使用 I/O 流。在本题中,InputStreamReader ir;语句的功能是声明一个字符输入流对象 ir,ir=new InputStreamReader(Systemin);语句的功能是生成一个字符输入流对象 ir(InputStreamReader();方法
7、以标准输入流对象为参数)。int year=Integer,parseInt(s);语句的功能是定义一个整型变量 year,这里 Integer 是包装类,parseInt(s)方法是将字符串数据转换成整型数据。二、2简单应用题(总题数:1,分数:33.00)2.请完成下列 Java 程序:将整型数组中的所有奇数移到所有偶数之前,并打印结果。要求初始化一个大小为 10 的数组,里面按照数组下标顺序存放 09,输出交换位置后的数组。注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。程序运行结果如下:9173546280public class ex20_2 pri
8、vate int a=new int10;public static void main(String args)ex20_2 obj20_2=new ex20_2 );obj20_2. method ( );public void init () for(int i=0;ia.length;i+) ai =i;public void method() int c,i,j;i=0;j=a.length-1;init();while(ij)while(ai%2=1)while(aj%2=0)_;aj=c;_;for(i=0;ia.length;i+)System.out.print(Intege
9、r.toString(ai);(分数:33.00)_正确答案:(ai=aji+)解析:解析本题主要考查数组操作 while 语句的嵌套。解题关键是会使用双向查找方法查找数组中的数,使用 2 个下标变量 i,j 分别从数组的第一个和最后一个元素开始向中间进行搜索,提高搜索效率,若 ai为偶数,aj为奇数,则交换,同时 i+,j-,即 i 向右、j 向左扫描;若 ai为奇数,aj为偶数,则 i+,j-;若 ai为奇数,aj为奇数,则 j 不变,i+;若 ai为偶数,aj为偶数,则 i 不变,j-;当 i=j 时结束扫描。本题中,第 1 个空,交换 ai和 aj,是上述算法中的第一种情况;第 2 个
10、空, i+下标变量 i 向右移动。三、3综合应用题(总题数:1,分数:34.00)3.下面是一个 Applet 程序,其功能是用一组坐标点绘制一个多边形,并通过沿坐标的垂直方向移动,把它移到窗口的下半部分,然后填充它。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。程序运行结果如下:(分数:34.00)_正确答案:(gdrawPolygon(x,y,6)y2i+=yi+(rectheight/2)gfillPolygon(x,y2,6)解析:解析本题主要考查 Applet 窗口编程和图形绘制的综合应用。解题关键是熟悉上述考点的基本要求,使用Graphics 类的 drawPolygon()和 fillPolygon()方法绘制任意形状的图形,并且能结合数组进行编程实现。本题中第 1 处,第 2 个参数应该是 y,而不是 y2。y2 还没有初始化;第 2 处,注意 y2 数组中的值是需要进行累加的,因此需要使用符号+=;第 3 处,fillPolygon()方法的第 2 个参数应该是 y2,绘制新的图形,并填充,若是 y 则不能绘制新的图形。