阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。
[说明]
用链式存储结构实现的栈称为链栈。若链栈元素的数据类型为datatype,以LinkStack记链栈结构,其类型定义为:
typedef struct node
{ datatype data;
stmct node * next;
} StackNode, * LinkStack;
由于栈的主要操作都是在栈顶进行的,因此我们把链表的头部作为栈顶。设top为栈顶指针,即:LinkStack top。
下面各函数的功能说明如下:
(1)LinkStack Init_LinkStack():建立并返回空的链栈;
(2)int Empty_LinkStack(LinkStack top):判断top所指链栈是否空;
(3)LinkStack Push_LinkStack(LinkStacktop,datatypex):将数据x压人top所指链栈的栈顶,返回新栈指针;
(4)LinkStack Pop_LinkStack (LinkStacktop, datatype*x):弹出top所指链栈的栈顶元素x,返回新栈指针。
[函数]
LinkStaek Init_LinkStack()
{ returnNULL;
int Empty_LinkStack (LinkStaek top)
if(top = = NULL) return 1;
else return 0;
LinkStaek Push_LinkStaek(LinkStaektop, datatype X)
{ StaekNode *s;
s=malloc (sizeof(StaekNode) );
(1)= x;
(2)= top;
(3);
return top;
}
LinkStaek Pop_LinkStack (LinkStacktop, datatype * x)
{ StaekNode *p;
if(top = = NULL) return NULL;
else{
* x =(4);
p = top;
(5);
free (p);
return top;
}
}
第1题
阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列,新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面),最后调用writeDat()函数的新序列输出到文件out.dat中。
在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。
例:序列{6,8,9,1,2,5,4,7,3}
经重排后成为{3,4,5,2,1,6,8,9,7}
【函数】
include < stdio. h >
include < conio. h >
void jsValue( int a [10] [9] )
{ int i,j,k,n,temp;
int b[9];
for(i=0;i<10;i++)
{ temp=a[i] [0];
k=8;n=0;
for(j=8;j=0;j--)
{ if(temp < a[i] [j]) (1)=a[i][j];
if(temp >a[i] [j]) (2)=a[i][j];
if(temp =a[i] [j]) (3)= temp;
}
for(j=0;j<9;j++) a[i][j] =b[j];
}
}
void main( )
int a[10] [9] = {{6,8,9,1,2,5,4,7,3},{3,5,8,9,1,2,6,4,7},
{8,2,1,9,3,5,4,6,7}, {3,5,1,2,9,8,6,7,4},
{4,7,8,9,1,2,5,3,6}, {4,7,3,5,1,2,6,8,9},
{9,1,3,5,8,6,2,4,7}, {2,6,1,9,8,3,5,7,4},
{5,3,7,9,1,8,2,6,4}, {7,1,3,2,5,8,9,4,6}
};
int i,j;
(4);
for(i=0;i<10;i++) {
for(j=0;j<9;j++) {
printf("%d",a[i] [j] );
if((5))printf(",");
}
printf(" \n" );
}
getch( );
}
第2题
阅读下列函数说明和C代码,将应填入(n) 处的字句写在对应栏内。
【说明】
函数print(BinTreeNode*t; DateType &x)的功能是在二叉树中查找值为x的结点,并打印该结点所有祖先结点。在此算法中,假设值为x的结点不多于一个。此算法采用后序的非递归遍历形式。因为退栈时需要区分右子树。函数中使用栈ST保存结点指针ptr以及标志tag,Top是栈顶指针。
【函数】
void print( BinTreeNode * t; DateType &x) {
stack ST; int i, top; top = 0;//置空栈
while(t! = NULL &&t-> data!= x || top!=0)
{ while(t!= NULL && t-> data!=x)
{
/*寻找值为x的结点*/
(1);
ST[top]. ptr = t;
ST[top]. tag = 0;
(2);
}
if(t!= Null && t -> data == x) { /*找到值为x的结点*/
for(i=1;(3);i ++)
printf("%d" ,ST[top]. ptr ->data);
else {
while((4))
top--;
if(top>0)
{
ST[top]. tag = 1;
(5);
}
}
}
第3题
2”的逻辑判断结果为假,则无须对“判断条件3”进行判断。 判断条件1:(8) 判断条件2:(9) 判断条件3:(10) 【供选择的答案】A.栈顶元素表示的是与当前字符匹配的左括号
B.栈顶元素表示的是与当前字符匹配的右括号
C.字符是左括号
D.字符是右括号
E.栈不空F.栈空G.字符是括号
第4题
阅读以下技术说明和问题模型图,根据要求回答问题1和问题2。
【说明】
某大学城图书馆需要在无线阅览厅的某些位置上放置无线接入点AP(Access Poin)。假设每个无线AP覆盖范围的半径是6米,因此必须使得每台笔记本电脑上的无线网卡到某个无线AP的直线距离不超过6米。为了简化问题,假设所有无线网卡在同一直线上,并且无线AP沿该直线放置。该问题可以建模为如图1-16所示,其中直线表示无线网卡所在的直线,实心正方形表示无线网卡。现利用贪心策略实现用尽可能少的无线AP覆盖所有的无线网卡。
实现贪心算法的流程如图1-17所示。其中,①d[i](1≤i≤N)表示第i张无线网卡到通道A端的距离,N表示无线网卡的总数,无线网卡的编号按照无线网卡到通道A端的距离从小到大进行编号;②s[k]表示第k(k≥1)个无线AP到通道A端的距离。算法结束后k的值为无线AP的总数。
请填补图1-17流程图中(1)-(4)空缺处的内容。
第5题
阅读下列说明、图和C++代码,回答问题1至问题3。
【说明】
已知四个类之间的关系如图2-2所示,分别对每个类的方法进行编号,例如Shape的perimeter()方法为1号,表示为1:perimeter(),Rectangle类的perimeter()为2号,表示为2:perimeter(),依此类推,其中,每个类的perimeter方法都为虚函数且方法签名相同。
【C++代码】
Triangle *tr=new Triangle();
Square *sq=new Square();
Shape *sh =tr;
关于上述C++代码中sh和tr的以下叙述中,哪两个是正确的(写出编号)。
①sh和tr分别引用同一个对象;
②sh和tr分别引用同一类型的不同的对象:
③sh和tr分别引用不同类型的不同对象;
④sh和tr分别引用同一个对象的不同备份:
⑤sh和tr所引用的内存空间是相同的。
第6题
阅读下列说明和流程图,将应填入(n)的字句写在对应栏内。
【说明】
下列流程图(如图4所示)用泰勒(Taylor)展开式
sinx=x-x3/3!+x5/5!-x7/7!+…+(-1)n×x2n+1/(2n+1)!+…
【流程图】
计算并打印sinx的近似值。其中用ε(>0)表示误差要求。
第7题
为使应用程序启动时所载入的窗口(图6-16)中具有背景图像(取自用户自定义的某个图像文件“C:\user\background.bmp”),并且在程序运行时,当被遮的该窗口又重现时,其背景图像会自动重画。在开发如图6-16所示窗体时,应对窗体属性对话框(图6-17)中哪些关键属性进行什么样的设置?
第8题
阅读以下说明和C++程序,将应填入(n)处的语句写在的对应栏内。
【说明】
以下程序的功能是计算三角形、矩形和正方形的面积并输出。
程序由4个类组成:类Triangle、Rectangle和Square分别表示三角形、矩形和正方形;抽象类Figure提供了一个纯虚拟函数getArea(),作为计算上述3种图形面积的通用接口。
【C++程序】
include<iostream.h>
include<math.h>
class Figure {
public:
virtual double getArea()=0; //纯虚拟函数
};
class Rectangle:(1){
protected:
double height;
double width;
public:
Rectangle() {};
Rectangle(double height,double width) {
this->height=height;
this->width=width;
}
double getArea() {
return (2);
}
};
class Square:(3){
public:
Square(double width){
(4);
}
};
class Triangle:(5){
double la;
double lb;
double lc;
Public:
Triangle(double la, double lb, double lc) {
This->la=la; this->lb=lb; this->lc=lc;
}
double getArea() {
double s = (la+lb+±c)/2.0;
return sqrt(s,(s-la)*(s-lb)*(s-Ic));
}
};
void main() {
Figure*figures[3]={
new Triangle(2,3,3), new Rectangle(5,8), new SqUare(5));
for(int i=0;i<3;i++){
cout<<"figures["<<i<<"]area="<<(figures[i])->getArea()<<endl;
}
}
第10题
阅读以下应用说明及Visual Basic程序代码,根据要求回答问题1至问题4。
[说明]
某文件管理系统的图片浏览器如图3-19所示。运行程序时,用户只要通过驱动器列表框、目录列表框和文件列表框,选择文本文件所在的驱动器、文件夹及相应的文件名后,在图像框中将显示出相应的文件图像。
在开发过程中,假设驱动器列表框名为drvFile,目录列表框名为 dirFile,文件列表框名为filFile,选择文件类型组合框名为cboFile,图像框名为IMG nClick=over(this) title=放大Show。
图3-19 图片浏览器
[Visual Basic程序]
Private Sub Form_Load ()
IMG nClick=over(this) title=放大Show.Stretch=True
cboFile.Addltem "位图文件(*.bmp)"
cboFile.Addltem "图标文件(*.ico)"
cboFile.Addltem "图元文件(*.wmf)"
cboFile.Addltem "JPEG文件(*.jpg)"
cboFile.Addltem "GIF文件(*.gif)"
cboFile.ListIndex = 0
(1)
End Sub
Private Sub drvFile_Change ()
(2)
End Sub
Private Sub dirFile_Change ()
(3)
End Sub
Private Sub cboFile_Click ()
(4)
Case 0
filFile. Pattern= "*.bmp"
Case 1
filFile. Pattern= "*.ico"
Case 2
filFile. Pattern= "*.wmf"
Case 3
filFile. Pattern= "*.jpg.
Case 4
filFile. Pattern= "*.gif"
End Select
End Sub
Private Sub filFile_Click()
If (5) Then
IMG nClick=over(this) title=放大Show. Picture= LoadPieture(filFile. Path+ filFile.FileName)
Else
IMG nClick=over(this) title=放大Show. Picture= LoadPicture( (6) + "\" + (7) )
End If
End Sub
请根据[说明]和图3-19的显示结果,从以下备选答案中为程序(1)~(7)空缺处选择正确的答案。
[备选答案]
A. filFile.path B. dirFile.Path=drvFile.Drive
C.Right(filFile.Path,1) = "\" D.filFile.Pattern ="*.bmp"
E.filFile.Path = dirFile.Path F.filFile.FileName
G.Select Case cboFile.ListIndex
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!