1、国家二级( JAVA)机试模拟试卷 50及答案与解析 一、基本操作题( 30分) 1 下面程序的功能是找出所有三位数中,个、十、百位数字的立方和等于该数本身的三位数并显示。在程序的每条横线处填写一个适当的语句,使程序的功能完整。 public class LiFangHe public static void main(String args) System.out.println(“个、十、百位数字的立方和等于该数本身的三位数有 :“); for(int n=100; n 1000;n+) int a, b, c; _ b=n/10%10; _ if(_) System.out.printl
2、n(n); 二、简单应用题( 40分) 2 请完成下列 Java程序:用一个边框布局来安排一个工具栏和一个卡片布局。工具栏可浮动,包括两个按钮,一个向前一个向后控制卡片的显示;卡片布局包括 3张卡片,分别标识为 card1、 card2、 card3。 注意;请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。 源程序代码文件清单如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.LineBorder; public class e
3、x20_2 private static CardLayout cl=new CardLayout(); private static JPanel cp=new JPanel(); public static void main(String args) JFrame jf=new JFrame(); jf.setTitle(“ex20_2“); Container c=jf.getContentPane(); JToolBar jtb=new JToolBar(); JButton btnNext=new JButton(new Imagelcon(“next.gif“); JButton
4、 btnPre=new JButton(new ImageIcon(“back.gif“); jtb.add(btnPre); jtb.add(btnNext); cp.setLayout(c1); Dimension dim=new Dimension(150, 80); cp.setPreferredSize(dim); cp.setBorder(new LineBorder(Color.BLACK); cp.add(new JLabel(“card1“, JLabel CENTER), “card1“); cp.add(new JLabel(“card2“, JLabel CENTER)
5、, “card2“); cp.add(new JLabel(“card3“, JLabel CENTER), “card3“); c.add(jtb, BorderLayout.NORTH); c.add(cp, BorderLayout.CENTER); ActionListener al=new ActionResponse(); _; _; if.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent we) System.exit(0); ); jf.pack(); jf.setVisibl
6、e(true); static class ActionResponse implements ActionListener public void actionPerformed(ActionEvent ae) if(ae.getActionCommand().equals(“next“) c1.next(cp); else c1.previous(cp); 三、综合应用题( 30分) 3 下面是一个 Applet程序,其功能是绘制三维矩形以使该矩形面凹下,并将图像放入凹下的矩形面中。请改正程序中的错误 (有下划线的语句 ),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。
7、 源程序文件代码清单如下: import java.awt.*; import java.applet.*; import java.awt.image.*; import java.util.*; import .*; /* applet code=“ex01_3.class“width=800 height=400 /applet */ public class ex01_3 extends Applet private Image IMG onClick=over(this) title=放大; public void init() URL url=getCodeBase(); IMG
8、onClick=over(this) title=放大 =getImage(url, “ex01_3.gif“); MediaTracker mt=new MediaTracker(); mt.addImage(IMG onClick=over(this) title=放大, 1); try mt.waitForAll(); catch(Exception e) e.printStackTrace(); setBackground(Color.black); public void paint(Graphics g) int thick=3, x=10, y=10; g.drawImage(I
9、MG onClick=over(this) title=放大 ,x,y); g.setColor(Color.lightGray); int w = IMG onClick=over(this) title=放大 .getWidth(this); int h = IMG onClick=over(this) title=放大 .getHeight(this); for(int i=0; i thick; i+) g.draw3DRect(x,y,w+(a*i),true); ex01 3.html HTML HEAD TITLE ex01_3 /TITLE /HEAD BODY applet
10、code=“ex01_3.class“width=800 height=400 /applet /BODY /HTML 国家二级( JAVA)机试模拟试卷 50答案与解析 一、基本操作题( 30分) 1 【正确答案】 a=n/100; c=n%10; a*a*a+b*b*b+c*c*c=n 【试题解析】 本题主要考查 for循环语句的基本用法及条件运算符 “=”的用法。解答本题的关键是熟练掌握 for循环语句的基本用法及条件运算符 “=”的用法在本题中, a=n/100;语句的功能是获取三位数字的百位上的数字并赋给 变量a, c=n%10;语句的功能是获取三位数的个位上的数字并赋给变量 b,a
11、*a*a+b*b*b+c*c*c=n语句的功能是判断三位数的每个位置上的立方和是否等于这个三位数。 二、简单应用题( 40分) 2 【正确答案】 btnNext.addActionListener(al) btnPre.addActionListener(al) 【试题解析】 本题主要考查工具栏和卡片布局的基本使用方法。解题关键是熟悉工具栏的设计和卡片布局的管理,熟悉事件处理机制,会制作图像按钮,会制作自己的事件监听器类 。本题中,第 1个空和第 2个空都是需要填入注册监听器的语句,这里向前和向后两个按钮共用一个监听器,此监听器对象负责判断和处理相应的操作。 三、综合应用题( 30分) 3 【
12、正确答案】 new MediaTracker(this) g.drawImage(img, x, y, this) g.draw3DRect(-x, -y, w+(2*i), h+(2*i),false) 【试题解析】 本题主要考查 Applet图形绘制和图像显示。解题的关键是掌握绘制三维矩形的基本方法,掌握 MediaTracker的基本用法, 熟悉图形界面的坐标分布以及通过简单的方法来获得坐标。本题中,第 1处, MediaTracker类的对象初始化需要将 this指针作为参数传递给该类的构造函数;第 2处, Graphics类的对象g调用 drawImage()方法显示从磁盘文件中读取的 Image对象,第 4个参数需要将this作为参数传递给该方法;第 3处, g调用 draw3DRect()方法绘制三维矩形,最后一个参数为 false表示矩形是凹下的,相反为凸起,第 1个和第 2个参数做递减是为了让显示效果看起来是矩形的左上方和图像的左上方有一定的距离,让人感觉矩形 将图像包含在内。程序运行结果如下。