第四届复赛B卷.docx

上传人:b****7 文档编号:9634473 上传时间:2023-02-05 格式:DOCX 页数:15 大小:33.38KB
下载 相关 举报
第四届复赛B卷.docx_第1页
第1页 / 共15页
第四届复赛B卷.docx_第2页
第2页 / 共15页
第四届复赛B卷.docx_第3页
第3页 / 共15页
第四届复赛B卷.docx_第4页
第4页 / 共15页
第四届复赛B卷.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

第四届复赛B卷.docx

《第四届复赛B卷.docx》由会员分享,可在线阅读,更多相关《第四届复赛B卷.docx(15页珍藏版)》请在冰豆网上搜索。

第四届复赛B卷.docx

第四届复赛B卷

第四届全国ITAT教育工程就业技能大赛复赛试题

Java程序设计(B卷)

请考生仔细阅读并严格遵守题目中关于文件保存和命名的要求。

请务必按照试卷要求为文件命名。

考生答题完毕后,首先创建以“准考证号”命名的文件夹(形式如:

433034683),并将考试结果严格按题目上的命名要求进行命名并直接保存在该文件夹下。

注意:

考生不得在该文件夹下创建任何子文件夹,所有考试结果均直接保存在该文件夹根目录下。

  然后选中整个文件夹,用Winrar压缩工具打包后存放在本考场指定的考试结果存放地址,经监考老师确认上传无误后方可离开考场。

注意:

在提交答案时,请务必选中上述存放作品的文件夹(如前面创建的433034683文件夹,而不是文件夹下的全部文件)进行压缩,在完成答案提交后,请确保上述压缩包仍保存在本地计算机中。

请务必按照试卷要求提交指定的文件,不得包含非题目要求的过程文件和临时文件,不得包含本试题文件和试题素材。

注意:

凡违反上述规定的考生,其成绩一律按零分处理。

题目命名要求:

请将编写好的源程序以T+题号的方式命名,例如第1题的源程序保存为“T1.java”),题目本身有命名要求的除外。

1、水仙花数是指其个位、十位、百位三个数的立方和等于这个数本身。

编写一个Java应用程序,求出所有水仙花数。

(20分)

publicclassaaa{

/**

*wanglong

*/

publicstaticvoidmain(String[]args){

intb=1,s,g;

intc=0;

for(b=1;b<=9;b++){

for(s=0;s<=9;s++){

for(g=0;g<=9;g++){

intself=100*b+10*s+g;

intsum=b*b*b+s*s*s+g*g*g;

if(self==sum){

System.out.println(self);

}

}

}

}

}

}

2、编写一个Java应用程序,利用RandomAccessFile类往某个文本文件中写入20个整数(0~19),然后从该文件的第12个字节开始,将后面所有的数据(对应写入的整数)读出。

(25分)

packageITAT4;

importjava.io.IOException;

importjava.io.RandomAccessFile;

publicclasstest2{

/**

*wanglong

*/

publicstaticvoidmain(Stringargs[])throwsIOException{

RandomAccessFilef=newRandomAccessFile("iata4","rw");

intdata[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,

16,17,18,19};

for(inti=0;i

f.writeInt(data[i]);

}

f.seek(12);

for(longi=1;i<=17;i++){

if(f.getFilePointer()!

=0){

System.out.print(","+f.readInt());

}else{

return;

}

}

f.close();

}

}

 

3、编写一个JavaGUI应用程序,窗口标题为“GridLayout”,窗口布局如下图A所示,在图A窗口中单击任意一个Button,网格的划分方式会变化为图B;在图B窗口中单击任意一个Button,网格的划分方式会变化为图A。

(25分)

 

 

图A图B

packageITAT4;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.JFrame;

classWinGridextendsFrameimplementsActionListener{

/**

*wanglong

*/

privatestaticfinallongserialVersionUID=1L;

GridLayoutgrid;

Buttonone=newButton("one");

Buttontwo=newButton("two");

Buttonthree=newButton("three");

Buttonfour=newButton("four");

Buttonfive=newButton("five");

Buttonsix=newButton("six");

inti=0;

WinGrid(inta,intb){

this.setLayout(newGridLayout(a,b));

add(one);

add(two);

add(three);

add(four);

add(five);

add(six);

this.setSize(400,300);

this.setResizable(false);

this.setLocationRelativeTo(null);

this.setVisible(true);

this.addWindowListener(newWindowAdapter()//为了关闭窗口

{

publicvoidwindowClosing(WindowEvente){

System.exit(0);

}

});

one.addActionListener(this);

two.addActionListener(this);

three.addActionListener(this);

four.addActionListener(this);

five.addActionListener(this);

six.addActionListener(this);

}

publicvoidactionPerformed(ActionEvente){

if(i==0){

i=1;

this.setLayout(newGridLayout(2,3));

this.setVisible(true);

}else{

i=0;

this.setLayout(newGridLayout(3,2));

this.setVisible(true);

}

}

}

publicclassExample7_15{

publicstaticvoidmain(Stringargs[]){

newWinGrid(3,2);

}

}

4、采用Java多线程技术,设计实现一个符合生产者和消费者问题的程序。

对一个对象(枪膛)进行操作,其最大容量是12颗子弹。

生产者线程是一个压入线程,它不断向枪膛中压入子弹;消费者线程是一个射出线程,它不断从枪膛中射出子弹。

(30分)

要求:

(1)给出分析过程说明。

(10分)

(2)程序输出,要模拟体现对枪膛的压入和射出操作;(10)

(2)设计程序时应考虑到两个线程的同步问题。

(10)

两个线程对同一个对象的同一个成员变量进行操作,要考虑到该成员变量的属性范围,同时考虑线程的同步问题。

packageITAT4;

publicclasstest4{

/**

*wanglong

*/

publicstaticvoidmain(String[]args){

xianchengx=newxiancheng();

System.out.println("线程开始");

x.yaru.start();

x.shechu.start();

}

}

classqiangtang{

intzidan=0;

voidadd(){

zidan++;

}

voidmove(){

zidan--;

}

intget(){

returnzidan;

}

}

classxianchengimplementsRunnable{

Threadyaru;

Threadshechu;

xiancheng(){

yaru=newThread(this);

yaru.setName("压入");

shechu=newThread(this);

shechu.setName("射出");

}

qiangtangq=newqiangtang();

publicvoidrun(){

while(true){

if(Thread.currentThread()==yaru){

//q.add();

if(q.get()<12){

q.add();

System.out.println("加入一颗子弹,共有:

"+q.get()+"颗");

}else{

try{

Thread.sleep(500);

}catch(InterruptedExceptione){

}

}

}elseif(Thread.currentThread()==shechu){

if(q.get()>0){

q.move();

System.out.println("射出一颗子弹,共有"+q.get()+"颗");

}else{

try{

Thread.sleep(500);

}catch(InterruptedExceptione){

}

}

}

}

}

}

附加题:

5、某企业为了促销,搞抽奖宣传活动,奖品为新款手机一部,抽奖规则如下:

(1)有n个盒子摆成一圈,盒子按顺时针方向依次编号为0,1,2,……,n-1。

手机随机放在其中一个盒子中。

(n为自然数)

(2)从0号盒子开始摸奖,顺时针方向计数,每遇到第m个盒子就摸奖一次。

(m为自然数,m

(3)直到重新摸到0号盒子为止。

例如n=5,m=3,那么摸奖经过的盒子编号依次为0,3,1,4,2,0。

请编写一个完整的程序,随机输入n,m(m

如果有,概率是多少?

(概率=不被抽中的可能数/n)(30分)

importjava.util.HashSet;

importjava.util.Scanner;

importjava.util.Set;

publicclassDrawOutAward{

/**

*wanglong

*/

 

publicstaticvoidmain(Stringargs[]){

newDrawOutAward();

}

publicDrawOutAward(){

//BufferedReaderbr=newBufferedReader(new

//InputStreamReader(System.in));

Scannerscan=newScanner(System.in);

intn=5;

intm=3;

booleanflag=true;

while(flag){

System.out.print("请输入n:

");

n=scan.nextInt();

System.out.print("请输入m:

");

m=scan.nextInt();

if(m

flag=false;

else{

System.out.println("m必须要小于n");

}

}

Setset=newHashSet();

set.add(0);

System.out.print("摸奖过程:

0,");//起点

for(inti=0;(i+m)%n!

=0;){

intj=(i+m)%n;

System.out.print(j+",");

set.add(j);

i=j;

}

System.out.println(0);//终点

if(n==set.size())

System.out.println("一定会被抽中");

else{

floatresult=(n-set.size())/(float)n;

System.out.println("不被抽中的概率为:

"+result);

}

}

}

6、采用UDP协议,编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分。

客户端指定一个服务器上的文件名,让服务器发回该文件的内容,或者提示文件不存在。

(20分)(服务端程序和客户端程序分别命名为Server.java和Client.java)

7、

服务端:

packagesever;

importjava.io.*;

import.*;

publicclassServer{

/**

*wanglong

*/

publicstaticvoidmain(Stringargs[]){

ServerSocketserver=null;

Socketyou=null;

Strings=null;

DataOutputStreamout=null;

DataInputStreamin=null;

try{

server=newServerSocket(4332);

}catch(IOExceptione1){

System.out.println(e1);

}

try{

System.out.println("等待客户呼叫");

you=server.accept();

out=newDataOutputStream(you.getOutputStream());

in=newDataInputStream(you.getInputStream());

s=in.readUTF();

while(true){

System.out.println("服务器收到:

"+s);

out.writeUTF("你好:

我是服务器");

if(!

(newFile("d:

/"+s).exists())){

out.writeUTF("文件不存在");

System.out.println("文件不存在");

return;

}

out.writeUTF("文件存在");

System.out.println("文件已发送");

FileInputStreamfis=newFileInputStream(newFile("d:

/02.jpg"));

byte[]buf=newbyte[288072];

fis.read(buf);

out.write(buf,0,288072);

Thread.sleep(1000);

}

}catch(Exceptione){

System.out.println("客户已断开"+e);

}

}

}

客户端:

packagesever;

importjava.io.DataInputStream;

importjava.io.DataOutputStream;

importjava.io.FileOutputStream;

importjava.io.IOException;

import.*;

importjavax.swing.JFrame;

publicclassshowtuextendsJFrame{

/**

*

*/

privatestaticfinallongserialVersionUID=9113050687899503448L;

publicstaticvoidmain(String[]args){

try{

Strings=null;

Socketmysocket;

DataInputStreamin=null;

DataOutputStreamout=null;

mysocket=newSocket("127.0.0.1",4332);

in=newDataInputStream(mysocket.getInputStream());

out=newDataOutputStream(mysocket.getOutputStream());

out.writeUTF("02.jpg");

s=in.readUTF();

System.out.println("客户收到:

"+s);

s=in.readUTF();

System.out.println("客户收到:

"+s);

if(s.equals("文件不存在")){

System.out.println("文件不存在");

}else{

byte[]buf=newbyte[298072];

in.readFully(buf);

FileOutputStreamfos2=newFileOutputStream("9.jpg");

fos2.write(buf,0,298072);

}

}catch(IOExceptionex){

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1