题目
阅读下列函数说明和Java代码,将应填入(n)处的字句写在对应栏内。
【说明】
类Queue表示队列,类中的方法如下表所示。
类Node表示队列中的元素;类EmptyQueueException给出了队列操作中的异常处理操作。
public class TestMain { //主类
public static viod main (String args[]){
Queue q=new Queue();
q.enqueue("first!");
q.enqueue("second!");
q.enqueue("third!");
(1) {
while(true)
System.out.println(q.dequeue());
}
catch((2) ){ }
}
public class Queue { //队列
Node m_FirstNode;
public Queue(){m_FirstNode=null;}
public boolean isEmpty(){
if(m_FirstNode==null)return true;
else return false;
}
public viod enqueue(Object newNode) { //入队操作
Node next=m_FirstNode;
if(next==null)m_FirstNode=new Node(newNode);
else{
while(next.getNext()!=null)next=next.getNext();
next.setNext(new node(newNode));
}
}
public Object dequeue() (3) { //出队操作
Object node;
if (isEempty())
(4); //队列为空, 抛出异常
else{
node=m_FirstNode.getObject();
m_FirstNode=m_FirstNode.getNext();
return node;
}
}
}
public class Node{ //队列中的元素
Object m_Data;
Node m_Next;
public Node(Object data) {m_Data=data; m_Next=null;}
public Node(Object data, Node next) {m_Data=data; m_Next=-next;}
public void setObject(Object data) {m_Data=data;}
public Object getObject(Object data) {return m_data;}
public void setNext(Node next) {m_Next=next;}
public Node getNext() {return m_Next;}
}
public class EmptyQueueException extends (5) { //异常处理类
public EmptyQueueException() {
System.out.println("队列已空! ");
}
}
第1题
阅读下列函数说明和Java代码,将应填入(n)处的字句写在对应栏内。
【说明】
通常情况下,用户可以对应用系统进行配置,并将配置信息保存在配置文件中,应用系统在启动时首先将配置文件加载到内存中,这些内存配置信息应该有且仅有一份。
下面的代码应用了单身模式(Singleton)以保证Configure类只能有一个实例。这样,Configure类的使用者无法定义该类的多个实例,否则会产生编译错误。
include <iostream.h>
class Configure{
(1);
Configure(){}; //构造函数
public:
static Configure *Instance();
public:
int GetConfigureData(){return data;} //获取配置信息
int SetConfigureDate(int m_data)
{data=m_data; return data;} //设置配置信息
private:
static Configure* _instance;
int data; //配置信息
};
(2)=NULL;
Configure * Configure∷Instance()
{ if(_instance==NULL)
{ _instance=(3);
//加载配置文件并设置内存配置信息,此处省略
}
return (4);
}
void main()
{ Configure *t=NULL;
t=(5);
int d=t->GetConfigureData();
//获取配置信息后进行其它工作,此处省略
}
第2题
() 阅读下列说明和JAVA代码,将应填入空(n)处的字句写在答题纸的对应栏内。【说明】 某中学开展中外中学生野外生存夏令营活动,由于中外学生的语言障碍,随队为外籍学员配置一名翻译。以下代码采用适配器(Adapter)模式模拟翻译适配器。其类图如下:
第3题
阅读以下函数说明和Java代码,将应填入(n)处的字句写在对应栏内。
[说明]
很多时候,希望某些类只有一个或有限的几个实例,典型解决方案是所谓单身(Singleton)模式。但在多线程情况下,Singleton模式有可能出现问题,需要进行同步检查。如果对“检查singleton对象是否已经创建”进行同步,则存在严重的瓶颈,所有的线程都必须等待检查对象是否存在。解决方式是一种称为Double-Checked-Locking模式,其意图是将非必须的锁定优化掉,同步检查最多只发生一次,因此不会成为瓶颈。以下是Java语言实现,能够正确编译通过。
[Java代码]
public class USTax {
private static USTax instance=null;
(1) USTax(){}
private (2) static void doSync(){
if(instance==null){
System.out.println("实例不存在,创建实例..");
instance=(3);
System.out.println("实例创建成功");
}else{
System.out.println("实例已被创建了");
}
}
public static USTax getInstance(){
if(instance==null){
System.out.println("实例暂时不存在");
(4);//同步控制
}else{
System.out.println("实例已经存在");
}
return (5);
}
}
(1)
第4题
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都
有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌
灯具的开关,现采用Command(命令)模式实现该遥控器的软件部分。command模式
的类图如图6-1所示。
【Java代码】
}
第5题
阅读以下程序说明和java代码,将应填入(n)处的字句写在对应栏内。
[说明]
本程序接收输入的学生信息,包括学号、姓名、成绩,原样输出信息并计算学生的平均成绩。其中学生类Stud除了包括no(学号)、name(姓名)和grade(成绩)数据成员外,还有两个静态变量 sum和num,分别存放总分和人数,另有一个构造函数、一个普通成员函数disp()和一个静态成员函数avg()用于计算平均分。
[Java代码]
public class Stud {
public int no;
public String name;
public double grade;
public (1) double sum=0;
public static int num=0;
public Stud(int no,String name,double grade) {
this.no = no;
this.name = name;
this.grade = grade;
this.sum=(2);
(3);
}
public static double avg(){
return (4);
}
public void disp(){
System.out.println(this.no+"\t"+this.name+"\t"+this.grade);
}
public static void main(String[] args) {
Stud []students = {new Stud (1,"Li", 81), new Stud(2,"Zhao",84.5), new Stud(3,"Zhang", 87)};
System.out.pfintln("no\tname\tgrade");
students[0].disp();
students[1].disp();
students[2].disp();
System.out.println("avg="+(5));
}
}
第6题
阅读下列说明、图和Java代码,将应填入(n)处的字句写在对应栏内。
【说明】
已知对某载客车辆(Car)进行类建模,如图7-1所示,其中类Engine表示发动机引擎,类Wheel表示车轮,类Body表示车身,类Driver表示司机,类Passenger表示乘客。
【Java代码】
class Body{ //此处代码省略 ); //车身类
class Passenger{ //此处代码省略 )/ //乘客类
class Wheel{ //此处代码省略 ); //车轮类
class Driver{ //司机类
public String name; //表示第几路公交车司机
public Driver(String driverName){name = driverName/) //构造函数
};
class Engine{//引擎类
public String engineNo;//引擎编号
public Engine(String engineNo){this.engineNo=engineNo;)//构造函数
};
public class Car{//汽车类
static final int(1)=7; //定义最多载客数
static final int MAX WHEELS =5; //定义最多轮胎数
protected Engine engine;
protected Driver driver;
protected Body body=new Body();
protected Wheel[] wheels;
protected Passenger[]passengers;
public Car(Driver driver){ //构造函数
(2).driver=driver;
engine=new Engine("TX6536型号引擎");
wheels=new Wheel[MAX WHEELS];
passengers=new Passenger[MAX_PASSENGERS];
for(int index=0;index<MAX_WHEELS;index++){
wheels[index]=new Wheel();
}
for(int index=0;index<MAX_PASSENGERS;index++){
passengers[index]=null;
}
}
int getPassengerNumber(){//获取车上乘客数量
//此处代码省略
}
void getOnPassenger(Passenger aPassenger){//乘客上车
//此处代码省略
}
void run(){ //开车
if((3)){System.out.println("司机尚未上车!");return;}
//此处代码省略
}
public static void main(String args[]){
Driver driver=new Driver("第五路公交车司机");
Car car=new Car((4));
for (int index = 0 ; index < MAX_PASSENGERS; index ++)
car.getOnPassenger((5) Passenger());
car.run();
}
}
第7题
试题七(共 15 分)
阅读下列说明、图和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
已知对某载客车辆(Car)进行类建模,如图 7-1所示,其中类 Engine 表示发动机引擎,类 Wheel 表示车轮,类 Body 表示车身,类 Driver 表示司机,类 Passenger 表示乘客。
[Java 代码]
class Body{ //此处代码省略 }; //车身类
class Passenger{ //此处代码省略 }; //乘客类
class Wheel{ //此处代码省略 }; //车轮类
class Driver{ //司机类
public String name; //表示第几路公交车司机
public Driver(String driverName){name = driverName;} //构造函数
};
class Engine{ //引擎类
public String engineNo; //引擎编号
public Engine(String engineNo){ this.engineNo = engineNo; } //构造函数
};
public class Car{ //汽车类
static final int (1) = 7; //定义最多载客数
static final int MAX_WHEELS = 5; //定义最多轮胎数
protected Engine engine;
protected Driver driver;
protected Body body = new Body();
protected Wheel[] wheels;
protected Passenger[] passengers;
public Car(Driver driver){ //构造函数
(2) .driver = driver;
engine = new Engine("TX6536 型号引擎");
wheels = new Wheel[MAX_WHEELS];
passengers = new Passenger[MAX_PASSENGERS];
for (int index = 0; index < MAX_WHEELS; index++){
wheels[index] = new Wheel();
}
for (int index = 0; index < MAX_PASSENGERS; index++){
passengers[index] = null;
}
}
int getPassengerNumber(){ //获取车上乘客数量
//此处代码省略
}
void getOnPassenger(Passenger aPassenger ){ //乘客上车
//此处代码省略
}
void run(){ //开车
if((3) ){ System.out.println("司机尚未上车!"); return;}
//此处代码省略
}
public static void main(String args[]){
Driver driver = new Driver("第五路公交车司机");
Car car = new Car((4) );
for (int index = 0 ; index < MAX_PASSENGERS; index ++)
car.getOnPassenger((5) Passenger());
car.run();
}
}
第8题
阅读以下函数说明和Java代码,将应填入(n)处的字句写在对应栏内。
【说明】
以下程序实现数据的排序,将n个整数分别按照升序和降序进行排序,类SortInt_1实现升序排序,类SortInt_2实现降序排序。
【Java代码】
class SortInt_1{
int i,i,k,temp;
void SortInt(int a1,int a2[]){//升序排序
for(i=0;i<a1-1;i++){
k=i;
for(j=i+1;j<a1;j++){
if((1)) k=j;
if(k !=i){
temp=a2[i];a2[i]=a2[k];a2[k]=temp;
}
}
}
}
}
class SortInt_2 (2) {
int i,j,k,temp;
void SortInt(int a1, int a2[]){//降序排序
for(i=0; i<a1-1;i++){
k=i;
for(j=i+1;j<a1;j++){
if((3))k=j;
}
if(k !=i){
temp=a2[i];a2[i]=a2[k];a2[k]=temp;
}
}
}
}
public class test{
public static void main(String args[]){
int a[]={10,55,100,35,87,90,100,16};
SortInt_1 NewInt=(4);
NewInt.SortInt(a.lenvh,a);//调用SortInt_1类的方法
System.out.println("升序排列的数据: ");
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
System.out.println();
NewInt=new SortInt_2();//创建类SortInt_2的对象
(5);//调用相应方法进行降序排序
System.out.println("降序排列的数据: ");
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
}
}
第9题
阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
函数QuickSort是在一维数组A[n]上进行快速排序的递归算法。
【函数】
void QuickSort(int A[ ],int s,int t)
{ int i=s,j=t+1,temp;
int x=A[s];
do{
do i ++ ;while (1);
do j -- ;while(A[j]>x);
if(i<j){temp=A[i];(2);(3);}
}while(i<j);
A[a] =A[j];A[j] =x;
if(s<i-1) (4);
if(j+1<t) (5);
}
第10题
阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。
【说明】
下面的Java程序演示了如何使用Applet在网页上显示图形用户界面CUI(graphical user interface),该实例显示一个时钟。每当浏览器显现Applet的内容时都调用start()函数,让applet得以开始工作(尤其时那些被stop()函数所关闭的工作)。每当浏览器不再显现Applet的内容时都调用stop()函数,让applet得以关闭某些甚耗资源的工作调用destroy()函数之后也会调用此函数。每当浏览器将Applet从网页移除时都调用destroy()函数,已执行"applet不再被使用时"应该做的最后释放资源等动作。每当调用repaint()函数时,或网页窗口须重新刷新时调用paint()函数。
【Java程序】
import java.applet.*;
import java.awt.*;
public class ClockApplet extends (1) implements Runnable
{ //运行函数,每隔一秒刷新一次时间
public void run(){
while (true){
try{
Thread.sleep(1000);
}
catch (InterruptedException e){}
(2); //刷新当前时间
}
}
public void start(){ //调用此函数,并根据条件启动时钟线程或重起线程
if(clockThread= =null){
clockThread = new Thread(this);
clockThread. start();//启动新创建的线程
}
else
clockThread.(3);//恢复挂起的线程
}
public void stop(){ //挂起时钟线程
if (clockThread ! = null)
clockThread. (4);
}
public void destroy(){//停止时钟线程
if (5) {
clockThread.stop();
clockThread = null;
}
}
public void paint(Graphics g){//在网页上重新显示时间
g. drawString(new java.util. Date().toString(), 10,30);
}
private Thread clockThread;
}
为了保护您的账号安全,请在“赏学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!