(一)选择题
1.在以下情况中,(1)适合于采用队列数据结构。
(1)A.监视一个火车站售票窗口等待服务的客户
B.描述一个组织中的管理机制
C.统计一个商场中的顾客数
D.监视进入某住宅楼的访客
2.软件测试的目的是(2)。
(2)A.尽可能地找出软件中的缺陷
B.缩短软件的开发时间
C.减少软件的维护成本
D.证明程序没有缺陷
3.In C language,a(3)is a series of charaters enclosed in double quotes.
(3)A.matrix B.string C.program D.stream
(二)问答题
试题一(必选样题)
阅读以下说明和算法,完善算法并回答问题,将解答填入答题纸的对应栏内。
【说明】
假设以二维数组G[1..m,1..n]表示一幅图像各像素的颜色,则G[i,j]表示区域中点(i,j)处的颜色,颜色值为0到k的整数。
下面的算法将指定点(图3.jpg)所在的同色邻接区域的颜色置换为给定的颜色值。约定所有与点(图3.jpg)同色的上、下、左、右可连通的点组成同色邻接区域。
例如,一幅8×9像素的图像如图1所示。设用户指定点(3,5),其颜色值为0,此时其上方(2,5)、下方(4,5)、右方(3,6)邻接点的颜色值都为0,因此这些点属于点(3,5)所在的同色邻接区域,再从上、下、左、右4个方向进行扩展,可得出该同色邻接区域的其他点(见图1中和阴影部分)。将上述同色区域的颜色替换为颜色值7所得的新图像如图2所示。
【算法】
输入:矩阵G,点的坐标(图3.jpg),新颜色值newcolor。
输出:点(图3.jpg)所在同色邻接区域的颜色为newcolor之后的矩阵G。
算法步骤(规范算法,规定该算法只在第七步后结束):
第一步:若点(图3.jpg)的颜色值与新颜色值newcolor相同,则(1);
第二步:点(图3.jpg)的颜色值→oldcolor;创建栈S,并将点坐标(图3.jpg)入栈;
第三步:若(2),则转第七步;
第四步:栈顶元素出栈→(x,y),并(3);
第五步:1)若点(x,y-1)在图像中且G[x,y-1]等于oldcolor,则(x,y-1)入栈S;
2)若点(x,y+1)在图像中且G[x,y+1]等于oldcolor,则(x,y+1)入栈S;
3)若点(x-1,y)在图像中且G[x-1,y]等于oldcolor,则(x-1,y)入栈S;
4)若点(x+1,y)在图像中且G[x+1,y]等于oldcolor,则(x+1,y)入栈S;
第六步:转(4);
第七步:算法结束。
【问题1】
是否可以将算法中的栈换成队列?回答:(5)。
试题二(必做的C语言样题)
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。
【函数说明】
函数int fun 1(int m,int,n)的功能是:计算并返回正整数m和n的最大公约数。
【函数】
int fun 1(int m,int n)
{
While((1)){
If(m>n)m=m-n;
Else n=n-m;
}
(2);
}
【函数说明】
函数long fun2(char*str)的功能是:自左至右顺序取出非空字符串str中的数字字符形成一个十进制整数(最多8位)。
例如,若字符串str的值为“f3g8d5.ji2e3p12fkp”,则函数返回值为3852312。
【函数】
long fun2(char*str)
{int i=0;
long k=0;
char*p=str;
while(*p!=""&$(3)){
if(*p>="0"&&*p<="9"){
k=(4)+*p-"0";
++i;
}
(5);
}
Return k;
}
试题三(选做的C语言样题)
阅读以下说明和C程序,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某种传感器的输出值Ratio依赖于环境温度temp(-40℃≤temp≤50℃)。对一组环境温度值(ITEMS个),人们已经测量得到了相应的Ratio值(见表3-1)。该表粗略地描述了曲线Ratio(temp)。
校下系数K是Ratio的倒数,因此也依赖于环境温度temp。在数据处理中,人们需要用更多的列表值细致地描述曲线K(temp),如表3-2所示。在表3-2中,各温度值所对应的K值是对表3-1进行线性插值再求倒数得到的,具体的计算方法如下:
(1)根据temp值,在表3-1中用二分法查找;
(2)若找到相应的温度值,则按相应的Ratio值求倒数得到K值;
(3)若没找到相应的温度值,则可确定temp所在的温度区间[Tp1,Tp2],同时获得了相应的Ratio1和Ratio2,再按如下公式计算K值:
Step=(Ratio1-Ratio2)/(Tp1-Tp2)
K=1.0/(Ratio1+Step*(temp-Tp1))
在程序中,当temp高于50℃或低于℃时,设定K=0。
【程序】
#include
typedef struct{
int Temp;/*环境温度*/
double Ratio;/*传感器的输出值*/
}CURVE;
#define ITEMS 7
double GetK(int,CURVE*,int);
Void main()
{
int Degree;
double k;
CURVE Curve{ITEMS}={{-40,0.2},{-20,0.60},{-10,0.8},
{0,1.0},{10,1.17},{30,1.50},{50,1.8}};
printf("环境温度校正系数n");
for(Degree=-40;Degree<=50;Degree++){
k=Getk(Degree,Curve,ITEMS);
printf("%3d%4.2fn",Degree,k);
}
}
double Get(int Temp,CURVE*P,int n)
{/*用二分法在n个元素有的序表p中查找与Temp对应的传感器输出值*/
int low,high,m;double Stemp;
low=0;high=n-1;
if((Temp
return 0.0;/*超出温度范围时返回0.0*/
while(low<=high){
m=(1);
if(Temp==(p+m)->Temp)
return(2);
if(Temp
else low=(3);
}
p+=high;
Step=((4))/((p+1)->Temp–p->Temp);
return 1.0/(p->Ratio+Step*((5)));
}
试题四(选做的C++语言样题)
阅读以下说明和C++程序,将解答写在答题纸的对应栏内。
【说明】
已知类SubClass的getSum方法返回其父类成员与类SubClass成员j的和,类SuperClass中的getSum为纯虚拟函数。程序中的第23行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,分析程序运行到第15行且尚未执行第15行的语句时成员变量j的值,最后给出程序运行后的输出结果。
【C++代码】
试题五(选做的Java语言样题)
阅读以下说明和Java程序代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
在下面的Java程序代码中,类SalesTicket能够完成打印票据正文的功能,类HeaDecorator与FootDecorator分别完成打印票据的台头和脚注的功能。
已知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。
这是票据的台头!
这是票据的正文!
这是票据的脚注!
---------------------------
这是票据的台头!
这是票据的脚注!
【Java程序代码】
public class SalesTicket{
public void printTicket(){
System.out.printle("这是票据的正文");
}
}
public class Decorator extends SalesTicket{
SalesTicket ticket;
public Decorator(SalesTicket t){
ticket=t;
}
public void printTicket(){
if(ticket!=null)
ticket.printTicket();
}
}
public class HeadDecorator extends Decorator{
public HeadDecorator(SalesTicket t){
(1);
}
public void printTicket(){
System.out.println("这是票据的台头");
super.printTicket();
}
}
public class FootDecorator extends Dexorator{
public FootDexorator(SalesTicket t){
(2);
}
public void printTicket(){
super.printTicket();
System.out.println("这是票据的脚注!");
}
}
public class Main{
public static void main(String[]args){
T=new HeadDecorator((3));
T.(4);
System.out.println("------------------------");
T=new FootDecorator((5));
T.printicket();
}
}