对以上【Java源程序】进行运行测试,请将以下(9)、(10)空缺处的测试命令填写完整。 在本机运行WebServ
对以上【Java源程序】进行运行测试,请将以下(9)、(10)空缺处的测试命令填写完整。
在本机运行WebServer程序,然后打开IE浏览器。
1)在IE地址栏中,输入请求“/index.html”页面的命令:(9)。
2)在IE地址栏中,输入关闭Web服务器的命令:(10)。
对以上【Java源程序】进行运行测试,请将以下(9)、(10)空缺处的测试命令填写完整。
在本机运行WebServer程序,然后打开IE浏览器。
1)在IE地址栏中,输入请求“/index.html”页面的命令:(9)。
2)在IE地址栏中,输入关闭Web服务器的命令:(10)。
第1题
阅读以下技术说明、Java源程序和运行测试部分,根据要求回答问题1和问题2。
【说明】
1.HTTP
◆ HTTP请求消息示例
GET/index,htmlHTTP/1.1
Accept:image/gif,image/jpeg,*/*
Accept-Language:zh-ch
Accept-encoding:gzip,deflate
User-Agent:Mozilla/4.0(compatible: MSIE6.0;Windows 2003)
Host:localhost:8080
Connection:Keep-Alive
◆ HTTP响应消息示例
HTTP/1.1 200 OK
Servert:Microsoft-IIS/6.0
Date:Mon,3 Jan 2008 13:13:33 GMT
Content-Type:text/html
Last-Modified:Mon,11 Jan 2008 13:23:42 GMT
Contelit-Length:112
<html>
...
</html>
2.相关类及主要成员函数
◆ ServerSocket类
服务器端套接字,它监听固定端口,以接收来自客户端的连接请求,一旦建立连接就返回一个Socket类型的对象,类中的主要成员函数如表6-16所示。
◆Socket类 基于连接的套接字,类中的主要成员函数如表6-17所示。
【Java源程序:一个简单的Web服务器】
/* WebScrvc.java */
packageobjclass;
import java.net.*;
import java.io.*;
public class WebServer{
public static final int PORT=8080; //Web服务器侦听的端口号
public static final String WEB_ROOT= SyStem.getProperty("user.dir")+
File.separator+"webroot";
//WEB_ROOT变量存放Web服务器工作目录,HTML, GIF图片等静态文件资源
private static final String SHUTDOWN_COMMAND="/shutdown";
//SHUTDOWN_COMM_AND变量保存关闭服务器的命令
private Boolean shutdown=false; //是否收到关闭服务器命令的标志
public static void main(Sting[] args) {
WebServer server=new WebServer();
Server.await ()
}
public void await() {
ServerSocket serverSocket = null;
try {
serverSocket = new (1);
//创建侦听端口号为PORT的ServerSocket类型的对象
System.out.println ("WebServerStarted!");
}
catch(IOException e) {
e.printStackTrace ();
SyStem. exit (1);
}
while(!shutdown) { //循环等待客房端连接
Socket socket = null;
InputStream input = null;
OutputStream utput = null;
try{
Socket =(2); //创建来自客房端的连接套接字
Input = socket.(3); //创建输入流
utput = socket.(4); //创建输出流
Request reque
第2题
阅读以下说明和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;
}
第3题
阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。
【说明】
下面的Java程序演示了如何在用户等待载入主程序时显示logo图片的例子。logo图片mylogo.gif存放在文件夹image下面。显示logo图片的是一个线程类logo。
【Java程序】
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.ImageIcon.*;
import java.lang.Runnable;
public class mainFrame. extends JFrame
{
public static void main(String[] args)
{
Logo lg=new Logo("image/mylogo.gif");
lg. (1);
mainFrame. main_framE. = new mainFrame();
main_frame.setTitle("使用logo图片示例程序”);
Thread.sleep(1);//程序暂时挂起
main_frame.setVisible(true);
lg. (2);//使logo图片不可见
}
}
class Logo extends JWindow implements (3)
{
String filename;//Logo图像文件的文件名
public Logo(Stringname){
filename = name;
}
public void run()
{
ImageIcon ig = new ImageIcon(filename);
JButton btn = new JButton(ig); //将图片给JButton显示
getContentPane(). (4); //将按钮加到JPanel里
Toolkit kit = Toolkit.getDefauhToolkit();
Dimension screenSize = kit.getScreenSize(); //获得屏幕的大小
setLocation(screenSize.width/4,screenSize.height/4);
//将Logo窗口显示在屏幕宽的1/4,高的1/4处
setSize(ig. getIconWidth(),ig. getIconHeight()); //将Logo窗口大小设成图像的大小
toFront(); //将Logo窗口显示为最前面的窗口
setVisible(true) (5); //显示该窗口
}
public void setNOtVisible()
{
setVisible(false);
}
}
第4题
阅读下列算法说明和算法流程,将应填入(n)处的字句写在对应栏内。
【算法说明】
程序实现了常见的猜数字游戏。游戏开始时由程序自动产生一个1到100的随机数,接收用户输入,并给出提示信息,直至用户猜对。用户猜对后,显示猜测次数,并提供“重新开始”和“退出”功能。
算法采用两层循环实现。外层循环采用do-while循环,由循环条件控制是否重新开始。内层采用for循环,用于判断用户的每次输入。m是随机产生的整数,键盘输入是字符串类型变量,n是整型变量。
【问题1】内循环还需要一个变量,其作用为(1)。
【问题2】请将流程图5.2补充完整。
第5题
阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。
【C++程序】
include < stdio. h >
include < string. h >
define Max 1000
class Bank
{
int index;
char date [Max] [10]; // 记录交易日
iht amount[Max]; // 记录每次交易金额,以符号区分存钱和取钱
int rest[ Max]; // 记录每次交易后余额
static iht sum; // 账户累计余额
public:
Bank( ) {index =0;}
void deposit( char d[ ] , int m) //存入交易
{
strcpy ( date [ index ], d);
amount[ index] = m;
(1);
rest[ index] = sum;
index++;
}
void withdraw (char d[ ], int m) //取出交易
{
strcpy( date[ index] ,d);
(2);
(3);
rest[ index] = sum;
index++;
}
void display( );
};
int Bank:: sum = 0;
void Bank:: display ( ) //输出流水
{
int i;
printf("日期 存入 取出 余额\n");
for (4)
{
printf(" %8s" ,date[i] );
if (5)
printf(" %6d" , -amount[i] );
else
printf( "%6d ",amount[i] );
printf( "% 6d\n" ,rest[i] );
} }
void main( )
{
Bank object;
object. deposit ( "2006.2.5", 1 00 );
object. deposit( "2006.3.2" , 200);
object. withdraw( "2006.4.1", 50);
object. withdraw( "2006.4.5", 80);
object. display ( );
}
本程序的执行结果如下:
日期 存入 取出 余额 2006.2.5 100 100
2006.3.2 200 300
2006.4.1 50 250
2006.4.5 80 170
第6题
阅读以下说明和C程序,将应填入(n)处的字句写在对应栏内。
【说明】
并行计算中需要将N个作业分配给N个处理器同时去完成,每个处理器都能承担这N个作业,但耗时不同。下面的程序用回溯法计算总耗时最小的一种作业分配方案,在该方案中为每个处理器分配1个不同的作业。
程序中,N个作业从0开始依次编号,N个处理器也从0开始依次编号,主要的变量说明如下:
c[i][j]:将作业i分配给处理器j的耗时;
job[i]:值为0表示作业i未分配,值为j表示作业i分配给处理器j;
processor[k]:值为0表示处理器k未分配作业,值为1表示处理器k已分配作业;
mincost:最小总耗时。
【C程序】
include<stdio.h>
define N 8/*N表示作业数和处理器数*/
int c[N][N];
unsigned int mincost=65535/*设置min的初始值,大于可能的总耗时*/
int job[N],temp[N],processor[N];
void Assign(int k,unsigned int cost)
{
int i;
if (1)&& cost<mincost){
mincost = cost
for(i=0;i<N;i++)temp[i]=job[i];
}
else {
for(i=0;i<N;i++)/*分配作业k*/
if (2)&& cost+c[k][i]<mincost){
processor[i]=1;job[k]=(3);
Assign (4),cost+c[k][i]);
(5);job[k]=0;
}/ * if * /
}
}/ *Assign * /
void main()
{
int i,j;
for(i=0;i<N;i++){/*设置每个作业由不同处理器承担时耗时及全局数组的初值*/
processor[i]=0;job[i]=0;temp[i]=0;
for(j=0;j<N;j++)
scanf("%d",&c[i][j]);
}
Assign(0,0);/*从作业0开始分配*/
printf("\n最小耗时=%d\n",mincost);
for(i=0;i<N;i++)
printf("Job%d is assigned to Processor%d\n",i,temp[i]);
}/*main*/
第7题
阅读下列程序说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。
【说明】
程序利用选择排序算法对数组a中的N个整数按照从小到大的顺序排列,并将排序结果显示出来。
【程序】
define N 10
main()
{
void (1);
int i,a[N];
for(i=0;i<10,i++) /*输入*/
scanf(“%d”,&a[i]);
(2);
for(i=0;i<N,i++) /*输出*/
printf(“%3d”,a[i]);
}
void selectSon(int x[],int n)
{
int i,j,k,t;
for(int i=0; (3);i++)
{
k=i;
for(j=i+1;j<n;j++)
if (4) k=j;
if (5)
{t=x[i];x[i]=x[k];x[k] =t;}
}
}
第8题
阅读以下说明C++代码,将应填入(n)处的字句写在对应栏内。
[说明]
以下程序的功能是实现堆栈的一些基本操作。堆栈类stack共有三个成员函数:empty判断堆栈是否为空;push进行人栈操作;pop进行出栈操作。
[C++程序]
include "stdafx. h"
include <iostream, h>
eonst int maxsize = 6;
class stack {
float data[ maxsize];
int top;
public:
stuck(void);
~ stack(void);
bool empty(void);
void push(float a);
float pop(void);
};
stack: :stack(void)
{ top =0;
cout < < "stack initialized." < < endl;
}
stack:: ~stack(void) {
cout < <" stack destoryed." < < endl;
bool stack:: empty (void) {
return (1);
void stack: :push(float a)
if(top= =maxsize) {
cout < < "Stack is full!" < < endl;
return;
data[top] =a;
(2);
}
float stack:: pop (void)
{ if((3)){
cout< < "Stack is undcrflow !" < < endl;
return 0;
(4);
return (5);
}
void main( )
{ stack s;
coat < < "now push the data:";
for(inti=l;i< =maxsize;i+ +) {
cout< <i< <" ";
s. push(i);
}
coat < < endl;
cout< < "now pop the data:";
for(i = 1 ;i < = maxsize ;i + + )
cout< <s. pop()< <" ";
}
第9题
阅读以下关于某绘图系统的技术说明、部分UML类图及C++程序,将C++程序中(1)~(6)空缺处的语句填写完整。
【说明】
某绘图系统存在Point、Line和Square这三种图元,它们具有Shape接口,图元的类图关系如图5-10所示。
现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来,它提供了的接口不被系统直接使用。【C++代码5-1】既使用了XCircle又遵循了Shape规定的接口,即避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。【C++代码5-2】根据用户指定的参数生成特定的图元实例,并对它进行显示操作。
该绘图系统定义的接口与XCircle提供的显示接口及其功能如表5-13所示。
【C++代码5-1】
class Circle: public (1) {
Private;
(2) m_circle;
Public;
void display(){
m_circle. (3)
}
};
【C++代码5-2】
class Factory{
public;
(4) getShapeInstance(int type){ //生成特定类实例
Switch(type){
case 0: return new Point;
case 1: return new Rectangle;
case 2: return new Line;
case 3: return new Circle;
default: return NULL;
}
}
};
void main(int argc, char *argv[]){
if(argc !=2){
cout<<"error parameters!"<<endl;
return;
}
int type=atoi(argv[1]);
Factory factory;
Shape *s;
s=factory.(5);
if(s==NULL){
cout<<"Error get the instance!"<<endl;
return;
}
s->display();
(6);
Return;
}
第10题
阅读以下应用说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。
【说明8.1】
以下程序的功能是:生成20个200~300之间的随机整数,输出其中能被5整除的数并求出它们的和。
【程序代码8.1】
Private Sub Command1_Click()
For i=1 To 20
x=Int((1)*200+100)
If (2)=0 Then
Print x
S=S+ (3)
End If
Next i
Print"Sum=";S
End Sub
【说明8.2】
程序8.2运行后,单击窗体,则在窗体上显示的内容是:a=(4)和b=(5)。
【程序代码8.2】
Private Sub Form_Click()
Dim a As Integer,b As Integer
a=20:b=50
p1 a,b
p2 a,b
p3 a,b
Print"a=";a,"b=";b
End Sub
Sub p1(x As Integer, ByValy As Integer)
x=x+l0
y=y+20
End Sub
Sub p2(ByVal×As Integer, y As Integer)
x=x+l0
y=y+20
End Sub
Sub p3(ByVal×As Integer, ByVal y As Integer)
x=x+10
y=y+20
End Sub
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!