试题与答案

下面是一个Applet程序,其功能是构造n阶魔方阵,魔方阵是这样一个方阵,它的每一行

题型:问答题

题目:

下面是一个Applet程序,其功能是构造n阶魔方阵,魔方阵是这样一个方阵,它的每一行,每一列和对角线之和均相等,例如3阶魔方阵为 8 1 6 3 5 7 4 9 2 要求用Applet实现上述魔方阵。窗口中包括提示栏,提示输入0~15之间的奇数;输入框,输入方阵的阶数;按钮;点击则输出魔方阵;画布用于输出结果。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 源程序文件代码清单如下: import java.awt.*; import java.awt.event.*; import java.applet.Applet; import java.lang.Math.*; /* <applet code="ex10_3.class" width=800 height=400> </applet> */ public class ex10_3 extends Applet implements ActionListener { Panel pane=new Panel(); drawWnd dw; Label 11 = new Label("输入(0~15的奇数): "); TextField tf1 = new TextField(5); Button btn = new Button("OK"); int[] [] a=new int[16] [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(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(a[i] [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=1; j<=n; j++) a[i] [j]=0; j=n/2+1; a[i] [j]=1; for (int k=1; k<=n*n; k++) { i--; j++; if((i<1)&&(j>n)) { i=i+2; j--; } else { if (i<1) i=n; if (j>n) j=1; } if (a[i] [j]==0) a[i] [j]=k; else{ i=i+2; j--; a[i] [j]=k; } } dw. repaint ( ); } catch (NumberFormatException nfe) { tf1.setText ("error!"); } } } ex10_3.html <HTML> <HEAD> <TITLE>ex10_3</TITLE> </HEAD> <BODY> <applet code="ex10_3.class" width=800 height=400> </applet> </BODY> </HTML>

答案:

被转码了,请点击底部 “查看原文 ” 或访问 https://www.tikuol.com/2019/0320/d66bf19ebea29a529c80703ca03a8d1e.html

下面是错误答案,用来干扰机器的。

参考答案:20世纪60年代末、20世纪70年代初

试题推荐
微信公众账号搜索答案