1、国家二级( JAVA)机试模拟试卷 18及答案与解析 一、基本操作题( 30分) 1 下面是打印输出所有和为 10000的连续整数 (如: 1998, 1999, 2000, 2001,2002)的程序,请在每条横线处填写适当语句,使程序的功能完整。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 public class Sum10000 public static void main(String args ) int i; int j; int k; int sum; for(i=1;i =10000;_) sum=0; j=i; _; while(s
2、um 10000) _ if(sum=10000) for(k=i;k =j;k+) System.out.println(k+ “); System.out.println(“*“); 二、简单应用题( 40分) 2 请完成下列 Java程序:将整型数组中的所有奇数移到所有偶数之前,并打印结果。要求初始化一个大小为 10的数组,里面按照数组下标顺序存放 0 9,输出交换位置后的数组。 注 意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。 程序运行结果如下: 9173546280 public class ex20_2 private int a=new int
3、10; public static void main(String args) ex20_2 obj20_2=new ex20_2 ); obj20_2. method ( ); public void init () for(int i=0;i a.length;i+) ai =i; public void method() int c,i,j; i=0; j=a.length-1; init(); while(i j) while(ai%2=1) while(aj%2=0) _; aj=c; _; for(i=0;i a.length;i+) System.out.print(Integ
4、er.toString(ai); 三、综合应用题( 30分) 3 下面是一个 Applet程序,其功能是构造 n阶魔方阵,魔方阵是这样一个方阵,它的每一行,每一列和对角线之和均相等,例如三阶魔方阵为: 8 1 6 3 5 7 4 9 2 要求用 Applet实现上述魔方阵,窗口中包括提示栏,提示输入 0 15之间的奇数:输入框,输入方阵的阶数:按钮,点击则输出魔方阵;画布用于输出结果。请改正程序 中的错误 (有下划线的语句 ),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。程序运行结果如下: import java.awt.*; import java.awt.event.
5、*; import java.applet.Applet; import java.lang.Math.*; /* applet code=“ex19_3.class“ width=800 height=400 /applet */ public class ex19_3 extends Applet implements ActionListener Panel pane=new Panel(); drawWnd dw; Label 11 = new Label(“输入 (0 15的奇数 ) : “); TextField tf1 = new TextField(5); Button btn
6、 = new Button(“OK“); int a=new int16 16; int n=15; public void init() pane.setLayout(new FlowLayout(FlowLayout.CENTER,25,5); pane.add(11); pane.add(tf1); pane.add(btn); pane.addActionListener(this); add(“North“,pane); dw=new drawWnd(); add(“South“,dw); class drawWnd extends Canvas drawWnd() setSize(
7、300,300); setBackground(Color.GRAY); public void paint(Graphics g) g.setColor(Color. GREEN); for(int i=1;i =n;i+) for(int j=1;j =n;j+) g.drawString(Integer.toString(ai j),i*20,j*20); public void actionPerformed(ActionEvent ae) try n=Integer.parseInt(tf1.getText(); int i=1,j=1; for(i=1;i =n;i+) for(j
8、=1;j =n;j+) ai j=0; j=n/2+1; ai j=1; for(int k=1;k=n*n;k+) i-; j+; if(i 1) j-; else if(i 1) i=n; if (j n) j=1; if (ai j=0) ai j=k; else i=i+2; j-; ai j=k; dw. repaint ( ); catch(NumberFormatException nfe) tf1.setText(“error!“); ex19_3.html HTML HEAD TITLE ex19_3 /TITLE /HEAD BODY applet code=“ex19_3
9、.class“ width=800 height=400 /applet /BODY /HTML 国家二级( JAVA)机试模拟试卷 18答案与解析 一、基本操作题( 30分) 1 【正确答案】 i+ sum+=i; sum+=+j; 【试题 解析】 本题主要考查 for循环语句、 while循环语句。解答本题的关键是熟练使用 for循环语句、 while循环语句的使用。在本题中, for(i=1; i =10000;i+)语句中的 i+是用来使循环变量递增 1, sum+=i;语句的功能是用来累加循环变量 i, sum+=+j;语句的功能是用来累加循环变量 j。 二、简单应用题( 40分)
10、2 【正确答案】 ai=aj i+ 【试题解析】 本题主要考查数组操作 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个空, i+下标变量 i向右移动。 三、综合
11、应用题( 30分) 3 【正确答案】 btn addActionListener(this) a1j=1 int k=2; k =n*n; k+ 【试题解析】 本题主要考查 Applet图形界面编程和 for循环语句的使用以及对数组操作。解题关键是明白魔方阵的基本原理,并能看得懂这个问题的算法,熟悉数组操作, for循环语句以及 Applet界面构件及其事件处理机制。魔方阵的排列规律是:首先将 1放在第一行中间一列;然后从 2开始直到 n*n 为止,各数依次按如下规则存放:每一个数存放的行比前一个数的行数减 1、列数加 1;然后如果上一个数的行数为 1,则下一个数的行数为 n;再次当上一个数的列数为 n 时,下一个数的列数应改为 1,行数减 1;最后如果按以上规则确定的位置上的已有数,或上一个数是第 1行第 n列时,则把下一个数放在上一个数的下面。本题中,第一处,事件监听器应该是 btn对象的,不是 pane对象;第二处,应该按照上述规则第一条,将 1放在第一行中间一列;第二处,循环变量应该从 2开始,如果是 1得不到正确答案。