logo

咨询热线

13613410649 (点击在线咨询)
您现在的位置:山西自考网>历年真题 > 理工类 > 正文
自考攻略

2021年4月山西自考《Java语言程序设计(一)》模拟试题和答案(二)

时间:2021-02-27 11:48:16 作者:储老师

自考助学
三、程序填空题(本大题共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。

声明:

(一)由于考试政策等各方面情况的不断调整与变化,本网站所提供的考试信息仅供参考,请以权威部门公布的正式信息为准。

(二)本网站在文章内容来源出处标注为其他平台的稿件均为转载稿,免费转载出于非商业性学习目的,版权归原作者所有。如您对内容、版权等问题存在异议请与本站联系,我们会及时进行处理解决。

考试提醒

准考证打印:4月5日起

  • 考生交流群
  • 微信公众号
  • 考生交流群 扫一扫加入微信交流群

    与考生自由互动、并且能直接与专业老师进行交流解答。

  • 微信公众号 扫一扫加关注微信公众号

    与考生自由互动、并且能直接与专业老师进行交流解答。

关注公众号

回复“免费资料”领取复习资料

微信公众号

微信公众号

微信公众号

微信交流群

<<点击收起

在线咨询

在线咨询

APP下载

APP
下载

联系微信
联系
微信
扫描二维码
扫描
二维码
反馈建议
反馈
建议
回到顶部
回到
顶部
APP下载
微信客服
微信交流群