try{
(缓冲区读取)BufferedReaderbr=newBufferedReader(
newInputStreamReader(System.in));
a[i]=Integer.parseInt(br.readLine());//输入一个整数
}catch(IOExceptione){};(输入输出异常)
for(i=n-1;i>=0;i――)
System.out.print(a[i]+"");
System.out.println();
}
}
以上这段程序的功能是
(1)。
(8分)
2、importjava.io.*;
publicclassabc
{publicstaticvoidmain(Stringargs[])
{ABs=newAB("Hello!
","IloveJAVA.");
System.out.println(s.toString());
}
}
classAB{
Strings1;Strings2;
AB(Stringstr1,Stringstr2)
{s1=str1;s2=str2;}
publicStringtoString()
{returns1+s2;}
}
以上这段程序的运行结果是
(2)。
(8分)
3、importjava.io.*;
publicclassabc
{
publicstaticvoidmain(Stringargs[])
{System.out.println("a="+a+"\nb="+b);}
}
classSubClassextendsSuperClass
{intc;
SubClass(intaa,intbb,intcc)
{super(aa,bb);
c=cc;
}
}
classSubSubClassextendsSubClass
{inta;
SubSubClass(intaa,intbb,intcc)
{super(aa,bb,cc);
a=aa+bb+cc;
}
voidshow()
{System.out.println("a="+a+"\nb="+b+"\nc="+c);}
}
以上这段程序的运行结果是(3)。
(8分)
4、SaleExample.java:
模拟5个人排队买票。
售票员只有1张5元的钱,电影票5元钱一张。
假设5个人的名字和排队顺序是:
赵、钱、孙、李、周。
赵拿1张20元的人民币买2张票,钱拿1张20元的人民币买1张票,孙拿1张10元的人民币买1张票,李拿1张10元的人民币买2张票,周拿1张5元的人民币买1张票。
要求售票员按如下规则找赎:
A)20元买2张票,找零:
1张10元,不许找零:
2张5元;B)20元买1张票,找零:
1张10元,1张5元,不许找零:
3张5元;C)10元买1张票,找零:
1张5元。
(请填写【代码1-5】,每空6分,共30分)
classTicketSeller//负责卖票的类
{
intfiveNumber=1,tenNumber=0,twentyNumber=0;
publicsynchronizedvoidsellTicket(intreceiveMoney,intbuyNumber){
if(receiveMoney==5){
fiveNumber=fiveNumber+1;
System.out.printf("\n%s给我5元钱,这是您的1张入场卷",Thread.currentThread().getName());
}
elseif(receiveMoney==10&&buyNumber==2){
tenNumber=tenNumber+1;
System.out.printf("\n%s给我10元钱,这是您的2张入场卷",Thread.currentThread().getName());
}
elseif(receiveMoney==10&&buyNumber==1){
while(fiveNumber<1)//给出线程需等待的条件
{try{System.out.printf("\n%30s靠边等",Thread.currentThread().getName());
wait();//线程进入等待状态
System.out.printf("\n%30s结束等待\n",Thread.currentThread().getName());
}
catch(InterruptedExceptione){}
}
fiveNumber=fiveNumber-1;
tenNumber=tenNumber+1;
System.out.printf("\n%s给我10元钱,找您5元,这是您的1张入场卷",
Thread.currentThread().getName());
}
elseif(receiveMoney==20&&buyNumber==1){
while(【代码1】)//给出线程需等待的条件
{try{System.out.printf("\n%30s靠边等",Thread.currentThread().getName());
【代码2】//线程进入等待状态
System.out.printf("\n%30s结束等待",Thread.currentThread().getName());
}
catch(InterruptedExceptione){}
}
fiveNumber=fiveNumber1;
tenNumber=tenNumber1;
twentyNumber=twentyNumber+1;
System.out.printf("\n%s给20元钱,找您一张5元和一张10元,这是您的1张入场卷",
Thread.currentThread().getName());
}
elseif(receiveMoney==20&&buyNumber==2){
while(【代码3】)//给出线程需等待的条件
{try{System.out.printf("\n%30s靠边等\n",Thread.currentThread().getName());
【代码4】//线程进入等待状态
System.out.printf("\n%30s结束等待",Thread.currentThread().getName());
}
catch(InterruptedExceptione){}
}
tenNumber=tenNumber1;
twentyNumber=twentyNumber+1;
System.out.printf("\n%s给20元钱,找您一张10元,这是您的2张入场卷",
Thread.currentThread().getName());
}
【代码5】//通知等待的线程结束等待
}
}
classCinemaimplementsRunnable//实现Runnable接口的类
{
Threadzhao,qian,sun,li,zhou;//电影院中买票的线程
TicketSellerseller;//电影院的售票员
Cinema(){
zhao=newThread(this);qian=newThread(this);sun=newThread(this);
li=newThread(this);zhou=newThread(this);zhao.setName("赵");
qian.setName("钱");sun.setName("孙");li.setName("李");
zhou.setName("周");seller=newTicketSeller();
}
publicvoidrun(){
if(Thread.currentThread()==zhao)seller.sellTicket(20,2);
elseif(Thread.currentThread()==qian)seller.sellTicket(20,1);
elseif(Thread.currentThread()==sun)seller.sellTicket(10,1);
elseif(Thread.currentThread()==li)seller.sellTicket(10,2);
elseif(Thread.currentThread()==zhou)seller.sellTicket(5,1);
}
}
publicclassSaleExample{
publicstaticvoidmain(Stringargs[]){
Cinemacinema=newCinema();
cinema.zhao.start();
try{Thread.sleep(1000);}
catch(InterruptedExceptione){}
cinema.qian.start();
try{Thread.sleep(1000);}
catch(InterruptedExceptione){}
cinema.sun.start();
try{Thread.sleep(1000);}
catch(InterruptedExceptione){}
cinema.li.start();
try{Thread.sleep(1000);}
catch(InterruptedExceptione){}
cinema.zhou.start();
}
}
三.编程题(共1题,共16分)
1.用JDBC编写一个应用程序(java命令可执行),连接localhost的SqlServer数据库(数据库名:
ExamDB),已经建立ODBC数据源EXAMDBODBC,请根据以下参考数据,选定一种方式将考试成绩表(表名:
Score)的全部数据输出。
参考:
连接用户名为exam,密码为exam,可用驱动有:
sun.jdbc.odbc.JdbcOdbcDriver和com.microsoft.jdbc.sqlserver.SQLServerDriver,各自对应的URL格式是jdbc:
odbc:
?
和jdbc.microsoft:
sqlserver:
//Hosts:
Port;DataBaseName=?
Score表结构
部分记录
其中JDBC关键代码提示(需要用到的类及相关方法):
ClassforName(……)DriverManagergetConnection(…..)
ConnectioncreateStatement()StatementexecuteQuery(….);
广东工业大学试卷参考答案及评分标准(B)
课程名称:
面向对象程序设计A试卷满分100分
考试时间:
2010年6月16日
一、单项选择题(每题2分,共15题,共30分)。
1-5:
BADCA6-10:
CDCCB11-15:
ABCCB
二.填空题(共4题,共8+8+8+5×6=54分)。
1、从标准输入(即键盘)读入10个整数存入整型数组a中,然后逆序输出这10个整数。
(8分)
2、Hello!
IloveJAVA.(8分)
3、a=60
b=20
c=30(8分)
4、【代码1】:
fiveNumber<1||tenNumber<1(6分)
【代码2】:
wait();(6分)
【代码3】:
tenNumber<1(6分)
【代码4】:
wait();(6分)
【代码5】:
notifyAll();(6分)
三.编程题(共1题,共16分)
无标准答案,请参考以下评分标准批改:
1载入驱动class.forName(driverName);
driverName:
sun.jdbc.odbc.JdbcOdbcDriver或
com.microsoft.jdbc.sqlserver.SQLServerDriver(3分)(驱动程序)
1.1未写扣3分
1.2语法错误扣1分
1.3driverName写错扣2分
2建立连接
Connectioncon(连接变量)=DriverManager.getConnection(conURL,”exam”,”exam”);
conURL:
jdbc:
odbc:
EXAMDBODBC(数据源)或
jdbc.microsoft:
sqlserver:
//127.0.0.1:
1433;DataBaseName=ExamDB,
其中127.0.0.1部分只要能表示一个主机即可,1433部分只要是一个有意义的端口即可(4分)
2.1未写扣4分
2.2conURL错误扣2分
2.3语法错误扣1分
2.4conURL和driverName需匹配,sun.jdbc.odbc.JdbcOdbcDriver对应jdbc:
odbc:
EXAMDBODBC,不匹配扣1分
3创建Statement对象,Statementstmt=con.createStatement();(2分)
3.1未写扣2分
4创建查询结果集,ResultSetrs=stmt.executeQuery("Select*fromScore");(3分)
4.1未写扣3分
4.2SQL语句错误扣2分
4.3语法错误扣1分
5内容输出,输出全部字段(3分)
5.1如果未输出查询结果,扣3分
5.2未完成输出或者逻辑错误扣1~2分
6异常检查(1分)
6.1所有jdbc代码必须有try-catch或者throws异常检查,没有则扣1分
7以上已累计16分,按以下原则检查其他内容
7.1完全无关代码且出错的话,一处扣1分,累计不超过3分
7.2关键字大小写错误,总体扣1分
7.3明显的局部{}不匹配扣1分