程序员历年答案分析2005---2011年全部详细答案(17)
时间:2025-04-19
时间:2025-04-19
编译过程一般分为词法分析和语法分析。词法分析是从左到右逐字符的地读入源程序,识别
出一个个单词符号;它是根据语言的词法规则(单词结构规则)进行的。在此阶段出现的错
误为词法错误,当读入for语句时,如果源程序错写成了far,这就是典型的词法错误。接
下来是词法分析阶段,它是在词法分析的基础上将单词序列分解成各类短语序列,如循环语
句、赋值语句等。在此阶段查处的错误称为词法错误,此题中出现的错误明显为词法错误,
它违背了C语言中要求%号两侧均为整数的语法要求。
C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等。合理地使用预处理功能
编写的程序便于阅读、修改、移植和调试,也有利于模块化程序设计。
●试题答案(42)B
【考查知识点】本题考查的是数组地址的计算。
【解析】二维数组存储地址的计算公式为:a+(i*n+j)*len。根据题意,本题中每个数据对
象len的值为1,但i、n、j的值在本题中有所变化。由于以列为主序,因此i应表示列值,
其取值范围是1~4,此公式针对下标从0开始的数组的,所以代入到公式中的值为i-1;j
表示行值,其取值范围为1~3,同理,带到公式中的值为j-1;而n的指标是每列元素的个
数,即应取4,所以得到:(2×4+1)×1=9。因为存储值二首地址+偏移量,所以退出偏移量
=9-2=7。
●试题答案(43)D (44)B
【考查知识的】本题考查的是程序中函数的调用。
【解析】由题意得,a的值为4,所以调用函数com(a)的值为8。
如果以引用调用的方式调用,那么b的值为8,a的值也会变成8,因此主程序输出a+b的
值为16。
如果已传值调用的方式调用,那么b的值为8,a的值不变,仍为4,因此主程序输出a+b
的值为12。
【总结与扩展】函数的传值调用和引用调用一直是程序员考试的重点,对两种函数调用的方
法总结如下:
传值调用又分为数据传值调用和地址传值调用。数据传值调用方式是将实参的数据值传递给
形参,实参和形参在栈空间内的地址不相同,改变形参值不影响实参值。地址传值调用方式
是将实参的地址传递给形参,实参和形参在栈空间内共用同一地址,改变形参值就可改变实
参值。
引用调用是将实参调用值传递给形参,而形参是实参变量的引用名。引用是给一个已有变量
起的别名,对引用的操作就是对该已有变量的操作。引用调用可以起到地址传值调用的作用,
即改变形参就可改变实参值。引用调用比地址传值调用更为简单,在C++较多地使用引用调
用代替地址传值调用。
●试题答案(45)A (46)D
【考查知识点】本题考查的是数据库中笛卡尔积的运算。
【解析】根据笛卡尔积的运算法则,如果R关系模式有r个属性,S关系模式有s个属性,
那么该运算的结果会产生(r+s)个属性的元素组合,元素数量为两个关系模式元组数量的
乘积。每个院组的前r个属性来自关系模式R,后s个属性来自关系模式S。而笛卡尔积的
结果可以表示为一个二维表,同时也是一个集合、一个关系。D1有3个元组,D2有2个元组,
所以D1×D2的结果是3×2=6个元组。
●试题答案(47)D (48)B
【考查知识点】本题考查的是SQL语言的基础知识。
【解析】(47)题的考点有两个,一是条件判断中字符串必须加上单引号,故排除A、B。二
是WITH CHECK OPTION子句。如果该子句不存在,那么某个使用该视图的用户就有可能更新