阅读以下说明,以及用C++在开发过程中所编写的程序代码,将应填入(n)处的字句写在对应栏内。
【说明】
在下面函数横线处填上适当的字句,使其输出结果为:
构造函数.
构造函数.
1,2
5,6
析构函数
析构函数.
【C++代码】
include "iostream.h"
class AA
{ public;
AA(int i,int j)
{A=i; B=j;
cout<<"构造函数.\n";
}
~AA(){(1);}
void print();
private:
int A, B;
};
void AA∷print()
{cout<<A<<","<<B<<endl;}
void main()
{
AA *a1, *a2;
(2)=new AA(1, 2);
a2=new AA(5, 6);
(3);
a2->print();
(4) a1;
(5) a2;
}
第1题
[说明]
在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文件中内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的DocExplorer对象都将得到通知,这种应用被称为Observer(观察者)模式。以下代码采用C++语言实现,能够正确编译通过。
[C++代码]
第2题
[说明]
我国现行使用的公民身份证号码有两种,分别遵循两个国家标准:〖GB 11643-1989〗和〖GB 11643-1999〗。〖CB 11643-1989〗中规定的是15位身份证号码,排列顺序从左至右依次为:六位数字地址码,六位数字出生日期码,三位数字顺序码,其中出生日期码不包含世纪数。〖GB 11643 -1999〗中规定的是18位身份证号码,是特征组合码,它由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。其中,校验码C由本体码按如下过程求得:
(1)计算校验码和S=a18W18+a17W17+…+a2W2,其中i表示18位身份证号,码每一位的序号,从右至左,最左侧为18,最右侧为1;ai表示身份证号码第i位上的号码;wi表示第i位上的权值,其值为2i-1模11的结果;
(2)计算校验码值R,其值为校验和模11的结果;
(3)根据下面对应关系找出校验码C:
由上述计算过程可以看出,18位身份证号码中可能包含非数字的字母X(代表数字10)。下面的应用程序基于这一算法实现了身份证号码的升位查询:
在开发过程中,显示新旧两种身份证号码的文本框(TextBox)分别名为Text1和Text2,“号码升位”按钮(CommandButton)名为Command1。
代码中使用到的字符串函数及功能说明如下:
(1)Len(s):获取字符串s的长度;
(2)Left(s,1):返回字符串s左端长度为1的子串;
(3)Right(s,1):返回字符串s右端长度为1的子串;
(4)Mid(s,p,1):返回字符串s从第P个字符开始长度为1的子串。
[Visual Basic代码]
’计算18位身份证号码
Private Sub Commandl_Click()
Dim code As String
Dim S As Integer
code = Textl. Text '提取15位身份证号码
If Len(code) < > 15 Then
MsgBox "ID 号码长度不正确,请检查!"
(1)
End If
code = Left(code, 6) + "19" + (2) (code, 9) '年份升位
S=0
For i = 18 To 2 Step -1 '计算校验码和
S = S + Clnf((3)) * (2 ^ (i - 1) Mod11)
Next i
(4) '计算校验码值
Select Case S '确定校验码
Case 0: code = code + "1"
Case 1: code = code + "0"
Case 2: code = code + "X"
Case Else: code = code + CStr((5))
End Select
Text2. Text = code '显示18位身份证号码
End Sub
第3题
[说明]
本程序提供了三阶矩阵加、减及乘运算的功能。用户单击“生成操作数”按钮将随机生成两个矩阵(即操作数1和操作数2),再单击某一矩阵运算按钮后,程序将输出相应运算的结果。程序运行界面如下:
开发过程中,界面上从左至右三个文本框分别取名为Text1至Text3,“生成操作数”按钮名为 CmdNew,“+”、“-”和“*”构成按钮控件组,分别名为CmdOperate(0)、CmdOperate(1)和CmdOperate(2)。
已知n阶矩阵加、减法运算法则是对应位置的元素相加、减;n阶矩阵的乘法C=AB有公式:Cij=AilBij+AilBij+…+An1Bnj其中记号Xij表示矩阵X第i行第j列上的元素。程序使用的主要变量是三维数组matrix(3,3,3),其元素matrix(i,j,k)代表第i个矩阵j行k列上的元素,这里i,j,k均从0开始计数,第0、1、2个矩阵分别表示操作数1、操作数2和结果矩阵。
代码中用到的子过程及其功能说明如下:
(1) Sub newMatrices():随机产生矩阵运算的两个操作数;
(2) Sub printOut(txt As TextBox, i As Integcr):定义矩阵i向文本框txt的输出格式;
(3) Sub operate(operation As String):计算并输出矩阵运算结果。
[Visual Basic代码]
Dim matrix(3, 3, 3) As Integer
Sub newMatrices()
……… End Sub
Sub printOut(txt As TextBox, i As Integer)
……… End Sub
Sub operate(operation As String)
Dim i, j, k As Integer
For i = 0 To 2
For j = 0 To 2
(1)
Case"+": matrix(2, i, j) = matrix(0, i, j) + matrix(1, i, j)
Case"-": matrix(2, i, j) = matrix(0, i, j) - matrix(1, i, j)
Case"*"
matrix(2, i, j) = 0
For k = 0 To 2
matrix(2, i, j) = matrix(2, i, j) +(2)
Next
End Select
Next
Next
printOut (3)
End Sub
Private Sub CmdNew_Cliek() ’“生成操作数”按钮的单击事件响应代码
(4)
printout Text1,0
printout Text2,1
End Sub
Private Sub CmdOperale_Click(Index As Integer) ’矩阵运算按钮组的单击事件响应代码
operate CmdOperate(Index).(5)
End Sub
第4题
【说明】
某个文本文件中存放了若干个非零数值有效数据,每个数据占一行,最后一行以数字“0”作为结束标志。下面的程序用于计算该文件中这
些数据之和,其运行窗口如下。
用户只要通过驱动器列表框、目录列表框和文件列表框,选择文本文件所在的驱动器、文件夹及相应的文件名,再单击“累计”按钮,就
能在“总计”文本框中看到该文本文件中的数据之和。
在开发过程中,设驱动器列表框名为Drivel,目录列表框名为Dirl,文件列表框名为Filel,存放数据的文本文件名为D:\test\vb7\datA
.txt,“累计”按钮名为sum,“总计”文本框(TextBox)名为textl。
【Visual Basic代码】
Private Sub Drivel_Change()
Dirl.Path=(1) '户选择的驱动器反映到目录列表框中
End Sub
Private Sub Dirl_Change()
Filel.Path=(2) '用户选择的文件夹改变文件列表框内容
End Sub
Private Sub sum_Click()
Dim (3) As New FileSystemOject, (4) As TextStxeam
'创建自己的文件系统对象,说明自己的文本流对象
If Right (Dirl.Path,1)="\"Then
SetmyTextFile=fso.OpenTextFile (Dirl.Path+Filel.FileNamc)
Else
SetmyTextFile=fso.OpenTextFile(Dirl.Path+”\’+Filel.FileName)
End“
S=0
Do
d=Val (myTextFilE.ReadRow)
S=S+d
Loop While (5)
Textl.Text=Str$(S)
End Sub
第5题
【说明】
某绘图系统存在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;
}
第6题
【问题1】(6分) 系统维护的工作流程如图4-1所示,请在如下备选答案A~F中选择最合适的一项填入空(1)~(6)处。 备选答案: A.制定维护计划 B.编制维护报告 C.提交管理部门审批 D.维护要求评价 E.撤销申请 F.用户及管理部门审核【问题2】 系统维护工作的对象是整个系统的配置,可以是系统功能的模块代码,也可以是系统开发过程中的开发文档。当业务处理出现问题或发生变化,就要修改应用程序及相关文档。维护工作按照维护的具体目标可以分为完善性维护、适应性维护、纠错性维护和预防性维护四个方面。 (1)统一调查表明, ( ) 维护工作在所有维护工作中有比例最高,大约占到全部维护工作的 ( ) %。 (2)如果某项维护工作时将现有的报表功能改成通用报表生成功能,以应付今后报表内容和格式可能的变化,那么这项维护工作属于 ( ) 。 【问题3】(5分) 简要说明信息系统的维护计划应该包括哪些方面。
第8题
阅读以下说明和C代码,将应填入(n)处。
[说明]
在一公文处理系统中,开发者定义了一个公文结构OfficeDoc,其中定义了公文应该具有的属性(字段)。当公文的内容或状态发生变化时,与之相关联的DocExplorer结构的值都需要发生改变。一个OfficeDoc结构能够关联一组DocExplorer结构。当OfficeDoc结构的内容或状态发生变化时,所有与之相关联的DocExplorer结构都将被更新,这种应用被称为观察者模式。以下代码采用C语言实现,能够正确编译通过。
[C代码]
include <stdio.h>
define OBS_MAXNUM 20 /*一个OfficeDoc变量最多能够关联的*/
/*DoeExplorer变量的个数*/
typedef void((1))(struct OfficeDoc*,street DocExplorer*);
struct DocExplorer{
func update;/* DocExplorer结构采用的更新函数*/
/*其他的结构字段省略*/
};
struct OfficeDoc{
(2) myObs[OBS_MAXNUM];
/*存储所有与OfficeDoc相关联的DoeExplorer结构指针*/
int index;/*与OfficeDoc结构变量相关联的DocExplorer结构变量的个数*/
};
void attach(struet OfficeDoc *doc, struet DocExplorer *ob){
/*关联Obersver结构ob与OfficeDoe结构doc*/
int loop=0;
if(doc->index >=OBS_MAXNUM || b==NULL) return;
for(loop=0; loop <doc->index; loop++)
if(doc->myObs[loop]==ob)return;
doc->myObs[doe->index]=ob;
doc->index++;
)
void detach(struct OfficeDoc *doc, struct DocExplorer *ob){
/*解除doc结构与ob结构间的关系*/
int loop;
if(ob==NULL)return;
for(loop=0; loop <doc->index; loop6++){
if(doc->myObs[loop]==ob){
if(loop<=doc->index-2)
doe->myObs[loop]=doc->myObs[ (3) ];
doc->myObs[doe->indox-1]=NULL;
doe->index--;
break;
}
}
}
void updatel(struct OfficeDoc *doc,struct DocExplorer *ob){
/*更新ob结构的值,更新代码省略*/
}
void update2(stmct OfficeDoc *doc, struct DocExplorer *ob){
/*更新ob结构的值,更新代码省略*/
}
void notifyObs(struet OfficeDoc *doc){
/*当doc结构的值发生变化时,通知与之关联的所有DocExplorer结构变量*/
int loop;
for(loop=0; loop <doc->index; loop++){
(doc->myObs[loop])->update((4));
}
}
void main(){
stmct OfficeDoc doc;/*定义一OfficeDoc变量*/
struct DocExplorer explorer1, explorer2;/*定义两个DocExplorer变量*/
/*初始化与OfficeDoc变量相关的DocExplorer变量个数为0*/
doc.index=0;
explorer1.update=update1;/*设置explorer1变量的更新函数*/
explorer2.update=update2;/*设置explorer2变量的更新函数*/
attaeh(&doc,&explorer1);/*关联explorer1与doc对象*/
attach(&doc,&explorer2);/*关联explorer2与doc对象*/
/*其他代码省略*/
(5);/*通知与OfficeDoc相关的所有DocExplorer变量*/
return;
}
第10题
1. 在CCS中利用C语言编写C54x DSP程序时,需要运行时支持库支持,请简答以下问题。 (1)请简述运行时支持库的作用。 (2分) (2)如果选择使用rts.lib,请问在编译链接选项中选择使用“近调用”还是“远调用”? (2分) 2. 以TMS320C54x DSP为例,请分析DSP的中断处理系统: (1)写出确定TMS320VC54x DSP中断向量入口地址的计算方法?(2分) (2)如果IPTR设置为1FFH,计算INT0(中断号为16)的中断向量入口地址。(2分) 3. 写出TMS320C54x的数据寻址方式,注意至少要写出5种。 (5分) 4. (1)为什么要使用Bootloader程序?(2分) (2)在TMS320VC5416芯片的Bootloader 程序中,可以采用哪些方式进行Bootloader自举。(5分) 5. 以TI TMS320VC5416 DSP作为主处理芯片,设计一个嵌入式系统通过其XF管脚输出频率为8KHz的方波信号。 如果使用DSP的时钟中断进行方波输出设计(每发生一次中断改变一次XF输出的电平),请问其TDDR、PRD寄存器的值应设为多少?(DSP以160MHz全速运行)(4分) 6. 在基于C语言编程的TMS320VC5416 DSP嵌入式系统应用程序开发过程中,DSP的存储空间映射和分配是重要知识点,请分析解答以下存储空间映射和分配的问题。在DSP程序初始化时执行 #define PMST (volatile unsigned int*)0x1D *PMST = 0x7FA0 ; // 给PMST寄存器赋值 语句后,请解释说明并绘制出数据存储空间、第0页程序存储空间的存储器映射图。(6分)
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!