1、二级 JAVA机试 50及答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)1.请在每条横线处填写一个语句,使程序的功能为:判断输入的年份是否为闰年(例如:1998 年不是闰年,2000年是闰年) 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 import java.io.*; public class LeapYear public static void main(String args) _; BufferedReader in; ir=new InputStreamReader(_); in=
2、new BufferedReader(ir); System. out. print In(“输入年份是: “); String s=in.readline(); int year=_ if(year%4=0 else System.out.println(“ “ +year+ “ “年不是闰年.“); (分数:30.00)_二、B2简单应用题/B(总题数:1,分数:40.00)2.请完成下列 Java程序:将整型数组中的所有奇数移到所有偶数之前,并打印结果。要求初始化一个大小为 10的数组,里面按照数组下标顺序存放 09,输出交换位置后的数组。 注意:请勿改动 main()主方法和其他已有语
3、句内容,仅在下划线处填入适当的语句。 程序运行结果如下: 9173546280 public 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(
4、ai%2=1) while(aj%2=0) _; aj=c; _; for(i=0;ia.length;i+) System.out.print(Integer.toString(ai); (分数:40.00)_三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet程序,其功能是用一组坐标点绘制一个多边形,并通过沿坐标的垂直方向移动,把它移到窗口的下半部分,然后填充它。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。 程序运行结果如下: (分数:30.00)_二级 JAVA机试 50答案解析(总分:100.00,
5、做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)1.请在每条横线处填写一个语句,使程序的功能为:判断输入的年份是否为闰年(例如:1998 年不是闰年,2000年是闰年) 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 import java.io.*; public class LeapYear public static void main(String args) _; BufferedReader in; ir=new InputStreamReader(_); in=new BufferedReader(ir); Syst
6、em. out. print In(“输入年份是: “); String s=in.readline(); int year=_ if(year%4=0 else System.out.println(“ “ +year+ “ “年不是闰年.“); (分数:30.00)_正确答案:()解析:InputStreamReader ir; Systemin IntegerparseInt(S); 解析 本题主要考查 I/O流。解答本题的关键是理解和使用 I/O流。在本题中,InputStreamReader ir;语句的功能是声明一个字符输入流对象 ir,ir=new InputStreamRead
7、er(Systemin);语句的功能是生成一个字符输入流对象ir(InputStreamReader();方法以标准输入流对象为参数)。int year=Integer,parseInt(s);语句的功能是定义一个整型变量 year,这里 Integer是包装类,parseInt(s)方法是将字符串数据转换成整型数据。二、B2简单应用题/B(总题数:1,分数:40.00)2.请完成下列 Java程序:将整型数组中的所有奇数移到所有偶数之前,并打印结果。要求初始化一个大小为 10的数组,里面按照数组下标顺序存放 09,输出交换位置后的数组。 注意:请勿改动 main()主方法和其他已有语句内容,
8、仅在下划线处填入适当的语句。 程序运行结果如下: 9173546280 public 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
9、=1) while(aj%2=0) _; aj=c; _; for(i=0;ia.length;i+) System.out.print(Integer.toString(ai); (分数:40.00)_正确答案:()解析:ai=aj i+ 解析 本题主要考查数组操作 while语句的嵌套。解题关键是会使用双向查找方法查找数组中的数,使用 2个下标变量 i,j分别从数组的第一个和最后一个元素开始向中间进行搜索,提高搜索效率,若 ai为偶数,aj为奇数,则交换,同时 i+,j-,即 i 向右、j 向左扫描;若 ai为奇数,aj为偶数,则 i+,j-;若 ai为奇数,aj为奇数,则 j不变,i+;
10、若 ai为偶数,aj为偶数,则 i不变,j-;当 i=j 时结束扫描。本题中,第 1个空,交换 ai和 aj,是上述算法中的第一种情况;第 2个空, i+下标变量 i向右移动。三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet程序,其功能是用一组坐标点绘制一个多边形,并通过沿坐标的垂直方向移动,把它移到窗口的下半部分,然后填充它。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。 程序运行结果如下: (分数:30.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则不能绘制新的图形。