A.取值是-1,0,1,2中的一个
B.取值是0,1,2,3中的一个
C.取值是1,2,3,4中的一个
D.任意整数
第1题
阅读下列说明和C代码,回答问题 1 至问题3,将解答写在答题纸的对应栏内。
【说明】
某应用中需要对100000 个整数元素进行排序,每个元素的取值在 0~5 之间。排序算法的基本思想是:对每一个元素 x,确定小于等于 x的元素个数(记为m),将 x放在输出元素序列的第m 个位置。对于元素值重复的情况,依次放入第 m-l、m-2、…个位置。例如,如果元素值小于等于4 的元素个数有 10 个,其中元素值等于 4 的元素个数有3个,则 4 应该在输出元素序列的第10 个位置、第 9 个位置和第8 个位置上。
算法具体的步骤为:
步骤1:统计每个元素值的个数。
步骤2:统计小于等于每个元素值的个数。
步骤3:将输入元素序列中的每个元素放入有序的输出元素序列。
【C代码】
下面是该排序算法的C语言实现。
(1)常量和变量说明
R:常量,定义元素取值范围中的取值个数,如上述应用中 R值应取6i:循环变量
n:待排序元素个数
a:输入数组,长度为n
b:输出数组,长度为n
c:辅助数组,长度为R,其中每个元素表示小于等于下标所对应的元素值的个数。
(2)函数sort
1 void sort(int n,int a[ ],intb[ ]){
2 int c[R],i;
3 for (i=0;i< (1) ;i++){
4 c[i]=0;
5 }
6 for(i=0;i<n;i++){
7 c[a[i]] = (2) ;
8 }
9 for(i=1;i<R;i++){
10 c[i]= (3) ;
11 }
12 for(i=0;i<n;i++){
13 b[c[a[i]]-1]= (4) ;
14 c[a[i]]=c[a[i] ]-1;
15 }
16 }
【问题1】(8 分)
根据说明和C代码,填充 C代码中的空缺(1)~(4)。
【问题2】(4 分)
根据C代码,函数的时间复杂度和空间复杂度分别为 (5) 和 (6) (用 O符号
表示)。
【问题3】(3 分)
根据以上C代码,分析该排序算法是否稳定。若稳定,请简要说明(不超过 100 字);
若不稳定,请修改其中代码使其稳定(给出要修改的行号和修改后的代码)。
从下列的2 道试题(试题五和试题六)中任选 1 道解答。
如果解答的试题数超过 道,则题号小的 道解答有效。
第2题
public class Servletl extends HttpServlet{
public void init() throws ServletException{
}
public void service(HttpServletRequest
request,HttpServletResponse response)throws
ServletException,IOException{
PrintWriter ut=response.getWriter();
out.println(“hello!”);
}
}
A、编译该文件时会提示缺少doGet()或者doPost()方法,编译不能够成功通过
B、编译后,把Servletl.class放在正确位置,运行该Servlet,在浏览器中会看到输出文字:hello!
C、编译后,把Servletl.class放在正确位置,运行该Servlet,在浏览器中会看不到任何输出的文字
D、编译后, 把Servletl.class放在正确位置,运行该Servlet,在浏览器中会看到运行期错误信息
第3题
【说明】
源程序文件vectorClass.cpp,其中定义了用于表示向量的类vector,但类vector的定义并不完整。请按要求完成下列操作,将类vector的定义补充完整,并给出输出结果。
1.补充类vector的构造函数,该函数有参数x和y,它们都是int型的数据,默认值都为 0。请使用参数列表的形式分别将类的数据成员a和b分别初始化为参数x和y的值。
2.完成类vector的成员函数input(int x,int y)的定义,将int型的参数x和y分别赋值给数据成员b和a。
3.完成类vector的友元函数friend double Multiply(vector &x,vector &y)的定义,先定义 double型的临时变量c,然后将参数对象x和对象y的数据成员a与b分别相乘再相加后赋值给c,最后返回c的值。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件vectorClass.cpp清单如下:
include < iostream. h >
class vector
{
int a;
int b;
public:
vector((1)):(2)
{
}
void input(int x, int y)
{ (3)
}
void output( )
{
cout<<'('<<a<<','<<b<<")" <<endl;
}
friend double Multiply(vector &x,vector &y);
};
double Multiply(vector &x,vector &y)
{
double c;
(4)
return c;
}
void main( )
{
vector x(10,20),y;
double d;
y. input(2,3)
d=Multiply(x,y);
cout<<d<<endl;
}
程序输出结果是:(5)。
第4题
A.class B { }
B.class B extends A { }
C.class B implements A { }
D.class A { }
第5题
B、窗体事件和其中所有控件事件的代码都放在窗体文件中
C、窗体的名字和存盘的窗体文件名必须相同
D、开始运行时窗体的位置只能是设计阶段时显示的位置,不能改变
第6题
DIM X AS INTEGER
DIM Y AS INTEGER
PRIVATE SUB FORM_CLICK()
DIM X AS INTEGER
X=1
Y=1
CALL AA(Y+1)
Z=BB(X)
'* * * * * * *
MSGBOX "X="&X&"/Y="&Y&"/Z="&Z
END SUB
PRIVATE SUB AA(BYVAL Z AS INTEGER)
Y=Z+X
Z=X+Y
END SUB
PRIVATE FUNCTION BB(BYREF Y AS INTEGER
Y=Y+1
BB=X+Y
END FUNCTION
第7题
A.目录
B.书目
C.图表目录
D.引文目录
第8题
[应用说明]
启动某应用程序后,其运行窗口左边会出现两只蝴蝶,下边有“启动”和“停止”
两个按钮。单击“启动”按钮后,伴随“两只蝴蝶”音乐,两只蝴蝶会分别沿两条互绞的曲线,从左至右翩翩飞行(见下图),而且飞出窗口右边后又会再从窗口左边飞入。单击“停止”按钮时,两只蝴蝶停止飞行,回到初始状态,音乐也同时停止。再单击“启动”按钮时,蝴蝶重新开始伴音飞行。
在开发该应用时,两只蝴蝶用两个图像框来表示,分别命名为Imagel和Image2,其Picture属性分别设置为各个蝴蝶的图像文件名,其stretch属性都应设置为 (1) ,使图像能自动改变大小以适应图像框。再在窗体中建立“启动”按钮(名为CmdStart)和“停止”按钮(名为CmdStop)。
蝴蝶所飞行的路线分别用正弦和余弦曲线描述。为此,首先需要用Scal方法对窗体定义坐标系统。设左上角坐标为(0,0),右下角坐标为(20,6)。蝴蝶1的飞行曲线设为:y1=2+sinx,蝴蝶2的飞行曲线设为:y2=2+cosx。蝴蝶飞行的位置坐标(x,y)确定了蝴蝶图像框的位置(Left属性值和Top属性值)。
设置一个定时器(名为timerl),其定时时间间隔为0.1秒,所以其Interval属性值应设置为100。每隔0.1秒需要对两个图像框的位置进行一次调整。初始时,该定时器的 Enabled属性应设为False(关闭状态)。
为使该应用程序运行时能播放声音文件,在开发时应利用菜单“工程—部件”,选择加载组件“Microsoft Multimedia Control 6.0”,并在窗体中设置多媒体控件(设命名为 MMC)。由于不需要用户控制,其Visible属性可设置为False(不可见)。右击该控件,可选择该控件中各按钮的属性,应注意选择“播放”有效、“停止”有效。“两只蝴蝶”的音乐文件应提前准备好,并通过某种音频处理程序将其转换成WAV格式,存放在开发该应用的当前目录中。
Dim (2) '声明全局变量
Private Sub Form_Load()
Scale(0,0)-(20,6) '定义窗体的坐标系统
End Sub
Private Sub CmdStart_Click()
x=0
MMC.DevkeType=''WaveAudio'' '设置多媒体设备类型
MMC.FileName=''两只蝴蝶.wav'' '确定声音文件名
MMC.Cornmand=''Open'' '打开多媒体设备
MMC.Command=''P1ay'' '启动声音的播放
Timer1.Enabled=True '打开定时器
End Sub
Private Sub Timer1_Timer()
Ifx>20 Thenx=x-20 '蝴蝶飞到右边界后再回到左边界
Image1.Left=x '动态调整蝴蝶框的位置
Imagel.Top= (3)
Image2.Len=x
lmage2.Top= (4)
x=x+0.1 '确定蝴蝶下一步飞行位置
End Sub
Private Sub CmdStop_Click()
(5)
Image1.Left=0 '蝴蝶位置初始化
Image1.Top=2
Image2.Left=0
Imagc2.Top=3
MMlC.Command=''Stop'' '停止播放
MMC.Command=''Ciosc'' '关闭多媒体设备
End Sub
第9题
[说明]
以下程序实现了利用鼠标任意移动圆形的位置,仔细阅读代码和相关注释,将程序补充完整。
[代码6-1]
import java.awt.*;
import java.awt.event.*;
public class CIUSAMPLE extends Frame. implements MouseMotionListener, MouseListener
{
static CIUSAMPLE frm=new CIUSAMPLE ( );
int x=70,y=60,posX=70,posY=60,dx,dy;
public static void main (String args[])
{
frm.setTitle ("Dragging a circle");
frm.setSize (200,150);
(1)
ffm.addMouseMotionListener (frm);
frm.setVisible (true);
}
public void mousePressed (MouseEvent e)
{
(2)
dy=e.getY ( ) -posY;
}
public void mouseDragged (MouseEvent e)
{
(3)
y=e.getY ( ) -dy;
if(dx>0&&dx<50&&dy>0&&dy<50) //如果指针落在正方形区域内
{
Graphicsg=getGraphics ( );
(4)
}
}
public void paint (Graphics g)
{
g.setColor (Color.pink); //设置绘图颜色为粉红
g.fillOval(x,y,50,50); //以基准点为图形在左上角绘出圆形
(5)
posY=y;
}
public void mouseMoved (MouseEvent e) {}
public void mouseReleased (MouseEvent e) {}
public void mouseEntered (MouseEvent e) {}
public void mouseExited (MouseEvent e) {}
public void mouseClicked (MouseEvent e) {}
}
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!