文档库 最新最全的文档下载
当前位置:文档库 › 程序设计语言基础(答案)

程序设计语言基础(答案)

程序设计语言基础(答案)
程序设计语言基础(答案)

●已知文法G[S]:S→A0|Bl,A→S1|1,B→S0|0;该文法属于乔姆斯基定义的__(12)__文法,它不能产生串__(13)__。

(12) A. 0 型B. 1 型C. 2 型D. 3 型

(13) A. 0011 B. 1010 C. 1001 D. 0101

●语言L={ambn|m≥0,n≥1}的正规表达式是__(14)__。

(14) A. a*bb* B. aa*bb* C. aa*b* D. a*b*

●一个文法G=(N,T,P,S),其中N 是非终结符号的集合,T 是终结符号的集合,P 是产生式集合,S 是开始符号,令集合V=N∪T,那么G 所描述的语言是__(15)__ 的集合。

(15) A.由S 推导出的所有符号串B.由S 推导出的所有终结符号串

C.V 中所有符号组成的符号串D.V 的闭包中的所有符号串

●下图为一确定有限自动机的状态转换图,与该自动机等价的正规表达式是__(12)__,图中的__(13)__是可以合并的状态。

(12)A.(a|b)*bb(a*b*)* B.(a|b)*bba*|b*

C.(a*b*)bb(a|b)*

D.(a*|b*)*bb(a*|b*)

(13)A.0 和1 B.2 和3 C.1 和2 D.0 和3

正确答案:A

解析:在状态转换图中,每一个结点代表一个状态,其中双圈是终结状态。该题实际上是一个简化确定有限自动机(DFA)的过程,一个确定有限自动机可以通过消除多余状态和合并等价状态而转换成一个最小的与之等价的有限自动机。

首先介绍2个概念:最小状态DFA和等价状态。

最小状态DFA必须满足以下2个条件。

(1)没有多余状态(死状态):多余状态从该自动机的开始状态出发,任何输入串都不能到达的那个状态。

(2)没有2个状态是互相等价(不可区别)。

2个状态s和t如果同时满足下列2个条件,就称s和t是等价的。

(1)一致性:同是终态或同是非终态。

(2)蔓延性:从s出发读人某个a和从t出发读入某个a到达的状态等价。

本题的简化过程如下:

首先,将图中状态分为终态和非终态2个子集即({0,1},{2,3}),再进行子集划分,观察第一个子集{0,1},输入b后,状态0转换为状态1,而状态1转换为状态2。因此{1}和{2}中的状态是可区别的。

由于状态2,3输入字符a得到相同的结果3,输入字符b得到相同结果2,所以子集{2,3}是不可区别的。从而得到新的划分:({0},{1},{2,3}),因此,(2)空的正确答案为B。重复子集划分步骤,发现新的状态无法再次划分。

所以,本题中2,3状态可以消除3状态,得到新的状态转换图如图3-2所示。

由图3-2可知终态2可以转换为正规表达式(a|b)*,同时必须输入连续2个b字符,才能完成0状态到终态2的转换,所以结果正规表达式必为形如“...bb(a|b)*”的字符串。又因为0和1之间由b和a轮回输入,可以表示为(ba)*,同时,状态0上输入a又回到自身,可以表示为a*。因此,(1)空的正确答案应该为(a*b*)*bb(a|b)*,根据正规式之间的代数性质,(a*b*)*bb(a|b)*与(a|b)*bb(a*b*)*等价。

●编译的优化工作对于下面程序段构造的控制流程图有__(15)__个基本块。

A:=0

j:=100

i:=1loop1: B:=j+1

C:=B+I

A:=A+C

if i=100 goto loop2

i:=i+1 Goto loop1

loop2: write A

halt

(15)A.1 B.2 C.3 D. 4

正确答案:D

解析:基本块划分的3个步骤:

(1)满足下列3个条件之一的任一语句可充当入口。

①程序的第一个语句;

②能由条件转移语句或无条件转移语句转移到的语句;

③紧跟在条件转移语句后面的语句。

(2)根据(1)求出的每一入口语句,构造其所属的基本块。

①由该人口语句到另一入口语句(不包括该入口语句)之间的语句序列;

②由该人口语句到一转移语句(包括该转移语句)之间的语句序列;

③由该人口语句到一停转移语句(包括该转移语句)之间的语句序列。

(3)凡是未被纳入某一基本块中的语句,都是程序中控制流程无法到达的语句,从而也是不会被执行到的语句,可以从程序中删除。

在本题中,根据程序求解。

(1)确定入口。

A:=100 入口

j:=100

i:=1

loop1: B:=j+1 入口

C:=B+I

A:=A+C

if i=100 goto loop2

i:=i+1 入口

goto 100p1

100p2: write A 入口

halt 停语句

(2)确定基本块。

基本块1 A:=00 入口

j:=100

i:=1

基本块2 loop1: B:=j+1 入口

C:=B+I

A:=A+C

if i=100 goto 100p2

基本块3 i:=i+1 入口

goto loop1

基本块4 loop2: write A 入口

halt 停语句

(3)确定可删除语句。

没有无法到达的语句。

●文法G[S]:S→xSx|y 所描述的语言是__(16)__ (n≥0)。

(16)A.(xyx)n B.xyx n C.xy n x D.x n yx n

正确答案:D

解析:正规文法到正规式的转换规则如下:

在本题中,推导过程如下:

S->xSx->xyx->x2Sx2->x2yx2->

x3Sx3->x3yx3->...->x n Sx n->x n yx n

得出生成式的规律是:两个x串中间只有一个y,同时两边的x串等长。

●某一非确定性有限自动机(NFA)的状态转换图如下图所示,与该NFA 等价的正规式是_(28)_,与该NFA 等价的DFA 是_(29)_。A

(28) A.0*|(0|1)0 B.(0|10)* C.0*((011)0)* D.0*(10)*

正确答案:B

解析:根据分析题目中给出的状态转换图可知,该NFA可识别空串以及任意数目0组成的串,但若出现1,则其后至少要有1个0才能到达终态,因此,该自动机识别的串等价于正规式(0|10)*。

●某一确定性有限自动机(DFA)的状态转换图如下图所示,令d=0|1|2|…|9, 则

以下字符串中,不能被该DFA 接受的是____(28)____,与该DFA 等价的正规式是_(29)___。(其中,ε表示空字符)

① 3857 ② 1.2E+5 ③ -123 . ④ .576E10

(28)A.①②③ B.①②④ C.②③④ D.①②③④

(29)A.(-d|d)d*E(-d|d)d*|(-d|d)*.d*(ε|E(-d|d)d*)

B.(-d|d)dd*(.|ε)d*|(ε|E(-d|d)d*)

C.(-|d)dd*E(-|d)d*|(-d|d)dd*.d*(ε|E(-|d)d*)

D.(-d|d)dd*E(-d|d)d*|(-d|d|)dd*.d*(ε|E(-dd*|dd*))

正确答案:B

解析:有限自动机也称为有穷状态自动机,是一种数学机器模型,基本形式有非确定有限自动机(NFA)和确定的有限自动机(DFA),并且每一个NFA都有与其等价的DPA。有穷状态自动机的物理模型如下图所示。

[*]

一个DFA可以用状态转换图直观的方式。状态转换图是一种有向图。DFA中的每个状态对应转换图中的一个节点,从外部引入弧的节点表示开始节点,双圈节点表示终态;DFA中的每个状态转换对应图中的一条有向弧,若转换关系为/(A,a)=Q,则该有向弧从节点A出发,进入节点Q,字符a是弧上的标记。有穷状态自动机识别字符串的过程为:初始时,机器处于起始状态(题图中节点。表示初始状态)。读取一个输入符号,并进行相应的状态转移,直到输入串结束或找不到相应的状态转移时为止。根据题目终给定的自动机,识别3857、1.2E+5、-123.、.576E10的过程分别如下。

[*]

分析题中给定的有穷状态自动机,可知该自动机识别以下形式的数值:带小数部分的十进制表示形式和以尾数、指数表示的数值形式。其中,从初态0到达终态5所识别的是带小数点的以十进制数值表示形式的字符串,小数点后可以没有数字,也可以有若干个数字,而小数点之前的整数部分可以不带符号,也可以带负号,其正规式为“(-d|d)d*.d*。当数值的表示含有指数部分时,指数部分是不带符号(表示正数)或带负号的整数形式,因此该部分的正规

式为“E(-d|d)d*”。

●对于以下编号为①、②、③的正规式,正确的说法是___(30)___。

① (aa*|ab) *b ② (a|b) *b ③ ((a|b) *|aa) *b(30)

A.正规式①、②等价

B.正规式①、③等价

C.正规式②、③等价

D.正规式①、②、③互不等价

正确答案:C

解析:由于正规式①产生的字符串为a*b或ab*b,②产生的字符串为a*b或b*b,③产生的字符串为a*b或b*b,故②③等价。

●开发专家系统时,通过描述事实和规则由模式匹配得出结论,这种情况下适用的开发语言是(19)。

(19)A.面向对象语言B.函数式语言C.过程式语言D.逻辑式语言

正确答案:D

本题考查程序语言基本知识。函数式程序设计的数据结构本质上是表,而函数又可以作为值出现在表中,因此函数式程序的控制结构取决于函数,以及函数的定义和调用。函数式语言主要用于符号数据处理,如微分和积分演算、数理逻辑、游戏推演以及人工智能等其他领域。用逻辑式程序设计语言编写程序不需要描述具体的解题过程,只需要给出一些必要的事实和规则。这些规则是解决问题的方法的规范说明,根据这些事实和规则,计算机利用谓词逻辑,通过演绎推理得到求解问题的执行序列。这种语言主要用在人工智能领域,也应用在自然语言处理、数据库查询、算法描述等方面,尤其适合于作为专家系统的开发工具

●高级程序设计语言中用于描述程序中的运算步骤、控制结构及数据传输的是(20)。

(20)A.语句B.语义C.语用D.语法

正确答案:A

解析:本题考查程序语言的基本成分。程序设计语言的语法是语言的外观。给出语言的语法意味着给出语句、声明和其他语言结构的书写规则。语义则表示不同的语法结构的含义。在程序语言的手册中,语言的描述都是围绕着语法结构展开的。通常,先给出各种语句结构的语法,然后给出对应该结构的语义以描述内在含义。语用是关于程序与使用者之间的关系。在高级程序设计语言中,语句用于描述程序中的运算步骤、控制结构及数据传输。

●对于下面的文法G[S],(44)是其句子(从S 出发开始推导)。

G[S]:S→M|(S,M) M→P|MP P→a|b|c|…|x|x|z

(44)A.((a,F)) B.((fac,bb),g) C.(abc) D.(c,(da))

选B.

S=>(S,M)=>((S,M),M)=>((M,M),M)=>((MP,M),M)=>((MPP,M),M)=>((PPP,M),M)=>((f PP,M),M)=>((faP,M),M)

=>((fac,M),M)=>((fac,MP),M)=>((fac,PP),M)=>((fac,bb),M)=>((fac,bb),g).

●与逆波兰式ab+ -c*d-对应的中缀表达式是(45)。

(45)A.a-b-c*d B.-(a+b)*c-d C.-a+b*c-d D.(a+b)*(-c-d)

●下面的C 程序代码段在运行中会出现(46)错误。

int i=0;

while(i<10);

{i=i+l;}

(46)A.语法B.类型不匹配C.变量定义D.动态语义

●“通过指明一系列可执行的运算及运算的次序来描述计算过程”是(19)语言的特点。

(19)A.逻辑式B.函数式C.交互式D.命令式(或过程式)

正确答案:D

解析:过程式(或命令式)语言是基于动作的语言,在这种语言中,计算被看成是动作的序列。因此,通过指明一列可执行的运算及运算的次序来描述计算过程是命令式语言的特点。逻辑式语言是一类以形式逻辑为基础的语言。函数式语言以γ-演算为基础。

●“X=(A+B)× (C - D/E)”的后缀式表示为(20)。

(20)A.XAB+CDE/-×= B.XAB-C-DE/×=

C.XAB+CDE-/×= D.XAB-CD-E/×=

●下图是一有限自动机的状态转换图,该自动机所识别语言的特点是(45),等价的正规式为(46)。

(45)A.由符号a、b 构成且包含偶数个a 的串

B.由符号a、b 构成且开头和结尾符号都为a 的串

C.由符号a、b 构成的任意串

D.由符号a、b 构成且b 的前后必须为a 的串

(46)A.(a∣b)*(aa)* B.a(a∣b)*a C.(a∣b)* D.a(ba)*a

正确答案:B

解析:本题考查有限自动机的基本运算。在有限自动机的状态转换图中,每一个结点代表一个状态,其中双圈是终态结点。对于字符串ω,若存在一条从初态结点到某一终止状态结点的路径,且这条路径上所有弧的标记符连接成的字符串等于ω,则称①可由DFA M识别(接收或读出)。若一个DFA M的初态结点同时又是终态结点,则空字ε可由该DFA识别(或接收)。DFA M所能识别的语言L(M)={ω|ω①是从M的初态到终态的路径上的弧上标记所形成的串}。分析题中给出的自动机:从初态0出发,识别一个符号a后进入状态1,在状态1可识别出任意个a或(和)任意个b,再识别出一个a而到达终态2。显然,该自动机识别的语言特点是“由a开头由a结尾,期间的a、b任意排列”。用正规式表示为“a(a|b)*a”。

●表达式“(a+b)* (c-d)”的后缀表示为(48)。

(48)A. ab+cd-* B. abcd+-* C. ab+*cd- D. abcd*+-

●函数t()、f()的定义如下所示,若调用函数t 时传递给x 的值为3,并且调用函数f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,则函数t 的返回值为(49)。

(49)A. 35 B. 24 C. 22 D. 11

●程序设计语言中(50)。

(50)A. while 循环语句的执行效率比do-while 循环语句的执行效率高

B. while 循环语句的循环体执行次数比循环条件的判断次数多1,而do-while 语句的循环体执行次数比循环条件的判断次数少1

C. while 语句的循环体执行次数比循环条件的判断次数少1,而do-while 语句的循环体执行次数比循环条件的判断次数多1

D. while 语句的循环体执行次数比循环条件的判断次数少1,而do-while 语句的循环体执行次数等于循环条件的判断次数

●给定C 语言的数据结构

struct T {

int w;

union T { char c; int i; double d; } U;

};

假设char 类型变量的存储区大小是1 字节,int 类型变量的存储区大小是4 字节,double 类型变量的存储区大小是8 字节,则在不考虑字对齐方式的情况下,为存储一个struct T 类型变量所需要的存储区域至少应为(15)字节。(15)A. 4 B. 8 C. 12 D. 17

正确答案:C

解析:在不考虑字对齐规则的情况下,C语言中一个结构体变量的存储区大小就是其所有成员所需存储区大小之和,一个联合体变量的存储区大小就是其各成员所需存储区大小中的最大者。因此题目中给定的联合体union T变量需要的存储区大小就是存储一个double类型变量的大小(即8字节),struct T类型变量的存储区最小应为int类型成员w存储区大小(4字节)与union T类型成员U的存储区大小之和,即12字节。

●在过程式程序设计(①)、数据抽象程序设计(②)、面向对象程序设计(③)、泛型(通用)程序设计(④)中,C++ 语言支持(16),C 语言支持(17)。(16)A. ① B. ②③ C. ③④ D. ①②③④

(17)A. ① B. ①③ C. ②③ D. ①②③④

● C 语言是一种(18)语言。

(18)A. 编译型B. 解释型C. 编译、解释混合型D. 脚本

正确答案:A

编译型语言指用该语言编写的程序在执行前,需要由相应的编译器将源程序翻译为目标代码

程序,然后在目标机器上运行目标代码程序。解释型语言指用该语言编写的程序无需编译为目标代码,即可执行。对于解释型语言,都有相应的解释器,负责检查源程序的语法,进行语义分析,通常采用边翻译边执行的方式。对于C语言而言,一个C源程序必须由编译器将

其翻译为目标代码,才能在目标机上运行,因此,它是编译型语言。

●若程序运行时系统报告除数为0,这属于(20)错误。

(20)A. 语法B. 语用C. 语义D. 语境

●集合L ={amb m m ≥ 0} (21)。

(21)A.可用正规式“a *b *”表示

B.不能用正规式表示,但可用非确定的有限自动机识别

C.可用正规式“a mb m ”表示

D.不能用正规式表示,但可用上下文无关文法表示

●表达式“X = A + B × (C ? D )/ E”的后缀表示形式可以为(22)(运

算符优先级相同时,遵循左结合的原则)。

(22)A. XAB + CDE/?×= B. XA+BC?DE/×=

C. XABCD?×E/+=

D. XABCDE+×?/=

●在软件开发中,(29)不能用来描述项目开发的进度安排。在其他三种图中,可用(30)动态地反映项目开发进展情况。

(29)A. 甘特图B. PERT 图C. PERT/CPM 图D. 鱼骨图

(30)A. 甘特图B. PERT 图C. PERT/CPM 图D. 鱼骨图

●选择软件开发工具时,应考虑功能、(31)、稳健性、硬件要求和性能、服务和支持。

(31)A. 易用性B. 易维护性C. 可移植性D. 可扩充性

●内聚性和耦合性是度量软件模块独立性的重要准则,软件设计时应力求(32)。(32)A. 高内聚,高耦合B. 高内聚,低耦合

C. 低内聚,高耦合

D. 低内聚,低耦合

●对于如下的程序流程,当采用语句覆盖法设计测试案例时,至少需要设计(34)个测试案例。

(34)A. 1 B. 2 C. 3 D. 4

解析:语句覆盖是一种设计测试案例的方法,它要求对于设计的测试案例,必须使得程序的每一条可执行语句至少执行一次。对于图7-5所示的程序流程图可设计如下测试案例。

案例1:X=1,Y=2

此时执行语句序列为:X>0→Y=Y-X→Y>0→X=1。

案例2:X=-3,Y=2

此时执行语句序列为:X>0→Y=Y+X→Y>0→X=-1。

可见,只需设计两个测试案例即可使得程序的每条可执行语句至少执行一次。

●正则表达式1*(0|01)*表示的集合元素的特点是(48)。

(48)A. 长度为奇数的0、1 串B. 开始和结尾字符必须为1 的0、1 串

C. 串的长度为偶数的0、1 串

D. 不包含子串011 的0、1 串

分析:1* <=>1*0* & 1* * * (0|01) (01) 可得知得不出长度的奇偶性,也不能判断开始和结尾的字符,通过排除法可得到,不包含字串011的0、1串有可能

●设某程序中定义了全局整型变量x 和r,且函数f()的定义如下所示,则在语句“x = r*r +1 ;”中(49)。

int f(int r)

{ int x;

x = r*r +1 ;

return x;

}

(49)A. x 和r 均是全局变量B. x 是全局变量、r 是形式参数

C. x 是局部变量、r 是形式参数

D. x 是局部变量、r 是全局变量

●程序语言的大多数语法现象可用上下文无关文法描述。对于一个上下文无关文法G=(N,T,P,S),其中N 是非终结符号的集合,T 是终结符号的集合,P 是产生式集合,S 是开始符号。令集合V= N∪T,那么G 所描述的语言是(50)的集合。

(50)A. 从S 出发推导出的包含V 中所有符号的串

B. 从S 出发推导出的仅包含T 中符号的串

C. N 中所有符号组成的串

D. T 中所有符号组成的串

正确答案:B

解析:本题考查程序语言的基础知识。一个文法定义的语言是终结符号串的集合,这些终结符号串应能从文法的起始符号出发推导出来。

●在软件设计和编码过程中,采取(7)的做法将使软件更加容易理解和维护。(7)A. 良好的程序结构,有无文档均可B. 使用标准或规定之外的语句

C. 编写详细正确的文档,采用良好的程序结构

D. 尽量减少程序中的注释

●软件文档按照其产生和使用的范围可分为开发文档、管理文档和用户文档。其中开发文档不包括(8)。

(8)A. 软件需求说明B. 可行性研究报告C. 维护修改建议D. 项目开发计划

正确答案:C

解析:本题考查软件文档的分类和作用。软件文档在软件开发过程和运行维护中起着重要作用,比如文件可以提高软件开发过程的能见度,提高开发效率,便于协调软件的开发、使用和维护,另外也可对软件的运维和培训提供相关信息,便于各类相关人员之间进行交流。按照文档产生和使用范围,软件文件可分为开发文档、管理文档和用户文档,其中开发文档产生于软件开发过程,是前一阶段的工作成果体现,也是后一阶段工作的依据,用户文档是为用户准备的软件使用、操作、维护的资料。

●软件维护成本在软件成本中占较大比重。为降低维护的难度,可采取的措施有(9)。

(9)A. 设计并实现没有错误的软件B. 限制可修改的范围

C. 增加维护人员数量

D. 在开发过程中就采取有利于维护的措施,并加强维护管理

●关于汇编语言,以下叙述中正确的是(20)。

(20)A. 汇编语言源程序可以直接在计算机上运行

B. 将汇编语言源程序转换成目标程序的软件称为解释程序

C. 在汇编语言程序中,不能定义符号常量

D. 将汇编语言源程序翻译成机器语言程序的软件称为汇编程序

●对高级语言源程序进行编译时,可发现源程序中的(21)错误。

(21)A. 堆栈溢出B. 变量未定义C. 指针异常D. 数组元素下标越界

●编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段,其中,(22)并不是每种编译器都必需的。

(22)A. 词法分析和语法分析B. 语义分析和中间代码生成

C. 中间代码生成和代码优化

D. 代码优化和目标代码生成

●下列叙述中错误的是(23)。

(23)A. 面向对象程序设计语言可支持过程化的程序设计

B. 给定算法的时间复杂性与实现该算法所采用的程序设计语言无关

C. 与汇编语言相比,采用脚本语言编程可获得更高的运行效率

D. 面向对象程序设计语言不支持对一个对象的成员变量进行直接访问

●编译程序对高级语言源程序进行翻译时,需要在该程序的地址空间中为变量指定地址,这种地址称为(20)。

(20)A.逻辑地址B. 物理地址C. 接口地址D. 线性地址

●程序设计语言一般都提供多种循环语句,例如实现先判断循环条件再执行循环体的while 语句和先执行循环体再判断循环条件的do-while 语句。关于这两种循环语句,在不改变循环体的条件下,( 21 )是正确的。

(21)A. while 语句的功能可由do-while 语句实现

B. do-while 语句的功能可由while 语句实现

C. 若已知循环体的次数,则只能使用while 语句

D. 循环条件相同时,do-while 语句的执行效率更高

●表达式(a-b)*(c+5)的后缀式是(22)。

(22)A. a b c 5 + * - B. a b – c + 5 *

C. a b c - * 5 +

D. a b- c 5 + *

●给定文法G[S]及其非终结符A,FIRST(A)定义为:从A 出发能推导出的终结符号的集合(S 是文法的起始符号,为非终结符)。对于文法G[S]:

S→[L] | a

L→L, S| S

其中,G[S]包含的四个终结符号分别为:a , [ ]则FIRST(S)的成员包括(48)。(48)A. a B. a、[ C. a、[和] D. a、[、]和,

正确答案:B

解析:本题考查程序语言基础知识。

程序语言的语法可由上下文无关文法表示,合法的程序可看作是由该文法推导得到。

对于文法G[S],从S出发推导出[a,a]和a的过程可表示为:

S=>[L]=>[L,S]=>[S,S]=>[a,S]=>[a,a]

S=>a

从S出发可推导出以a或[开始的符号串,因此FIRST(S)的成员包括a、[。

●高级语言源程序的编译过程分若干个阶段,分配寄存器属于(49)阶段的工作。

(49)A. 词法分析B. 语法分析C. 语义分析D. 代码生成

●设某上下文无关文法如下: S→11 | 1001 | S0 |SS,则该文法所产生的所有二进制字符串都具有的特点是(50)。

(50)A. 能被3 整除B. 0、1 出现的次数相等

C. 0 和1 的出现次数都为偶数

D. 能被2 整除

●函数调用时,基本的参数传递方式有传值与传地址两种,(20)。(20)A. 在传值方式下,形参将值传给实参

B. 在传值方式下,实参不能是数组元素

C. 在传地址方式下,形参和实参间可以实现数据的双向传递

D. 在传地址方式下,实参可以是任意的变量和表达式

●已知某高级语言源程序A 经编译后得到机器C 上的目标程序B,则(21)。(21)A. 对B 进行反编译,不能还原出源程序A

B. 对B 进行反汇编,不能得到与源程序A 等价的汇编程序代码

C. 对B 进行反编译,得到的是源程序A 的变量声明和算法流程

D. 对A 和B 进行交叉编译,可以产生在机器C 上运行的动态链接库

正确答案:A

解析:本题考查程序语言方面的基础知识。编译是将高级语言源程序翻译成机器语言程序(汇编形式或机器代码形式),反编译是编译的逆过程。反编译通常不能把可执行文件还原成高

级语言源代码,只能转换成功能上等价的汇编程序。

●下面关于程序语言的叙述,错误的是(22)。

(22)A. 脚本语言属于动态语言,其程序结构可以在运行中改变

B. 脚本语言一般通过脚本引擎解释执行,不产生独立保存的目标程序

C. php、JavaScript 属于静态语言,其所有成分可在编译时确定

D. C 语言属于静态语言,其所有成分可在编译时确定

●下图所示有限自动机的特点是(48)。

(48)A. 识别的0、1 串是以0 开头且以1 结尾

B. 识别的0、1 串中1 的数目为偶数

C. 识别的0、1 串中0 后面必须是1

D. 识别的0、1 串中1 不能连续出现

●由a、b 构造且仅包含偶数个a 的串的集合用正规式表示为(49)。

(49)A. (a*a)*b* B. (b* (ab*a)*)* C. (a* (ba*)*b)* D. (a|b)* (aa)*

正确答案:B

解析:在正规式中,符号*表示重复若干次(包括O次),因此正规式“(a*a)*b*”中的表达式“(a+a)*”不能保证有偶数个a。同理,“(a*(ba*)*b)*”和“(a I b)*(aa)*”中对a的个数也没有限制,而在“(ab * a)*”中可以确保a的出现为偶数个。

●设某语言的语法规则用上下文无关文法G=(N,T,P,S)表示,其中N 是非终结符号的集合,T 是终结符号的集合,P 是产生式集合,S 是开始符号,令V=N∪T,那么符合该语言的句子是(50)。

(50)A. 从S 出发推导的、仅包含T 中符号的符号串

B. 从N 中符号出发推导的、仅包含T 中符号的符号串

C. 从S 出发推导的、包含V 中符号的符号串

D. 从N 中符号出发推导的、包含V 中符号的符号串

●许多程序设计语言规定,程序中的数据都必须具有类型,其作用不包括(20)。(20)A. 便于为数据合理分配存储单元

B. 便于对参与表达式计算的数据对象进行检查

C. 便于定义动态数据结构

D. 便于规定数据对象的取值范围及能够进行的运算

正确答案:D

解析:变量是用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在声明变量时也可以指定它的数据类型。所有变量都具有数据类型,以决定能够存储哪类数据。

●以下关于C/C++语言指针变量的叙述中,正确的是(21)。

(21)A. 指针变量可以是全局变量也可以是局部变量

B. 必须为指针变量与指针所指向的变量分配相同大小的存储空间

C. 对指针变量进行算术运算是没有意义的

D. 指针变量必须由动态产生的数据对象来赋值

●将高级语言源程序翻译为机器语言程序的过程中常引入中间代码。以下关于中间代码的叙述中,错误的是(22)。

(22)A. 不同的高级程序语言可以产生同一种中间代码

B. 使用中间代码有利于进行与机器无关的优化处理

C. 使用中间代码有利于提高编译程序的可移植性

D. 中间代码与机器语言代码在指令结构上必须一致

正确答案:D

试题(22分析

本题考查程序语言基础知识。

“中间代码”是一种简单且含义明确的记号系统,与具体的机器无关,可以有若干种形式。可以将不同的高级程序语言翻译成同一种中间代码。由于与具体机器无关,使用中间代码有利于进行与机器无关的优化处理,以及提高编译程序的可移植性。

●以下关于编译系统对某高级语言进行翻译的叙述中,错误的是(48)。(48)A. 词法分析将把源程序看作一个线性字符序列进行分析

B. 语法分析阶段可以发现程序中所有的语法错误

C. 语义分析阶段可以发现程序中所有的语义错误

D. 目标代码生成阶段的工作与目标机器的体系结构相关

●若一个程序语言可以提供链表的定义和运算,则其运行时的( 49)。(49)A. 数据空间适合采用静态存储分配策略

B. 数据空间必须采用堆存储分配策略

C. 指令空间需要采用栈结构

D. 指令代码必须放入堆区

正确答案:B

试题(49分析

本题考查程序语言基础知识。

链表中的结点空间需要程序员根据需要申请和释放,因此,数据空间应采用堆存储分配策略。

●由某上下文无关文法M[S]推导出某句子的分析树如下图所示,则错误的叙述是( 50)。

(50)A. 该文法推导出的句子必须以“a”开头

B. acabcbdcc 是该文法推导出的一个句子

C. “S->aAcB”是该文法的一个产生式

D. a、b、c、d 属于该文法的终结符号集

正确答案:A

解析:程序语言的语法可用上下文无关文法表示,合法的程序可看作是由该文法推导得到的。

程序设计语言 习题与答案

第六章习题 P159-161 一、复习题 1、简述自然语言与形式语言的概念以及区别、汇编语言与机器语言的概念及区别。 自然语言是某一社会发展中形成的一种民族语言,而形式语言是进行形式化工作的元语言,它是以数学和数理逻辑为基础的科学语言。用机器指令形式编写的程序称为机器语言,用带符号或助记符的指令和地址代替二进制代码成为语言进化的目标。这些使用助记符语言的语言后来就被称之为汇编语言。(P144- P146) 2、试述计算机语言的类型,它们各有什么特点? 1.机器语言,是最低级的语言,由二进制码组成,最早期的程序员通过在纸带上打点来写程序 2.汇编语言,用助记符和地址符代替了二进制码,更易于编写。 3.高级语言,相对于汇编语言又上升了一步,更接近于自然语言,如C语言、Pascal、Java、C#等都是高级语言。(P145-147) 3、列举程序设计语言的几种范型。 程序语言大致分为命令式程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。(P147-149) 4、简述语言虚拟机。 提示:语言虚拟机是某种语言的解释器。语言虚拟机是建立在硬件和操作系统之上,针对不同的硬件和操作系统有不同的虚拟机,通过语言虚拟机屏蔽掉硬件的差异。这样使得硬件系统能够支持这种语言编写的程序的有效执行。目前最流行的语言虚拟机是Java虚拟机。(P156) 5、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么? 提示:主要有编译、解释等方式,也有两种方式的混合使用的形式。 编译是使用编译器将高级语言编写的源程序转换成计算机可以执行的机器语言可执行程序,也可以理解为用编译器产生可执行程序的动作。编译方式是一次编译,然后执行程序可以反复多次执行。 解释是另一种将高级语言转换为可执行程序的方式。与编译不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。 近来随着网络的发展,为了实现跨平台但同时又保证一定的效率,出现了编译、解释混合的方式,先用伪编译形成效率较高中间代码,再用语言虚拟机进行解释执行,以屏蔽掉硬件的差异。 (P154-157) 6、请画出编译程序的总框图。如果你是一个编译程序的总设计师,设计编译程序时应当考虑哪些问题? 作为一个编译程序的总设计师,首先要深刻理解被编译的源语言其语法及语义;其次,

Java语言程序设计基础篇前三章课后习题要点

第1章计算机、程序和Java概述 1.1(显示三条消息)编写程序,显示Welcome to Java、Welcome to Computer Science和Programming is fun。 程序: 显示: 1.2(显示五条消息)编写程序,显示Welcome to Java五次 程序: 显示: 1.3(显示图案)编写一个程序,显示下面的图案:

程序: 显示: 1.4(打印表格)编写程序,显示以下表格: 程序: 显示:

1.5(计算表达式)编写程序,显示(9.5x4.5- 2.5x3)/(45.5- 3.5)的结果 程序: 显示: 1.6(数列求和)编写程序,显示1+2+3+4+5+6+7+8+9的结果 程序: 显示: 1.7(近似求π)可以使用以下公式计算π: Π=4x(1-1/3+1/5-1/7+1/9-1/11+1/13+...) 编写程序,显示4x(1-1/3+1/5-1/7+1/9-1/11+1/13...)的结果。在程序中用1.0代替1 程序: 显示:

第2章基本程序设计 2.1(将摄氏温度转换为华氏温度)编写程序,从控制台读入double型的摄氏温度,然后将其转换华氏温度,并显示结果。转换公式如下所示: Fahrenheit-=(9/5)*celsius+32 (华氏度=(9/5)*摄氏度+32) 程序: 显示: 2.2(计算圆柱体的体积)编写程序,读入圆柱体的半径和高,并使用下列公式计算圆柱体的体积 面积=半径x半径xπ 体积=面积x高 程序: 显示:

2.3(将英尺转换为米)编写程序,读入英尺数,将其转换为米数并显示结果。一英尺等于0.305米。 程序: 显示: 2.4(将磅转换为千克)编写程序,将磅数转换为千克数。程序提示用户输入磅数,然后转换成千克并显示结果。1磅等于0.454千克。 程序: 显示: 2.5(财务应用程序:计算小费)编写一个程序,读入一笔费用与酬金率,就算酬金和总钱数。例如,如果用户读入10作为费用,15%作为酬金率,计算结果显示酬金为$1.5,总费用为$11.5. 程序:

汇编语言程序设计实验教程

汇编语言程序设计实验教程

目录 第一章上机过程 (4) 1.1编辑源程序 (4) 1.2 汇编源程序 (5) 1.3连接目标程序 (6) 1.4运行程序 (7) 第二章DEBUG命令祥解 (8) 2.1 DEBUG程序使用 (8) 2.2 DEBUG的常用命令 (8) 第三章汇编语言程序设计实验 (13) 3.1实验一顺序与分支程序设计 (13) 3.2 实验二循环与子程序程序设计 (15) 3.3 实验三算术运算与代码转换程序设计 (16) 3.4 实验四字符串的匹配与替换程序设计 (18) 3.5 实验五输入输出程序设计 (19) 第四章部分实验参考答案 (21)

第一章上机过程 1.1编辑源程序 汇编语言源程序:用汇编语句编写的解决应用问题的程序。 汇编程序:将汇编语言源程序翻译成机器语言程序的系统。 汇编:将汇编语言程序翻译成机器语言程序的过程。 在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立ASCII码文本文件的软件即可。 (1)编辑软件 编辑软件:EDIT、QE、WORD、NOTEPAD等。 当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成的文件扩展名一定是.ASM。 (2)汇编程序 有汇编ASM.EXE、宏汇编MASM.EXE及TASM等,一般使用宏汇编MASM.EXE,因它比ASM.EXE功能强。TASM适用于8086/8088~Pentium系列指令系统所编写的汇编语言程序,是比较先进的汇编工具。 (3)连接程序 用连接程序LINK.EXE或TLINK.EXE,将MASM.EXE产生的目标代码程序(.OBJ)文件连接成可执行程序.EXE,TLINK比LINK更先进。 (4)辅助工具程序(.EXE) 进行汇编语言程序调试和文件格式转换的程序有: https://www.wendangku.net/doc/5b16273706.html, 动态调试程序 EXE2BIN.EXE文件格式转换程序

汇编语言程序设计课后习题解答宋人杰2版

第1章汇编语言基础知识 1.简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: ①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。. ②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 ③可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: ①通用性和可移植性较差 ②相对于高级语言来说较繁锁、易出错、不够直观。 3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少? 答:13 4. 1KB的存储器有多少个存储单元? 答:1024个字节。 5. 指令中的逻辑地址由哪两部分组成? 答:指令中的逻辑地址由段基址和偏移量组成。 6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 (1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF 答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH 7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据 的值。 答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为 多少?若段内偏移地址为2228H,则段基地址为多少? 答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB

程序设计基础(知识点)

第三部分程序设计基础 3.1 程序、程序设计、程序设计语言的定义 ⑴程序:计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。 ⑵程序设计:程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。 ⑶程序设计语言:程序设计语言用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。 3.2 高级语言和低级语言的概念及区别 ⑴高级语言:高级语言(High-level programming language)是高度封装了的编程语言,与低级语言相对。

它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。 ⑵低级语言:低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。 ⑶区别: 高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差 了解知识:CPU运行的是二进制指令,所有的语言编写的程序最终都要翻译成二进制代码。越低级的语言,形式上越接近机器指令,汇编语言就是与机器指令一一对应的。而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著) 《计算机操作系统原理》 《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。 《数据结构和算法》——这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的(朱战立,刘天时) 《软件工程》——这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。我的建议是看《实用软件工程》(黄色,清华) 《Windows 程序设计》——《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。而且前面的那本 建议:你还可以在CSDN上阅读到许多书评。这些书评能够帮助你决定读什么样的书 关于编程的网站 计算机编程 郭新明-FTP服务器体验式学习课程(张孝祥监制) https://www.wendangku.net/doc/5b16273706.html,/so/so138.aspx?id=3997 https://www.wendangku.net/doc/5b16273706.html,快速开发新闻系统在线播放 https://www.wendangku.net/doc/5b16273706.html,/so/so138.aspx?id=4708 数字电路基础[宁波电大] https://www.wendangku.net/doc/5b16273706.html,/so/so138.aspx?id=774 计算机组成与汇编语言程序设计(赵丽梅)宁波电大 https://www.wendangku.net/doc/5b16273706.html,/so/so138.aspx?id=1242 操作系统(陈访荣)宁波电大(在线播放) https://www.wendangku.net/doc/5b16273706.html,/so/so138.aspx?id=4708 计算机网络(马敏飞)宁波电大 https://www.wendangku.net/doc/5b16273706.html,/so/so138.aspx?id=1243 https://www.wendangku.net/doc/5b16273706.html, 2.0快速入门(12)-https://www.wendangku.net/doc/5b16273706.html, 2.0网站快速导航 https://www.wendangku.net/doc/5b16273706.html,/so/so138.aspx?id=2501 Internet和Intranet应用(薛昭旺)宁波电大 https://www.wendangku.net/doc/5b16273706.html,/so/so138.aspx?id=1245 2004年电脑硬件安装调试维修视频教学讲授 https://www.wendangku.net/doc/5b16273706.html,/so/so138.aspx?id=4825 https://www.wendangku.net/doc/5b16273706.html, 高级排错技巧 https://www.wendangku.net/doc/5b16273706.html,/so/so138.aspx?id=768 SQL Server 2000管理专家系列课程 https://www.wendangku.net/doc/5b16273706.html,/so/so138.aspx?id=4832 开心三人行系列(2):使用Atlas 构建AJAX应用 https://www.wendangku.net/doc/5b16273706.html,/so/so138.aspx?id=2564 Visual Basic 2005开发技巧系列课程(4): 在Visual Basic 2005中使用.NET Framework 2.0新增功能 https://www.wendangku.net/doc/5b16273706.html,/so/so138.aspx?id=2526 SQL Server 2005 系列课程-使用ADO https://www.wendangku.net/doc/5b16273706.html,开发SQL Server 2005 OLAP应用 https://www.wendangku.net/doc/5b16273706.html,/so/so138.aspx?id=2535

(完整版)《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

2位数计算器程序-汇编语言课程设计

信息学院课程设计题目:2位数计算器程序设计 __ 姓名: __ _____ 学号: ____ ___ 班级: 课程:汇编语言 ________ 任课教师:侯艳艳 ____ 2011年12月

课程设计任务书及成绩评定

目录 摘要 (2) 1.设计目的………………………………………………………………………………………………?2 2.概要设计………………………………………………………………………………………………?3 2.1系统总体分析…………………………………………………………………………?3 2.2程序流程图 (3) 3.详细设计......................................................................................................? (4) 3.1主程序及子程序说明 (4) 3.2程序代码编写 (4) 4.程序调试 (6) 4.1运行界面分析 (6) 4.2算法的分析 (6) 4.3调试过程及分析 (6) 5.心得体会 (7) 5.1设计体会...................................................................................................? (7) 5.2系统改进...................................................................................................? (7) 参考文献 (8)

C语言程序设计的试题及答案

C语言程序设计的试题及答案 C语言程序设计的试题及答案C语言程序设计的试题及答案第一章基础知识 一、填空 1.每个C程序都必须有且仅有一个________函数。 2.C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3.软件是程序,以及______、使用和维护所需要的所有文档。 4.国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5.程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6.C语言是由________组成的。 7.C语言的函数可分为主函数ain、标准库函数和_________。 8.一个函数是由两部分组成的,即:________和函数体。 9.编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10.程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自

动化、管理信息系统、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11.机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12.与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对象,也可以用标号和符号来代替地址、常量和变量。 13.在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14.C程序的执行均是由执行_________开始。15.函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C语句组成的执行部分。 16.C语言程序中一条简单语句是以________字符作为结束符的。 17.C语言是结构化、________的程序设计语言。 18.由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19.用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.第一个系统体现结构化程序设计思想的教学工具语言是_______语言。

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

程序设计基础试题(附答案)

程序设计基础复习题 一、单选 1、一个完整的计算机系统应该包括() A、系统软件和应用软件 B、计算机及其外部设备 C、硬件系统和软件系统 D、系统硬件和系统软件 2、“裸机”的概念是指() A、正在进行设计还没有组装好的计算机 B、已经组装好但还没有安装任何软件的计算机 C、仅安装了操作系统的计算机系统 D、安装了文字处理软件但没有安装专用数据处理系统的计算机 3、世界上第一台电子数字计算机研制成功的时间是() A、1936年 B、1946年 C、1956年 D、1970年 4、CASE的含义是() A、计算机辅助设计 B、计算机辅助制造 C、计算机辅助教学 D、计算机辅助软件工程5、当前广泛使用的微型计算机是() A、第一代 B、第二代 C、第三代 D、第四代 6、当代计算机的体系结构称为是() A、冯·诺依曼机 B、非冯·诺依曼机 C、图灵机 D、比尔盖茨机 7、硬盘是() A、输入设备 B、输出设备 C、存储设备 D、计算设备 8、下面4句话中,最准确的表述是() A、程序=算法+数据结构 B、程序是使用编程语言实现算法 C、程序的开发方法决定算法设计 D、算法是程序设计中最关键的因素

9、计算机能直接执行的语言是() A、机器语言 B、汇编语言 C、高级语言 D、目标语言 10、解释程序的功能是() A、将高级语言程序转换为目标程序 B、将汇编语言程序转换为目标程序 C、解释执行高级语言程序 D、解释执行汇编语言程序 11、下面4种程序设计语言中,不是面向对象式语言的是() A、JAVA B、Object Pascal C、Delphi D、C 12、不是C语言的基本数据类型是() A、int B、double C、char D、bool 13、在C语言中,为了求两个整数相除之后得到的余数,可以使用运算符() A、/ B、% C、* D、++ 14、数据的逻辑结构分为() A、纯属结构和非线性结构 B、顺序结构和非顺序结构 C、树型结构和图型结构 D、链式结构和顺序结构 15、用链表表示纯属表的优点是() A、便于随机存取 B、便于插入和删除操作 C、花费的存储空间较顺序存储少 D、元素的物理顺序与逻辑顺序相同 16、栈的最主要特点是() A、先进先出 B、先进后出 C、两端进出 D、一端进一端出 17、下面4句结论只有一句是错误的,它是()

汇编语言程序设计(钱晓捷)课后答案

汇编语言程序设计(第二版) 钱晓捷习题答案 第二章(01) 2.1 (1)AX=1200h (2)AX=0100h (3)AX=4C2Ah (4)AX=3412h (5)AX=4C2Ah (6)AX=7856h (7)AX=65B7h 2.2(1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为[ BP ] (7) 源操作数应为[BX+DI] (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H 2.4 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 2.5 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.7 W=X+Y+24-Z

2.8 (1)ADD DX,BX (2)ADD AL,[BX+SI] (3)ADD [BX+0B2H],CX (4)ADD WORD PTR [0520H],3412H (5)ADD AL,0A0H 2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=A imul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,ax mov bx,dx ;bx,ax <-- dx,ax =A*B mov ax,Z ;ax = C cwd ;dx,ax =C (扩展符号后为双字) add cx,ax adc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+C sub cx,540 sbb bx,0 ;bx,cx<-- A*B+C-540 mov ax, V ;ax= D cwd ;dx,ax= D (扩展符号后为双字) sub ax, cx sbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540) idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax存商,dx存余数 2.10;(1)xchg的操作数不能是立即数 (2不能对CS直接赋值 (3)两个操作数不能都是存储单元 (4)堆栈的操作数不能是字节量 (5)adc的操作数不能是段寄存器 (6)没有确定是字节还是字操作 (7)in不支持超过FFH的直接寻址 (8)out只能以AL/AX为源操作数 第二章(02) 2.11; 指令AX的值CF OF SF ZF PF Mov ax,1407h1470h----- And ax,ax1470h00000 Or ax,ax1470h00000 Xor ax,ax000011 Not ax0ffffh----- Test ax,0f0f0h0ffffh00101 注意: 1. mov, not指令不影响标志位 2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。

程序设计语言基础知识题库1-1-8

程序设计语言基础知识题库1-1-8

问题: [单选]将来源不同的目标程序装配成一个可执行程序是()的任务。 A.连接程序 B.编译程序 C.解释程序 D.汇编程序 连接程序:它将分别在不同的目标文件中编译或汇编的代码收集到一个可直接执行的文件中。编译程序:把用高级程序设计语言书写的源程序翻译成等价的计算机汇编语言或机器语言书写的目标程序的翻译程序。解释程序:是高级语言翻译程序的一种,它将源语言(如BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。汇编程序:把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。

问题: [单选]某C语言程序中,m是一个整型变量,则()时遇到表达式m+"test"会报错。 A.词法分析 B.语法分析 C.语义分析 D.程序运行 词法分析阶段是编译过程的第一个阶段,这个阶段的任务是对源程序从前到后(从左到右)逐个字符地扫描,从中识别出一个个"单词"符号。"单词"符号是程序设计语言的基本语法单位,如关键字(或称保留字)、标识符、常数、运算符和分隔符等。但双引号("")不属于这些分类。

问题: [单选]面向对象程序设计语言主要用于()。 A.面向对象分析、设计与实现 B.面向对象分析 C.面向对象设计 D.面向对象实现 面向对象的程序设计,即是利用面向对象的程序设计语言将面向对象的产品定义模型转换成可以在计算机上处理的表达形式,以便最终在计算机上实现系统的设计。 (辽宁11选5 https://www.wendangku.net/doc/5b16273706.html,)

问题: [单选]表达式"a*(b-c)+d"的后缀式为()。 A.abcd*-+ B.ab*c-d+ C.ab-cd+* D.abc-*d+ 在后缀表示方式下,运算对象自左至右依次书写,运算符紧跟在需要参与运算的对象后面。对于"a*(b-c)+d",运算次序为b-c,之后与a相乘,最后再与d相加,因此其后缀表示为"abc-*d+"。

新版汇编语言程序设计钱晓捷第1章习题答案

第1章汇编语言基础知识(全) 2010-10-18 19:32:40| 分类:答案集锦| 标签:|字号大中小订阅 第1章汇编语言基础知识 〔习题1.1〕简述计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为 处理单元提供所需要的数据。 存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。 外部设备:实现人机交换和机间的通信。 〔习题1.2〕明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 〔解答〕 主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速 度慢。 RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电 后能保存信息。 存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常 称做I/O端口。 KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。 〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序? 〔解答〕 用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编 译通过的程序就是目标程序。

C语言程序设计基础测试题-答案

C语言程序设计基础测试题 一、单选 [1] 下面叙述中错误的是____。 A. 复合语句中定义的函数只在该复合语句中有效 B. return( )语句中的括号中,可以是变量,常量或有确定值的表达式 C. 形式参数也是局部变量 D. 主函数中定义的变量在整个程序中都是有效的 [2] 下列说法中正确的是____。 A.带参数的宏定义中的参数是没有类型的 B.宏展开将占用程序的运行时间 C.宏定义命令是C语言中的一种特殊语句 D.使用#include命令包含的头文件必须以“.h"为后缀 [3] 若函数的形参为一维数组,则下列说法中正确的是____。 A.调用函数时的对应实参必为数组名 B.形参数组可以不指定大小 C.形参数组的元素个数必须等于实参数组的元素个数 D.形参数组的元素个数必须多于实参数组的元素个数 [4] 系统的标准输出设备是____。 A.键盘 B.硬盘 C.内存 D.显示器 [5] 下面叙述中正确的是____。 A.全局变量在定义它的文件中的任何地方都是有效的 B.全局变量在程序的全部执行过程中一直占用内存单元 C. C语言的switch语句中case后可为常量或表达式或有确定值的变量及表达式 D. 说明函数时必须明确其参数类型和返回类型 [6] C程序的基本结构单位是____。 A.文件 B.语句 C.函数 D.表达式 [7] 对于定义,char *aa[2]={"abcd","ABCD"},选项中说法正确的是____。 A.aa数组元素的值分别是"abcd"和"ABCD" B.aa是指针变量,它指向含有两个数组元素的字符型一维数组 C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D.aa数组的两个元素中各自存放了字符'a'和'A'的地址 [8] 任何一个C语言的可执行程序都是从____开始执行的。 A.程序中的第一个函数 B.main( )函数的入口处

汇编语言程序设计教程(第3版 卜艳萍)参考答案

汇编语言程序设计教程(第3版) 习题参考答案 第1章汇编语言基础知识 思考与练习 1.计算机系统分哪几个层次?简述计算机系统的硬件结构。 1)数字逻辑层 2) 微体系结构层 3) 指令系统层 4) 操作系统层 5) 汇编语言层 6) 高级语言层 7) 应用层 硬件系统是指构成计算机系统的物理实体或物理装置。它由控制器、运算器、存储器、输入设备和输出设备等部件构成。 2.简述用汇编语言进行程序设计的必要性。 1)程序要具有较快的执行时间,或者只能占用较小的存储容量。例如,操作系统的核 心程序段,实时控制系统的软件,智能仪器仪表的控制程序等。 2)程序与计算机硬件密切相关,程序要直接、有效地控制硬件。例如,I/O接口电路 的初始化程序段,外部设备的低层驱动程序等。 3)大型软件需要提高性能、优化处理的部分。例如计算机系统频繁调用的子程序、动 态连接库等。 4)没有合适的高级语言或只能采用汇编语言的时候。例如,开发最新的处理器程序时, 暂时没有支持新指令的编译程序。 5)汇编语言还有许多实际应用,例如分析具体系统尤其是该系统的低层软件、加密解 密软件、分析和防治计算机病毒等。 3.汉字编码主要分哪几类?每类的功能如何? 汉字编码主要分为四类:汉字输入码、汉字交换码、汉字机内码和汉字字形码。 1)为了能直接使用西文标准键盘进行输入,就必须为汉字设计相应的编码方法,即用 西文标准键盘上的字母数字串表示汉字的编码。目前,汉字输入编码方法主要有三 种:数字编码、拼音编码和字形编码。 2)汉字交换码:在不同汉字信息处理系统间进行汉字交换时所使用的编码,就是国标 码。无论采用哪种方法输入汉字,一旦输入到计算机中,必须采用统一的国标码标 识每个汉字。 3)汉字机内码是汉字在设备或信息处理系统内部最基本的表达形式,是在设备和信息 处理系统内部存储、处理、传输汉字用的编码。 4)字形编码也称为字模码,是用点阵表示的汉字字形代码,它是汉字的输出形式。4.计算机的字长是怎么定义的,试举例说明。 计算机能同时处理二进制信息的位宽定义为计算机的字长。如8086能同时进行16位二进制数据的运算、存储和传输等操作,该机器的字长为16位。 5.在汇编语言中,如何表示二进制、八进制、十进制和十六进制的数值? 用相应进制的数值加上进制标记即可。

程序设计语言基础

先来认识一下程序,要使计算机能完成人们预定的工作,就必须把要完成工作的具体步骤编写成计算机能执行的一条条指令,计算机执行这些指令序列后,就能完成指定的功能,这样的指令序列就是程序。简单地说,程序是能完成一定功能的指令序列。要想学会编写程序,首先要学习能提供指令的程序设计语言;其次要学习更多和程序设计有关的知识和技巧,就好像认识许多字不一定能写出好文章一样,仅仅学习了程序设计语言还不能编写出好的程序。 程序的功能一般是指其处理数据的能力,所以一个程序包括以下两个方面的内容。 (1)对数据的描述。在程序中要指定处理数据的类型和组织形式,即数据结构(data structure)。 (2)对操作的描述。即操作步骤,也就是算法(algorithm)。数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。 作为程序设计人员,必须认真考虑和设计数据结构与操作步骤(即算法)。因此,著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式: 程序=数据结构+算法 当然这些要素都离不开一个与计算机交互的平台——语言工具和环境。因此,可以这样表示程序: 程序=算法+数据结构+语言工具和环境 算法是程序的灵魂,是解决问题所需要采用的合适方法,决定程序“做什么”和“怎么做”;数据结构是加工对象的组织方式;程序设计语言是程序设计的工具和环境。 大家更熟悉的一个词可能是“软件”,软件是具有一定综合功能的程序、数据及相关文档的集合。只有打好程序设计的基本功,并掌握一定的软件开发技术后,才有可能去开发具有实用性的软件。 1.1 引言 1.1.1 程序设计语言及其分类 1.什么是程序设计语言?其功能又如何 “程序设计语言是一种指挥机器的工具?一种程序员之间交流的方式?一种表述高层

《Java语言程序设计基础教程》习题解答

《Java语言程序设计基础教程》练习思考题参考答案

第1章Java程序设计概述 1.9 练习思考题 1、Java运行平台包括三个版本,请选择正确的三项:() A. J2EE B. J2ME C. J2SE D. J2E 解答:A,B,C 2、Java JDK中反编译工具是:() A. javac B. java C. jdb D. javap 解答:D 3、public static void main方法的参数描述是:() A. String args[] B. String[] args C. Strings args[] D. String args 解答:A,B 4、在Java中,关于CLASSPATH环境变量的说法不正确的是:() A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B. 编译器用它来搜索各自的类文件。 C. CLASSPATH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为() A. .java B. .class C. .html D. .exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为____________、____________和____________。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是______类的子类并且存储该源程序文件的文件名为______。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生______个文件名与类名相同而扩展名为______的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 10、Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎么样的? 11、编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。

C语言程序设计基础知识 习题一及参考答案

第一章:程序设计基础知识 一、单项选择题 1、以下( )是面向过程的程序设计语言。 A)机器语言B)汇编语言C)高级语言D)第四代语言 2、程序设计一般包含以下四个步骤,其中其中首先应该完成的是( )。 A)设计数据结构和算法B)建立数学模型 C)编写程序D)调试和运行程序 3、以下常用算法中适合计算等差级数的算法是( )。 A)枚举法B)递推法C)分治法D)排序法 4、以下不属于算法基本特征的是( )。 A)有穷性B)有效性C)可靠性D)有一个或多各输出 5、以下描述中不正确的是( )。 A)程序就是软件,但软件不紧紧是程序。 B)程序是指令的集合,计算机语言是编写程序的工具。 C)计算机语言都是形式化的语言,它有一个语法规则和定义。 D)计算机语言只能编写程序而不能表示算法。 6、下面描述中,正确的是( ) A)结构化程序设计方法是面向过程程序设计的主流。 B)算法就是计算方法。 C)一个正确的程序就是指程序书写正确。 D)计算机语言就是编写程序的工具而不是表示算法的工具。 7、下面描述中,不正确的是( )。 A)递归法的关键是必须有一个递归终止的条件。

B)递归算法要求语言具有反复自我调用子程序的能力。 C)对于同一个问题,递推算法比递归算法的执行时间要长。 D)递推算法总可以转换为一个递归算法。 8、N-S图与传统流程图比较,主要优点是( )。 A)杜绝了程序的无条件转移。 B)具有顺序、选择和循环三种基本结构。 C)简单、只管。 D)有利于编写程序。 A)B)C)D) 二、填空题 1、在流程图符号中,判断框中应该填写的的是________。(判断条件) 2、结构化程序设计是__________应遵循的方法和原则。(面向过程编程) 3、结构化程序必须用__________程序设计语言来编写。(具有结构化控制语句) 4、可以被连续执行的一条条指令的集合称为计算机的________。(程序) 5、只描述程序应该“做什么”,而不必描述“怎样做”的语言被称为________。(面向对象) 6、任何简单或复杂的算法都是由_____和_____这两个要素组成。(数据结构算法) 7、算法的_______特征是指:一个算法必须在执行有限个操作步骤后终止。(有穷性) 8、在三种基本结构中,先执行后判断的结构被称为_________。(直到型循环结构) 9、在程序设计中,把解决问题确定的方法和有限的步骤称为______。(算法) 10、程序设计风格主要影响程序的________。(可读性) 11、用模块组装起来的程序被成为________结构化程序。(模块化) 12、采用自上而下,逐步求精的设计方法便于____________。(结构化和模块化) 三、应用题

相关文档
相关文档 最新文档