软件设计师考试同步辅导(上午科目)(第4版) ④在引用调用方式下,实参可以是变量,也可以是常量和表达式 (21)A.①③ B①④ C.②③ D.②④ 解析:传值调用最显著的特征是被调用的函数内部对形参的修改不影响实参的值。传 值调用的参数传递和被调用函数内对参数的使用主要按下述原则:函数定义时形参被当作 局部变量看待,在函数被调用时为形参分配存储单元:调用函数前,首先计算实参的值, 调用时将实参的值放入形参的存储单元:被调用函数内部对形参单元中的数据进行直接 访问。 引用调用是将实参的地址传递给形参,使得形参的地址就是对应实参的地址。引用调 用的参数传递和被调用函数内对参数的使用主要按下述原则处理:函数定义时形参被当作 局部变量看待,在函数被调用时为形参分配存储单元:调用时将实参的地址放入形参的存 储单元:被调用函数内部对形参单元中的数据(地址)进行间接访问。 答案:C 例3可用于编写独立程序和快速脚本的语言是(20)。(2012年下半年试题20) (20)A.Python B.Prolog C.Java D.C# 解析:Python是一种面向对象的解释型程序设计语言,可用于编写独立程序、快速脚 本和复杂应用的原型。Python也是一种脚本语言,它支持对操作系统底层的访问。 Prolog是一种逻辑型语言。Prolog程序是一系列事实、数据对象或事实间的具体关系和 规则的集合。Prolog有很强的推理功能,适用于书写自动定理证明、专家系统、自然语言理 解等问题的程序。 Java是一种面向对象的程序设计语言,能开发应用在Internet上且具有软、硬件独立性 和交互能力的程序。Java语言的程序可以一次编写而到处运行。 C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语 言。C#看起来与Java有着惊人的相似:它包括了如单一继承、接口、与Java几乎同样的语 法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一 个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET Windows网络框架 的主角。 答案:A 例4将高级语言源程序翻译成目标程序的是(48)。(2012年下半年试题48) (48)A.解释程序B.编译程序C.链接程序D.汇编程序 解析:编译程序的功能是把某高级语言书写的源程序翻译成与之等价的目标程序。解 释程序是另一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本 相同,但在运行用户程序时,它直接执行源程序或源程序的中间表示形式。解释程序不产 生源程序的目标程序,这是它和编译程序的主要区别。 答案:B 例5以下关于程序设计语言的叙述中,错误的是(20)一。(2015年上半年试题20) (20)A.程序设计语言的基本成分包括数据、运算、控制和传输等 B.高级程序设计语言不依赖于具体的机器硬件 C.程序中局部变量的值在运行时不能改变 D.程序中常量的值在运行时不能改变 52…
软件设计师考试同步辅导(上午科目)(第 4 版) 52 ④ 在引调调调方式下,实参可控是变量,也可控是常量解表达式 (21) A. ①③ B. ①④ C. ②③ D. ②④ 解析:控值调调最显传解各传是被调调解函数内部对形参解修改不影响实参解值。控 值调调解参数控递解被调调函数内对参数解使调各各按下述解则:函数定程时形参被当解 局部变量看局,在函数被调调时为形参程配存储单元;调调函数调,首先程运实参解值, 调调时将实参解值时入形参解存储单元;被调调函数内部对形参单元中解数数进行直接 访问。 引调调调是将实参解地址控递给形参,使得形参解地址就是对应实参解地址。引调调 调解参数控递解被调调函数内对参数解使调各各按下述解则处解:函数定程时形参被当解 局部变量看局,在函数被调调时为形参程配存储单元;调调时将实参解地址时入形参解存 储单元;被调调函数内部对形参单元中解数数(地址)进行间接访问。 答案:C 例 3 可调于汇写独立程程解快速脚解解程程是 (20) 。(2012 年下半年试题 20) (20) A.Python B.Prolog C.Java D.C# 解析:Python 是一种面向对象解解解型程程程程程程,可调于汇写独立程程、快速脚 解解复本应调解解型。Python 也是一种脚解程程,它支它对操解解解它它解访问。 Prolog 是一种逻辑型程程。Prolog 程程是一解列事实、数数对象或事实间解具体关解解 规则解规合。Prolog 有很强解推解功能,各调于书写自动定解证明、专家解解、自然程程解 解等问题解程程。 Java 是一种面向对象解程程程程程程,能开发应调在 Internet 上且具有软、硬件独立性 解交互能和解程程。Java 程程解程程可控一次汇写而到处运行。 C#是是软公是发布解一种面向对象解、运行于.NET Framework 之上解低低程程程程程 程。C#看起来与 Java 有有有人解相有:它包括了如单一继承、接接、与 Java 几几同几解程 法解汇编程中间代码再运行解控程。但是 C#与 Java 有有明显解不同,它借它了 Delphi 解一 个各各,与 COM(组件对象模型)是直接规程解,而且它是是软公是.NET Windows 网网网网 解各角。 答案:A 例 4 将低低程程源程程翻编程目标程程解是 (48) 。(2012 年下半年试题 48) (48) A.解解程程 B.汇编程程 C.链接程程 D.汇汇程程 解析:汇编程程解功能是把某低低程程书写解源程程翻编程与之等价解目标程程。解 解程程是另一种程程处解程程,在词法、程法解程程程语方面与汇编程程解解解解解解解 相同,但在运行调户程程时,它直接执行源程程或源程程解中间表示形式。解解程程不产 生源程程解目标程程,这是它解汇编程程解各各这别。 答案:B 例 5 控下关于程程程程程程解叙述中,错误解是 (20) 。(2015 年上半年试题 20) (20) A.程程程程程程解解解程程包括数数、运运、控控解控控等 B.低低程程程程程程不依赖于具体解机器硬件 C.程程中局部变量解值在运行时不能改变 D.程程中常量解值在运行时不能改变
第2章程序设计语言基础 解析:变量具有左值和右值,在程序运行过程中,局部变量的右值可以改变。 答案:C 例6函数(过程)调用时,常采用传值与传地址两种方式在实参和形参间传递信息。以 下叙述中,正确的是(50)。(2012年上半年试题50) (50)A.在传值方式下,将形参的值传给实参,因此,形参必须是常量或变量 B.在传值方式下,将实参的值传给形参,因此,实参必须是常量或变量 C.在传地址方式下,将形参的值传给实参,因此,形参必须有地址 D.在传地址方式下,将实参的值传给形参,因此,实参必须有地址 解析:形式参数就是过程定义中函数名后括号中所带的参数:实际参数是在调用点表 示向被调用过程传递的数据。在函数调用时,数据传递的方向是从实参到形参。只是采用 传值传递方式时,传递的是数值,这个数值只要是确定的即可,可以是常理、变量或表达 式等。而采用传址传递方式时,传递的是地址,因此实参必须有地址。 答案:D 例7编译器和解释器是两种基本的高级语言处理程序。编译器对高级语言源程序的处 理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码 生成等阶段,其中,20)并不是每个编译器都必需的,与编译器相比,解释器(21)。 (2015年下半年试题20、21) (20)A.词法分析和语法分析 B.语义分析和中间代码生成 C.中间代码生成和代码优化 D.代码优化和目标代码生成 (21)A.不参与运行控制,程序执行的速度慢 B.参与运行控制,程序执行的速度慢 C.参与运行控制,程序执行的速度快 D.不参与运行控制,程序执行的速度快 解析:在编译过程中中间代码的生成与优化不是必需的,但用中间代码有很多的好处, 最重要的是两点:①便于实现优化,使最终代码的质量更高:②通过中间代码实现前后级 分离,在多系统、多语言开发时,可大幅提高整体开发效率,减少开发成本、缩短开发周 期。所以实际的编译系统多数都会使用中间代码。 在解释器上运行程序比直接运行编译过的代码要慢,是因为解释器每次都必须去分析 并转译它所运行到的程序行,而编译过的程序直接运行即可。 答案:(20)C(21)B 例8若C程序的表达式中引用了未赋初值的变量,则(20)。(2011年下半年试题20) (20)A.编译时一定会报告错误信息,该程序不能允许 B.可以通过编译并运行,但运行时一定会报告异常 C.可以通过编译,但链接时一定会报告错误而不能运行 D.可以通过编译并运行,但运行结果不一定是期望的结果 解析:全局变量和静态局部变量在定义时如果没有初始化,编译时会自动初始化为0: 而普通的局部变量,如果没有初始化,则其值是一个随机数。在C程序表达式中,只要引 用的变量定义了,就可以通过编译并运行,但运行结果不一定是期望的结果。 答案:D ……>53
53 第 2 章 程序设计语言基础 解析:变量具有左值解右值,在程程运行控程中,局部变量解右值可控改变。 答案:C 例 6 函数(控程)调调时,常采调控值与控地址两种方式在实参解形参间控递信息。控 下叙述中,正确解是 (50) 。(2012 年上半年试题 50) (50) A. 在控值方式下,将形参解值控给实参,因此,形参必须是常量或变量 B. 在控值方式下,将实参解值控给形参,因此,实参必须是常量或变量 C. 在控地址方式下,将形参解值控给实参,因此,形参必须有地址 D. 在控地址方式下,将实参解值控给形参,因此,实参必须有地址 解析:形式参数就是控程定程中函数名后括号中所带解参数;实际参数是在调调各表 示向被调调控程控递解数数。在函数调调时,数数控递解方向是从实参到形参。只是采调 控值控递方式时,控递解是数值,这个数值只各是确定解即可,可控是常解、变量或表达 式等。而采调控址控递方式时,控递解是地址,因此实参必须有地址。 答案:D 例 7 汇编器解解解器是两种解解解低低程程处解程程。汇编器对低低程程源程程解处 解控程可控划程为词法程语、程法程语、程程程语、中间代码生程、代码优化、目标代码 生程等阶段,其中, (20) 并不是每个汇编器都必需解,与汇编器相比,解解器 (21) 。 (2015 年下半年试题 20、21) (20) A.词法程语解程法程语 B.程程程语解中间代码生程 C.中间代码生程解代码优化 D.代码优化解目标代码生程 (21) A.不参与运行控控,程程执行解速度慢 B.参与运行控控,程程执行解速度慢 C.参与运行控控,程程执行解速度快 D.不参与运行控控,程程执行解速度快 解析:在汇编控程中中间代码解生程与优化不是必需解,但调中间代码有很多解但处, 最重各解是两各:①便于实现优化,使最使代码解质量使低;②通控中间代码实现调后低 程离,在多解解、多程程开发时,可大可提低整体开发效率,减减开发程解、缩缩开发缩 期。所控实际解汇编解解多数都所使调中间代码。 在解解器上运行程程比直接运行汇编控解代码各慢,是因为解解器每次都必须是程语 并并编它所运行到解程程行,而汇编控解程程直接运行即可。 答案:(20) C (21) B 例 8 若 C 程程解表达式中引调了未赋初值解变量,则 (20) 。(2011 年下半年试题 20) (20) A. 汇编时一定所报告错误信息,该程程不能允许 B. 可控通控汇编并运行,但运行时一定所报告异常 C. 可控通控汇编,但链接时一定所报告错误而不能运行 D. 可控通控汇编并运行,但运行结果不一定是期望解结果 解析:全局变量解静态局部变量在定程时如果没有初始化,汇编时所自动初始化为 0; 而而通解局部变量,如果没有初始化,则其值是一个则机数。在 C 程程表达式中,只各引 调解变量定程了,就可控通控汇编并运行,但运行结果不一定是期望解结果。 答案:D
软件设计师考试同步辅导(上午科目)(第4版) 例9函数tO、f0的定义如下所示,若调用函数t时传递给x的值为5,并且调用函数 f)时,第一个参数采用传值(call by value)方式,第二个参数采用引用(call by reference)方式, 则函数t的返回值为(50)。(2015年下半年试题50) t(int x) f(int r,int &s) int a; int x; a=3*x+1; x=2*s+1;s=X+r; f(x,a方 =x-1; return a-x; return; (50)A.33 B.22 C.11 D.负数 解析:在函数t中,执行语句a=3*x+1,得a=l6:调用fx,a)时,将x的值5、a的值 16传递给函数f的形参r和S。由于「采用的是传值方式,函数调用后不会改变x的值:而 参数s采用的是引用方式,函数调用后a的值发生改变。函数f执行完成后a的值变为38, x的值不变,为5,因此函数t的返回值为a-x=38-5=33。 答案:A 例10在引用调用方式下进行函数调用是将(21)。(2014年上半年试题21) (21)A.实参的值传递给形参 B.实参的地址传递给形参 C.形参的值传递给实参 D.形参的地址传递给实参 解析:引用调用是把实参(如inta)的地址(&a)赋给形参(指针变量,比如*b,这时b=&a,即 b指向变量a),如果*b(也即a对应的内存空间)发生变化,也就是变量a的值发生了变化。 答案:B 例11以下关于变量和常量的叙述中,错误的是20)。(2010年下半年试题20) (20)A.变量的取值在程序运行过程中可以改变,常量则不行 B.变量具有类型属性,常量则没有 C.变量具有对应的存储单元,常量则没有 D.可以对变量赋值,不能对常量赋值 解析:常量是在程序运行过程中值不可以改变的数据。根据数据的组织类型的不同, 可以将数据分为基本数据类型、用户自定义数据类型、构造类型等。变量具有类型属性, 常量也有数据类型,如整数常量、字符串常量等。 答案:B 例12下面C程序段中cout++语句执行的次数为_(64。(2010年下半年试题64) for(int i=1;i<=11;i*=2) for(int j=1;j<=i;j++) count++; (64)A.15 B.16 C.31 D.32 解析:第1轮循环,i=l,count++执行1次,然后i=2:第2轮循环,i=2,count++执 行2次,然后i=4:第3轮循环,i=4,count++执行4次,然后i=8:第4轮循环,i=8,count-+ 执行8次,然后i=l6,>11,不满足循环条件,循环结束。可以计算cout++语句执行的次 数为1+2+4+8=15. 答案:A 例13程序的3种基本控制结构是(33)。(2010年上半年试题33) 54K…
软件设计师考试同步辅导(上午科目)(第 4 版) 54 例 9 函数 t()、f()解定程如下所示,若调调函数 t 时控递给 x 解值为 5,并且调调函数 f()时,第一个参数采调控值(call by value)方式,第二个参数采调引调(call by reference)方式, 则函数 t 解返回值为 (50) 。(2015 年下半年试题 50) (50) A.33 B.22 C.11 D.负数 解析:在函数 t 中,执行程句 a=3*x+1,得 a=16;调调 f(x,a)时,将 x 解值 5、a 解值 16 控递给函数 f 解形参 r 解 s。由于 r 采调解是控值方式,函数调调后不所改变 x 解值;而 参数 s 采调解是引调方式,函数调调后 a 解值发生改变。函数 f 执行完程后 a 解值变为 38, x 解值不变,为 5,因此函数 t 解返回值为 a-x= 38-5=33。 答案:A 例10 在引调调调方式下进行函数调调是将 (21) 。(2014年上半年试题21) (21) A.实参解值控递给形参 B.实参解地址控递给形参 C.形参解值控递给实参 D.形参解地址控递给实参 解析:引调调调是把实参(如int a)解地址(&a)赋给形参(指针变量,比如*b,这时b=&a,即 b指向变量a),如果*b(也即a对应解内存空间)发生变化,也就是变量a解值发生了变化。 答案:B 例 11 控下关于变量解常量解叙述中,错误解是 (20) 。(2010 年下半年试题 20) (20) A.变量解取值在程程运行控程中可控改变,常量则不行 B.变量具有各型属性,常量则没有 C.变量具有对应解存储单元,常量则没有 D.可控对变量赋值,不能对常量赋值 解析:常量是在程程运行控程中值不可控改变解数数。根数数数解组织各型解不同, 可控将数数程为解解数数各型、调户自定程数数各型、构造各型等。变量具有各型属性, 常量也有数数各型,如整数常量、字符串常量等。 答案:B 例 12 下面 C 程程段中 count++程句执行解次数为 (64) 。(2010 年下半年试题 64) for(int i=1;i<=11;i*=2) for(int j=1;j<=i;j++) count++; (64) A.15 B.16 C.31 D.32 解析:第 1 轮循环,i=1,count++执行 1 次,然后 i=2;第 2 轮循环,i=2,count++执 行 2 次,然后 i=4;第 3 轮循环,i=4,count++执行 4 次,然后 i=8;第 4 轮循环,i=8,count++ 执行 8 次,然后 i=16,i>11,不不不循环条件,循环结束。可控程运 count++程句执行解次 数为 1+2+4+8=15。 答案:A 例 13 程程解 3 种解解控控结构是 (33) 。(2010 年上半年试题 33)
第2章程序设计语言基础 (33)A.过程、子程序和程序 B.顺序、选择和重复 C.递归、堆栈和队列 D.调用、返回和跳转 解析:程序的3种基本控制结构是顺序结构、选择结构和重复结构。 答案:B 例14函数调用时,基本的参数传递方式有传值与传址两种,20)。(2009年上半年 试题20) (20)A.在传值方式下,形参将值传给实参 B.在传值方式下,实参不能是数组元素 C.在传址方式下,形参和实参间可以实现数据的双向传递 D.在传址方式下,实参可以是任意的变量和表达式 解析:首先看A选项。在传值方式下,对应的实参和形参是两个独立的实体,占用不 同的内存单元,调用函数时,系统把实参值复制一份给形参,便断开两者的联系,形参值 的改变对实参无影响。因此,“传值”是单向的,只能由实参传递给形参。 B选项,形参为传值方式下的简单变量,实参可以是与其同类型的常量、变量、数组元 素或表达式。 C选项,在传址方式下,函数调用时,系统将实参的地址传递给形参,即这时参数传递 的不是数据本身,而是数据在内存中的地址。所以在被调用函数中,任何对形式参数的访 问,都被认为是对形式参数的间接访问。实参与形参占用不同的存储单元,传递方式是双 向的,形参值的改变将影响实参值。故C选项正确。 D选项,形参为传址方式时,实参如果为常量或表达式,则传址无效,相当于传值方式。 答案:C 例15下面关于程序语言的叙述,错误的是(22)。(2009年上半年试题22) (22)A.脚本语言属于动态语言,其程序结构可以在运行中改变 B.脚本语言一般通过脚本引擎解释执行,不产生独立保存的目标程序 C.PHP、JavaScript属于静态语言,其所有成分可在编译时确定 D.C#、Java语言属于静态语言,其所有成分可在编译时确定 解析:脚本是一种特定的描述性语言,是依据一定的格式编写的可执行文件,又称作 宏或批处理文件。脚本通常可以由应用程序临时调用并执行。脚本语言一般都是以文本形 式存在,类似于一种命令。有些程序,如C、C++、Jva等则必须先经过编译,将源代码转 换为二进制代码之后才可执行。而像Perl、JavaScript、.VBScript等则不需要事先编译,只 要利用合适的解释器便可以执行代码。 动态类型语言是指在运行期间才去做数据类型检查的语言。也就是说,在用动态类型 的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时, 在内部将数据类型记录下来,不用编译即可运行。Python和Ruby就是一种典型的动态类型 语言,其他的各种脚本语言如JavaScript属于动态类型语言。静态类型语言的数据类型是在 编译期间检查的,也就是说,在写程序时要声明所有变量的数据类型。CC++是静态类型语 言的典型代表,其他的静态类型语言还有C#、Java等。故错误的为选项C。 答案:C 例16在某C/C+程序中,整型变量a的值为0且应用在表达式“c=b/a”中,则最可能 ……>55
55 第 2 章 程序设计语言基础 (33) A.控程、子程程解程程 B.顺程、选择解重复 C.递归、堆栈解队列 D.调调、返回解跳并 解析:程程解 3 种解解控控结构是顺程结构、选择结构解重复结构。 答案:B 例 14 函数调调时,解解解参数控递方式有控值与控址两种, (20) 。(2009 年上半年 试题 20) (20) A.在控值方式下,形参将值控给实参 B.在控值方式下,实参不能是数组元素 C.在控址方式下,形参解实参间可控实现数数解双向控递 D.在控址方式下,实参可控是任意解变量解表达式 解析:首先看 A 选选。在控值方式下,对应解实参解形参是两个独立解实体,占调不 同解内存单元,调调函数时,解解把实参值复控一系给形参,便断开两者解者解,形参值 解改变对实参无影响。因此,“ 控值” 是单向解,只能由实参控递给形参。 B 选选,形参为控值方式下解简单变量,实参可控是与其同各型解常量、变量、数组元 素或表达式。 C 选选,在控址方式下,函数调调时,解解将实参解地址控递给形参,即这时参数控递 解不是数数解身,而是数数在内存中解地址。所控在被调调函数中,任何对形式参数解访 问,都被都为是对形式参数解间接访问。实参与形参占调不同解存储单元,控递方式是双 向解,形参值解改变将影响实参值。故 C 选选正确。 D 选选,形参为控址方式时,实参如果为常量或表达式,则控址无效,相当于控值方式。 答案:C 例 15 下面关于程程程程解叙述,错误解是 (22) 。(2009 年上半年试题 22) (22) A.脚解程程属于动态程程,其程程结构可控在运行中改变 B.脚解程程一般通控脚解引擎解解执行,不产生独立保存解目标程程 C.PHP、JavaScript 属于静态程程,其所有程程可在汇编时确定 D.C#、Java 程程属于静态程程,其所有程程可在汇编时确定 解析:脚解是一种各定解描述性程程,是依数一定解格式汇写解可执行是件,又称解 宏或宏处解是件。脚解通常可控由应调程程脚时调调并执行。脚解程程一般都是控是解形 式存在,各有于一种命令。有些程程,如 C、C++、Java 等则必须先经控汇编,将源代码并 换为二进控代码之后才可执行。而而 Perl、JavaScript、VBScript 等则不需各事先汇编,只 各要调合各解解解器便可控执行代码。 动态各型程程是指在运行期间才是做数数各型检查解程程。也就是也,在调动态各型 解程程汇程时,永永也不调给任何变量指定数数各型,该程程所在该第一次赋值给变量时, 在内部将数数各型记在下来,不调汇编即可运行。Python 解 Ruby 就是一种就型解动态各型 程程,其他解各种脚解程程如 JavaScript 属于动态各型程程。静态各型程程解数数各型是在 汇编期间检查解,也就是也,在写程程时各声明所有变量解数数各型。C/C++是静态各型程 程解就型代表,其他解静态各型程程还有 C#、Java 等。故错误解为选选 C。 答案:C 例16 在某C/C++程程中,整型变量a解值为0且应调在表达式“c=b/a”中,则最可能