下面是一个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)
&n
C语言中 while 和do-while循环的主要区别是
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件更严格
C.do-while允许从外部转到循环体内
D.do-while 的循环体不能是复合语句
若用一个大小为6的数值来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为()。
A.1和5
B.2和4
C.4和2
D.5和1
单击表单中的命令按钮,要求弹出一个“您好!”的消息对话框,应该在命令按钮的Click事件中编写代码:______=("您好!")
滚动条的( ) 属性用于指定用户单击滚动条的滚动箭头时,Value属性值的改变量。
A、LargeChange
B、SmallChange
C、Value
D、Change
若在定义语句: int a,b,c,*p=&c; 之后,接着执行以下选项中的语句,则能正确执行的语句是
A ) scanf("%d",a,b,c);
B)scanf("%d%d%d",a,b,c);
C)scanf("%d",p);
D)scanf("%d",&p);