 
             
	三、程序填空题(本大题共5小题,每空2分,共20分)
	 
	第1题回文是指正读和反读都一样的字符串。方法f27(String s)的功能是判断一个字符串是否为回文。例如:s="abccba",该方法返回值为true;n="abc",该方法返回值为false。
	 
	boolean f27(String s)
	 
	{
	 
	int i=0;
	 
	while(i<s.length()/2)
	 
	{
	 
	String s1,s2;
	 
	s1=s.substring(i,i+1);
	 
	s2=s.substring(___);
	 
	if(!(s1.equals(s2)))break;
	 
	i++;
	 
	}
	 
	return___;
	 
	}
	 
	【正确答案】s.length()-i-1,s.length()-i
	 
	i<s.length()/2?false:true
	 
	第2题以下程序的功能是:生成菜单条(menubar)、菜单(menu)和菜单项(item1,item2)对象,有“文件”菜单,“文件”菜单中有“新建”,“保存”菜单项。
	 
	import javax.swing.*;
	 
	public class Class2903
	 
	{
	 
	public Class2903()
	 
	{
	 
	JFrame myWin=new JFrame();
	 
	JMenuBar menubar=new JMenuBar();
	 
	___
	 
	JMenuItem item1=new JMenuItem("新建");
	 
	JMenuItem item2=new JMenuItem("保存");
	 
	myWin.setJMenuBar(menubar);
	 
	___
	 
	menu.add(item1);
	 
	menu.add(item2);
	 
	myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	 
	myWin.setBounds(100,100,200,200);
	 
	myWin.setVisible(true);
	 
	}
	 
	public static void main(String[]args)
	 
	{
	 
	new Class2903();
	 
	}
	 
	}
	 
	menubar.add(menu);"/>
	 
	【正确答案】JMenu menu=new JMenu("文件");
	 
	menubar.add(menu);
	 
	第3题程序运行结果如下图:上边,左边和右边是三个按钮,下边是一个内容为“Class2804”的文本框txt。
	 
	import java.awt.*;
	 
	import javax.swing.*;
	 
	public class Class2804
	 
	{
	 
	public static void main(String[]args)
	 
	{
	 
	JFrame myWin=new JFrame("Class2804");
	 
	myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	 
	myWin.setBounds(100,200,300,200);
	 
	Container con=myWin.getContentPane();
	 
	con.setBackground(Color.red);
	 
	con.setLayout(new BorderLayout());
	 
	___
	 
	JButton button1=new JButton("左边");
	 
	JButton button2=new JButton("右边");
	 
	JButton button3=new JButton("上边");
	 
	con.add(button1,"West");
	 
	con.add(button2,"East");
	 
	con.add(button3,"North");
	 
	___
	 
	myWin.setVisible(true);
	 
	}
	 
	}
	 
	con.add(txt,"South");"/>
	 
	【正确答案】JTextField txt=new JTextField("Class2804");
	 
	con.add(txt,"South");
	 
	第4题下面程序产生一个窗口,1秒后自动关闭。
	 
	public class Class3104 implements Runnable
	 
	{
	 
	___
	 
	{
	 
	try
	 
	{
	 
	Thread.sleep(1000);
	 
	}
	 
	catch(InterruptedException e){}
	 
	System.exit(0);
	 
	}
	 
	public Class3104()
	 
	{
	 
	JFrame my=new JFrame();
	 
	my.setBounds(100,100,600,300);
	 
	my.setVisible(true);
	 
	}
	 
	public static void main(String[]args)
	 
	{
	 
	Class3104 t=new Class3104();
	 
	Thread tt=___;
	 
	tt.start();
	 
	}
	 
	}
	 
	【正确答案】public void run()
	 
	new Thread(t)
	 
	第5题方法f2701(int n)返回十进制整数n的位数。
	 
	___f2701(int n)
	 
	{
	 
	int c;
	 
	for(c=0;___;c++)n/=10;
	 
	return c;
	 
	}
	 
	【正确答案】int
	 
	n!=0
	 
	四、程序分析题(本大题共5小题,每小题4分,共20分)
	 
	第1题阅读下面程序,写出程序运行结果。
	 
	class A
	 
	{
	 
	B obj;
	 
	A()
	 
	{
	 
	obj=new B();
	 
	obj.print();
	 
	System.out.println("AAA");
	 
	}
	 
	class B
	 
	{
	 
	public void print()
	 
	{System.out.println("BBB");}
	 
	}
	 
	}
	 
	public class Class3202
	 
	{
	 
	public static void main(String arg[])
	 
	{A obj=new A();}
	 
	}
	 
	【正确答案】程序运行结果:
	 
	BBB
	 
	AAA
	 
	第2题阅读程序,画出程序运行后初始界面并写出程序功能。
	 
	import javax.swing.*;
	 
	import java.awt.event.*;
	 
	public class Class3403 extends JFrame implements ActionListener
	 
	{
	 
	JButton b1=new JButton("b1");
	 
	JButton b2=new JButton("b2");
	 
	public Class3403()
	 
	{
	 
	super("Class3403");
	 
	setSize(300,100);
	 
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	 
	JPanel panel=new JPanel();
	 
	panel.add(b1);panel.add(b2);
	 
	setContentPane(panel);
	 
	b1.addActionListener(this);
	 
	b2.addActionListener(this);
	 
	setVisible(true);
	 
	}
	 
	public void actionPerformed(ActionEvent e)
	 
	{
	 
	Object s=e.getSource();
	 
	if(s==b1)setTitle("Teacher");
	 
	if(s==b2)setTitle("Student");
	 
	}
	 
	public static void main(String[]args)
	 
	{
	 
	new Class3403();
	 
	}
	 
	}
	 
	【正确答案】程序运行后初始界面为:
	 
	程序功能:是单击b1按钮窗口标题变为Teacher,单击b2按钮窗口标题变为Student。
	 
	第3题阅读下列程序,写出程序运行结果。
	 
	class A1
	 
	{
	 
	public void f(int aa,int bb)
	 
	{
	 
	System.out.println(aa+bb);
	 
	}
	 
	}
	 
	class A2 extends A1
	 
	{
	 
	public void f(int aa,int bb)
	 
	{
	 
	System.out.println(aa-bb);
	 
	}
	 
	}
	 
	public class C3201 extends A2
	 
	{
	 
	public void f(int aa,int bb)
	 
	{
	 
	System.out.println(aa*bb);
	 
	}
	 
	public static void main(String[]args)
	 
	{
	 
	A1 a=new A1();
	 
	A1 a1=new A2();
	 
	A2 a2=new C3201();
	 
	a.f(20,10);
	 
	a1.f(20,10);
	 
	a2.f(20,10);
	 
	}
	 
	}
	 
	【正确答案】运行结果:
	 
	30
	 
	10
	 
	200
	 
	第4题阅读下列程序,写出程序功能。
	 
	import javax.swing.*;
	 
	public class C3501
	 
	{
	 
	public static void main(String[]args)
	 
	{
	 
	JFrame myWin=new JFrame("C3501");
	 
	myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	 
	JMenuBar jmb=new JMenuBar();
	 
	myWin.setJMenuBar(jmb);
	 
	myWin.setBounds(100,200,300,300);
	 
	JMenu jm=new JMenu("AAA");
	 
	jmb.add(jm);
	 
	JMenuItem jmi=new JMenuItem("AA1");
	 
	jm.add(jmi);
	 
	JMenu jm2=new JMenu("AA2");
	 
	jm.add(jm2);
	 
	JMenuItem jmi2=new JMenuItem("AA21");
	 
	jm2.add(jmi2);
	 
	myWin.setVisible(true);
	 
	}
	 
	}
	 
	【正确答案】程序功能:应用程序窗口生成一个下拉菜单,菜单名是AAA,有两个菜单项AA1和AA2,其中AA2有子菜单,子菜单中有一个菜单项AA21。
	 
	第5题阅读下列程序,写出程序运行结果。
	 
	class A
	 
	{
	 
	int x,y;
	 
	A(int xx,int yy){x=xx;y=yy;}
	 
	}
	 
	interface A3202{int f3202(A a);}
	 
	interface B3202{int g3202();}
	 
	public class C3202 extends A implements A3202,B3202
	 
	{
	 
	A a=new A(x,y);
	 
	C3202(int x,int y)
	 
	{
	 
	super(x,y);
	 
	this.x=x*x;
	 
	this.y=y*y;
	 
	}
	 
	public int f3202(A a){return x*a.x+x*a.y;}
	 
	public int g3202(){return x*a.x+x*a.y;}
	 
	public static void main(String[]args)
	 
	{
	 
	int x=10,y=20;
	 
	A a=new C3202(x,y);
	 
	C3202 c=new C3202(x,y);
	 
	System.out.println(a.x+","+a.y);
	 
	System.out.println(c.f3202(a));
	 
	System.out.println(c.g3202());
	 
	}
	 
	}
	 
	【正确答案】输出结果:
	 
	100,400
	 
	50000
	 
	3000
	 
	[解析]本程序中有很多重复的命名,应注意分清。两个接口方法中用的a.x和a.y并不是同一个对象a的成员。f3202中使用的a是参数传递的对象,是main()中定义的那个对象a,它的x和y值经过运算后是100和400。g3202中使用的a是类C3202中定义的对象a,它的成员x和y的值是在类C3202中定义a时给的值,这个值是C3202的构造方法传的10和20,而此时c对象从A类继承来的x和y的值经过运算后分别是100和400。
	 
	另外,A a=new A(x,y);这一句在执行时相当于:
	 
	A=a;
	 
	C3202(x,y)
	 
	{super(x,y);a=new A(x,y);…………}
	 
	五、程序设计题(本大题共2小题,每小题6分,共12分)
	 
	第1题编写一个方法string3703,要求在一个字符串数组中找出长度最短的一个元素。其中字符串数组是方法的参数,最短的一个元素是方法的返回值。
	 
	System.out.println(string3703(b));
	 
	}
	 
	}
	 
	输出结果为:as"/>
	 
	【正确答案】方法如下:
	 
	String string3703(String[]a)
	 
	{
	 
	String maxStr=a[0];
	 
	for(int i=1;i<a.length;i++)
	 
	if(maxStr.length()<a[i].length())
	 
	maxStr=a[i];
	 
	return maxStr;
	 
	}
	 
	[解析]完整的程序如下:
	 
	public class Class3703
	 
	{
	 
	static String string3703(String[]a)
	 
	{
	 
	String maxStr=a[0];
	 
	for(int i=1;i<a.length;i++)
	 
	if(maxStr.length()>a[i].length())
	 
	maxStr=a[i];
	 
	return maxStr;
	 
	}
	 
	public static void main(String[]args)
	 
	{
	 
	String b[]={"asdf","saffdfd","as"};
	 
	System.out.println(string3703(b));
	 
	}
	 
	}
	 
	输出结果为:as
	 
	第2题编写一个方法hex3705(),要求将一个以字符串(如有字母用大写)形式表示的十六进制数转换十进制正整数,其中字符串为方法参数,正整数为返回值。
	 
	}
	 
	}
	 
	运行结果为:269"/>
	 
	【正确答案】int hex3705(String s)
	 
	{
	 
	int n=0;
	 
	byte b[]=s.getBytes();
	 
	int i=b.length,k=1;
	 
	while(--i>=0)
	 
	{
	 
	int t=b[i]-48;
	 
	if(t>10)t=t-7;
	 
	n=n+t*k;
	 
	k*=16;
	 
	}
	 
	return n;
	 
	}
	 
	[解析]完整的程序如下:
	 
	public class Class3705
	 
	{
	 
	static int hex3705(String s)
	 
	{
	 
	int n=0;
	 
	byte b[]=s.getBytes();//字符串存入字节数组,转化为字符
	 
	int i=b.length,k=1;
	 
	while(--i>=0)//对字节数组每个元素进行分析
	 
	{
	 
	int t=b[i]-48;//字符‘0’的ASCII码值是48
	 
	if(t>10)t=t-7;//若是字母,需要减55,‘A’的ASCII码值是65
	 
	n=n+t*k;
	 
	k*=16;//k是16的幂
	 
	}
	 
	return n;
	 
	}
	 
	public static void main(String[]args)
	 
	{
	 
	System.out.println(hex3705("10D"));
	 
	}
	 
	}
	 
	运行结果为:269
	 
	六、简答题(本大题共6小题,每小题3分,共18分)
	 
	第1题设有整型变量x和y的值分别为5和110。请指出执行了下面循环语句后,变量x和y的值分别是多少?
	 
	do{x=y/x;y=y-x;}while(y>=1);
	 
	【正确答案】(P35)x=18,y=0
	 
	第2题请写出表示条件“x=2与y=3最多只有一个成立”的Java表达式。
	 
	【正确答案】(P15)x==2&&y!=3||x!=2&&y==3||x!=2&&y!=3
	 
	第3题一个网络关系数据库应用系统是一个三层次结构,请写出这三个层次结构。
	 
	【正确答案】(P198)
	 
	(1)客户机与服务器采用网络连接。
	 
	(2)客户机端应用程序按通信协议与服务器端的数据库服务程序通信。
	 
	(3)数据库服务程序通过SQL命令与数据库管理系统通信。
	 
	第4题标签(JLabel)是最简单的Swing组件,程序关于标签的基本内容有哪三个方面?
	 
	【正确答案】(P91)
	 
	①声明一个标签名。
	 
	②创建一个标签对象。
	 
	③将标签对象加入到某个容器中。
	 
	第5题用一个Java语句完成下面的要求:
	 
	先将整型变量a的值加1,再把它加到变量b中。
	 
	【正确答案】(P14)b=b+(++a);或者b+=++a;
	 
	[解析]这是一个表达式语句,不要忘记加分号。不能写成b=b+++a;这相当于b=(b++)+a。
	 
	第6题下列类的定义中有哪些错误?写出错误原因或者进行改正。
	 
	class C2202
	 
	{
	 
	int x;
	 
	C2202(int x){this.x=x;}
	 
	C2202(){C2202(10);}
	 
	int f()
	 
	{
	 
	int a=1;
	 
	x=a;
	 
	}
	 
	void g()
	 
	{
	 
	int y;
	 
	y=a+x;
	 
	}
	 
	}
	 
	【正确答案】(1)C2202(){C2202(10);}错误,可改为:C2202(){this(10);}。
	 
	(2)int f()错误,可改为:void f()。
	 
	(3)y=a+x;错误,原因是引用非法,在g方法中不能使用a。