B.栈顶元素表示的是与当前字符匹配的右括号
C.字符是左括号
D.字符是右括号
E.栈不空F.栈空G.字符是括号
第1题
阅读以下技术说明和问题模型图,根据要求回答问题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)空缺处的内容。
第2题
阅读下列说明、图和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所引用的内存空间是相同的。
第3题
阅读下列说明和流程图,将应填入(n)的字句写在对应栏内。
【说明】
下列流程图(如图4所示)用泰勒(Taylor)展开式
sinx=x-x3/3!+x5/5!-x7/7!+…+(-1)n×x2n+1/(2n+1)!+…
【流程图】
计算并打印sinx的近似值。其中用ε(>0)表示误差要求。
第4题
为使应用程序启动时所载入的窗口(图6-16)中具有背景图像(取自用户自定义的某个图像文件“C:\user\background.bmp”),并且在程序运行时,当被遮的该窗口又重现时,其背景图像会自动重画。在开发如图6-16所示窗体时,应对窗体属性对话框(图6-17)中哪些关键属性进行什么样的设置?
第5题
阅读以下说明和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;
}
}
第7题
阅读以下应用说明及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
第8题
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
[说明]
该程序从正文文件test.txt中读入一批整数,并将它们按照递增的顺序存放在一个链表中。其中,函数struct Link*insertChain(struct Link*head,structLink*k)用来寻找结点k在链表head中的插入位置,并插入该结点。
[C程序]
include <stdio.h>
include <stdlib.h>
struct Link
{ int number;
struct Link *next;
}
struct Link *insertChain(struct Link *head,struct Link *k);
VOid main()
{ struct Link *ptr, *head;
FILE *fd;
int hum;
if((fd=fopen("test.txt","r"))==NULL)
{print("Cannot open this file!\n");
return;
}
head=NULL;
while(fscanf(fd,"%d",hum)==1)
{ ptr=(1);
if(!ptr) return;
ptr->number=hum;
ptr->next=NULL;
head=insertChain(head,ptr);
}
(2);
return;
}
struct Link *insertChain(struct Link *head,struct Link *k)
{ struct Link *ptr,*u;
ptr=head;
while(ptr && k && k->number>ptr->number)
{ u=ptr; (3) }
if(ptr == head) head=k;
else (4);
(5);
return head;
}
第9题
读以下说明和流程图,回答问题将解答填入对应栏。
[说明]
下面的流程图,用来完成求字符串t在s中最右边出现的位置。其思路是:做一个循环,以s的每一位作为字符串的开头和t比较,如果两字符串的首字母是相同的,则继续比下去,如果一直到t的最后一个字符也相同,则说明在s中找到了一个字符串t;如果还没比较到t的最后一个字符,就已经出现字符串不等的情况,则放弃此次比较,开始新一轮的比较。当在s中找到一个字符串t时,不应停止寻找(因为要求的是求t在s中最右边出现位置),应先记录这个位置pos,然后开始新一轮的寻找,若还存在相同的字符串,则更新位置的记录,直到循环结束,输出最近一次保存的位置。如果s为空或不包含t,则返回-1。
注:返回值用pos表示。
[问题]
将流程图的(1)~(5)处补充完整。
第10题
阅读以下说明和C++ 程序,将应填入(n)处的字句写在对应栏内。
[说明]
试从含有n个int 型数的数组中删去若干个成分,使剩下的全部成分构成一个不减的子序列。设计算法和编写程序求出数组的不减子序列的长。
[C++ 程序]
include<stdio.h>
define N 100
int b[]={9,8,5,4,3,2,7,6,8,7,5,3,4,5,9,1};
int a [N];
define n sizeofb/sizeofb[0]
void main ( )
{
kit k,i,j;
(1)
(2)
for (i=1;i<n; i++ )
{
for ( j=k;(3); j--);
(4); /*长为 j+1 的子序列的终元素存储在 a[j+1]*/
if ((5)k++; /*最长不减子序列长 k 增1*/
}
printf ( "K = %d\n ",k );
}
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!