




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2007年4月全国计算机等级考试二级C语言笔试试卷答案一、选择题:1、B 考点:算法的基本概念,包括时间复杂度和空间复杂度两个方面2、D考点:模块划分的原则,牢记一点:模块内要高内聚,模块间要低耦合3、A 考点:软件测试的目标,牢记一点:软件测试的目的就是为了发现程序中的错误4、C 考点:面向对象程序设计的特征,牢记一点:对象的特征有以下几点:分类性,封装性,多态性,继承性,模块性5、D考点:队列基本特点,牢记:队列是先进先出的数据结构,栈是先进后出的数据结构,它们都是特殊的线性表6、C 考点:树的遍历。掌握:二叉树的三种遍历方式。解析:前序遍历是先访问根结点,再访问左子树,再访问右子树,对于左子树和右子树仍旧按照前序访问方式遍历。所以先访问根结点A,再对左子树前序访问,依次是B D Y E ,然后访问A的右子树,依次是C F X Z。所以遍历顺序:A B D Y E C F X Z7、A 考点:二叉树的性质,牢记:在任意一颗二叉树中,度为0的结点总比度为2的结点多一个8、B 考点:关系运算,了解掌握:并运算会增加元组个数,投影运算会减少表中属性个数,笛卡尔积既会增加属性个数,又会增加元组个数9、C 考点:ER图的相关概念 掌握:E-R模型的图示法,主要是什么类型是什么图形表示10、A 考点:数据库的基本特点 掌握以下几点:数据库技术的根本目标:解决数据的共享问题;数据库设计:在已有数据库管理系统的基础上建立数据库;数据库系统需要操作系统的支持;数据的物理结构与逻辑有高度独立性,结构不必一致11、C 考点:算法的概念 牢记:算法的特点,有穷性、确定性、可行性、拥有足够的情报12、D 考点:C语言的深入讨论 牢记:C语言的源程序要变成可执行文件,需要经过编译和链接两个步骤:.c文件(源文件) 编译.obj(目标文件)l链接.exe文件(可执行文件) 13、 B 考点:标识符的命名规则14、C 牢记:C语言是一门功能强大的结构化程序设计语言,含有三种结构:顺序,选择,循环(参见教材第一分册18页 )15、A考点:main函数的概念牢记:main函数既是程序唯一入口,也是唯一出口(参见教材第一分册55页 函数)16、D 考点:使用scanf进行交叉赋值的情况(参加教材第一分册51页 例题)17、题目中缺表达式,跳过18、A 考点:自加自减运算符 牢记:+(-)在前,表达式的值为变量初值加(减)1;+(-)在后,表达式的值为变量初值. B C D三个选项中,表达式的值都为k的初值加1.为1,A中表达式的值为0(参加教材第一分册15页 自加与自减运算符)19、B 考点:printf函数的格式控制20、C 考点:分号是C语言结束的标志,每条语句必须以;结束,C选项X - 后面缺了一个分号;21、D 考点:C语言中的算术运算,单X为大于1的奇数时,X%2的值为1,所以选项D的值为0,选项A和选项C的值为1,选项B的值不定。牢记:求余运算的运算对象只能是整型数22、C 考点:break语句和continue语句的用法及区别牢记:1.break语句既可以出现在switch语句中,也可以出现在循环体中,而continue语句只能出现在循环体中2.break语句跳出整个循环,而continue语句只是结束本轮循环(参见教材第一分册45页 break语句和continue语句)23、A 考点: switch语句。牢记两点:1 switch括号里表达式的值,类型必须为整型或字符型 2 case后的值,必须是整型或字符型常量。24、B 考点:二重嵌套循环 注意:每一次外轮循环结束,都执行printf(“n”),输出一个换行符,所以最后的答案为B 牢记:外层循环每进行一轮,内层循环要一直循环到结束25、A 考点:字符常量的合法表示。牢记:字符常量要么是一对单引号括起来的一个普通字符,要么是一对单引号括起来的转义字符。B选项中出现了非法的八进制字符8,C和D选项都是用双引号括起的字符,应该用单引号26、A 考点:函数的返回值。牢记:函数的返回值类型必须与函数首部中返回值的类型一致27、D 考点:字符的ASCII码值。字符数据都是以整型量进行处理的,因此字符型数据可以参与任何整数运算。牢记:1 四个字符的ASCII码必须要记得 A:65 ,a:97,0:48,NULL:0。其他字符的ASCII码值以此类推,例如B的ASCII码就是66 。2 小写字符的ASCII码比大写字符多32。 A选项c=(c-A)&+a 中,由于大小写字母的差值不会超过26,所以A选项也就等价于c=(c-A+a ,A,B,C选项都满足大小写字母相差32的特征。28、B 考点:自加运算符和字符串在内存中的存储形式。29、D考点:指针变量的定义和赋值,A,B,C选项赋值运算符左边和右边的数据类型都是不一致的。A 左边指针 右边整型 B 左边指针,右边浮点C 左边浮点,右边地址值 30、A 考点:正确的使用指针。指针定义的时候需要使用取址符&,表示定义的是指针变量。在定义之后,可以直接使用。B选项*p=&n; 应改为p=&n; C选项scanf(“%d”,&p) ;应改为scanf(“%d”,p) ,当要访问指针变量所指的存储的变量时,需要使用间接访问运算符*,所以D选项应改为printf(“%dn”,*p)。理解:指针在第一次定义时需要使用&符号,但是随后使用的时候就不能再加&符号31、B 考点:函数的参数传递,函数的参数传递分为传值和传地址两种情况。本题就是结合数组考查参数传递的情形。解析:函数f完成的功能是对数据进行排序,语句f(&a2,5,0)的作用是对从a2开始的5个元素进行从大到小排序。注意:这里传递的是地址&a2,所以排序操作可看作是直接对数组a操作,执行后的结果为5,4,7,6,3,2,1, 8,9,10。语句f(a,5,1)对数组a的前5个元素从小到大排序,排序后数组为:3,4,5,6,7,2,1, 8,9,10。32、B 考点:考点:数组名是常量,表示的是数组首元素的地址。当执行f(a)的时候,由于传递的是首地址,相当于直接对数组a进行操作,所以从数组a的第三个元素a2到元素a5,每个元素值扩大两倍。33、D 考点:传值和传地址的区别。解析:1 通过typedef关键字,说明一种新的数据类型名A,在main函数中直接使用A定义了一个结构体变量a。2 调用f(a)函数,注意:这里a是进行传值操作,a本身的值没有发生变化。34、A 考点:多重循环和二维数组的结合。二维数组a44可以转为下面的表现形式: 1,4,3,2 1 4 2 18,6,5,7 排序后: 3 6 3 23,7,2,5 4 7 5 54,8,6,1 8 8 6 7经过三重循环,每列上的元素都按从小到大的顺序排列,循环执行后,数组a的表现形式如右图所示,当执行最后for(i=0;i ttargv1- 12argv2- 345argv3- 678注意:*argvi所代表的是第i行的第一个字符,例如:*argv0表示的就是字符1。(参见教材第三分册65页 例1例2)42、 B 考点:全局变量,局部变量及静态变量。掌握:1 三种变量的作用范围 2 三种变量的生存周期 43、D 考点:宏定义的展开。解析:根据宏的定义 ,K=HDY(a+c,b+d);展开后变为a+c/b+d ,带入数值后,即为1+3/2+4 ,结果为6(3/2计算的结果为1)。注意:宏定义展开后,一定要注意运算顺序。这题容易错误计算为(1+3)/(2+4),结果为0,不要人为添加小括号,这是错误的!44、A 考点:指针变量的简单操作。解析:语句pc=ch;使得指针变量指向字符数组ch的首地址,即指向字符u,则pc+5指向的是字符向后移动5位,指向字符z,所以输出的*(pc+5)的值即为z。45、A 考点:函数传值和传地址。解析:函数f实现的功能是冒泡排序算法,要能够看懂。(参加教材第一分册73页 例8.6)46、A 考点:函数的传址。解析:结构体s包含一个数组a和整型数据n两部分。进行函数f(s.a, s.n);调用时,数组名a作为实参进行传递,数组名是地址常量,表示数组首元素地址,本质上是个传址操作。所以函数的操作会影响到数组元素的值。47、C 考点:typedef关键字的使用。牢记:使用typedef关键字并没有引入新的数据类型!48、B 考点:位运算。牢记:1开始位运算之前,要将运算对象转换位2进制表现形式 2 熟悉六种位运算的运算准则(包括 & | )。解析: a | b d&c00000010 0000011000000100 d=6 00000101 - 4- -00000110 00000100 49、 D 考点:熟悉文件操作函数。牢记:关于文件操作的几个基本函数要能了解功能和用法。包括fprintf,fscanf,fread,fwrite,fopen,fseek,rewind等(参见教材第一分册142页附录-输入输出函数)。解析:注意语句fprintf(fp,”%d%dn”,a0,a1,a2)中只有两个%d格式控制符,所以只读入了数据a0,a1,数据a2没有被读入。紧接着读入换行符n。所以使用fscanf从文件中读取的第一个数据是12。50、A 题型同题49。牢记:关于文件操作的函数必须要记下来,包括函数形式和函数功能。解析:fseek(fp,sizeof(int)*3,SEEK_SET)语句将文件指针定位在数据4,从而语句fread(a,sizeof(int),3,fp)从数据4开始,依次读入三个数据存入数组a的前三个元素中,既数组a的值为:4 5 6 4 5 6 二、填空题:1、63 考点:二叉树的性质。要求二叉树的四个性质都能背诵记忆(参见教材第二分册12页 二叉树的基本性质)。解析:满二叉树的第k层上有2k-1个结点。度为k的满二叉树一共有2k-1个结点。由二叉树的性质可知:除去第k层上的结点,其他所有的结点都是度为2的结点,所以度为2的结点数为2k-1-2k-1 既 27-1-27-1=63。2、黑盒考点:软件测试。背诵:按照软件是否需要执行,软件测试分为静态测试和动态测试;按照功能,分为白盒测试和黑盒测试。(参加教材第二册43页软件测试方法)3、数据库管理系统 4、开发 5、数据字典6、14 考点:逗号表达式的值。牢记:逗号表达式的值是最后一个表达式的值。所以a=(3*5,a+4);执行后,a的值就是a+4的值,即为147、0 考点:getchar()函数及while循环判断。输入1后,ch的值为1,=式判断为假没有执行循环。注意:=运算符的优先级要低于=运算符,但是ch=getchar()有括号,所以先执行前面的赋值运算。 8、m=4 k=4 i=5 k=5 考点:全局变量,局部变量的作用域以及函数传值和自加运算。解析:本题是值传递,m的值为i+的值,为4 执行fun函数后,k+的值也为4。执行后k的值是5。同理,i的值在进行i+传值后,页变为5。9、#& 考点:break语句在switch语句中的使用。掌握:没有break语句,执行完case匹配后的语句,会接着执行,直到要到break语句或者switch匹配结束。10、9 考点:字符常量和转义字符。牢记:转义字符都是由字符引导的。9个字符分别是:I,B,M,n,0,1,2,1。11、1 考点:逻辑运算符的运算规则。牢记:逻辑运算符&的第一个操作对象如果为假,则不会对第二个操作对象进行计算。所以本题中!ch的计算结果为假,所以不会再去计算i+,i仍然是初值1。12、5 4 考点:sizeof函数和strlen函数的区别。牢记:在计算字符串长度时,sizeof是统计0字符的,而strlen是不统计0的。13、0 考点:二维数组的定义。14、 xi-1 15、*pmax=*px(或*pmax=x) 16、10 考点:函数的递归调用。 17、40 理解:指针s1和s2是指向同一块内存单元,所以执行*s2=20之后,事实上*s1也为20,所以*s1+*s2=402007年9月二级C笔试试卷答案和解析一、选择题 (1) D解析 本题考查软件的定义。软件是计算机系统中与硬件相互依存得另一部分,它包括程序、相关数据及其说明文档得总和。因此,本题得正确答案是选项D。 (2) B解析 本题考查软件工程调试。调试与测试是两个不同的过程,有着根本的区别:调试是一个随机的、不可重复的过程,它用于隔离和确认问题发生的原因,然后修改软件来纠正问题;测试是一个有计划的,可以重复的过程,它的目的是为了发现软件中的问题。因此,软件调试的目的是为了改正软什中的错误。本题的正确答案是选项 B。 (3) C解析 通常认为,面向对象方法具有封装性、继承性、多态性几大特点。就是这几大特点,为软件开发提供了一种新的方法学。 封装性:所谓封装就是将相关的信息、操作与处理融合在一个内含的部件中 (对象中)。简单地说,封装就是隐藏信息。这是面向对象方法的中心,也是面向对象程序设计的基础。 继承性:子类具有派生它的类的全部属性 (数据) 和方法,而根据某一类建立的对象也都具有该类的全部,这就是继承性。继承性自动在类勺子类间共享功能与数据,当某个类作了某项修改,其子类会自动改变,子类会继承其父类所有特性与行为模式。继承有利于提高软件开发效率,容易达到一致性。 多态性:多态性就是多种形式。不同的对象在接收到相同的消息时,采用不同的动作。例如,一个应用程序包括许多对象,这些对象也许具有同一类犁的工作,但是却以不同的做法来实现。不必为每个对象的过程取一过程名,造成复杂化,可以使过程名复用。同一类型的工作有相同的过程名,这种技术称为多态性。 经过上述分析可知,在面向对象方法中,实现信息隐蔽是依靠对象的封装。正确答案是选项C。 (4) A解析 本题考查软件工程的程序设计风格。软件在编码阶段,力求程序语句简单、直接,不能只为了追求效率而使语句复杂化。除非对效率有特殊的要求,程序编写要做到清晰第一、效率第二。 人们在软件生存期要经常阅读程序,特别是在软什测试和维护阶段,编写程序的人和参与测试、维护的人都要阅读程序,因此要求程序的可读性要好。正确的注释能够帮助读者理解程序,可为后续阶段进行测试和维护提供明确的指导。所以注释不是可有可无的,而是必须的,它对于理解程序具有重要的作用。 I/0信息是与用户的使用直接相关的,因此它的格式应当尽可能方便用户的使用。在以交互式进行输入/输出时,要在屏幕上使用提示符明确提示输入的请求,指明可使用选项的种类和取值范围。 经过上述分析可知,选项A是不符合良好程序设计风格要求的。 (5) A解析 本题考查程序效率。程序效率是指程序运行速度和程序占用的存储空间。影响程序效率的因素是多方面的,包括程序的设计、使用的算法、数据的存储结构等。在确定数据逻辑结构的基础上,选择一种合适的存储结构,可以使得数据操作所花费的时间少,占用的存储空间少,即提高程序的效率。因此,本题选项A的说法是正确的。 (6) D解析 本题考查数据结构的基本知识。 数据之间的相互关系称为逻辑结构。通常分为四类基本逻辑结构,即集合、线性结构、树型结构、图状结构或网状结构。存储结构是逻辑结构在存储器中的映象,它包含数据元素的映象和关系的映象。存储结构在计算机中有两种,即顺序存储结构和链式存储结构。顺序存储结构是把数据元素存储在一块连续地址空间的内存中:链式存储结构是使用指针把相互直接关联的节点链接起来。因此,这两种存储结构都是线性的。可见,逻辑结构和存储结构不是一一对应的。因此,选项A和选项B的说法都是错误的。 无论数据的逻辑结构是线性的还是非线性的,只能选择顺序存储结构或链式存储结构来实现存储。程序设计语言中,数组是内存中一段连续的地址空间,可看作是顺序存储结构。可以用数组来实现树型逻辑结构的存储,比如二叉树。因此,选项C的说法是错误的。 (7) C解析 冒泡排序的基本思想是:将相邻的两个元素进行比较,如果反序,则交换:对于一个待排序的序列,经一趟排序后,最大值的元素移动到最后的位置,其他值较大的元素也向最终位置移动,此过程称为一趟冒泡。对于有n个数据的序列,共需 n-1趟排序,第i趟对从1到n-i个数据进行比较、交换。冒泡排序的最坏情况是待排序序列逆序,第1趟比较n-1次,第2趟比较n-2次,依此类推,最后一趟比较1次,一共进行n-1趟排序。因此,冒泡排序在最坏情况下的比较次数是(n-1)+(n-2)+1,结果为n(n-1)/2。本题的正确答案是选项C。 (8) A 解析 本题考查数据结构中二叉树的性质。二叉树满足如下一条性质,即:对任意一棵二叉树,若终端结点(即叶子结点)数为n0,而其度数为2的结点数为 n2,则n0=n2+1。根据这条性质可知,若二叉树中有70个叶子结点,则其度为2的结点数为70-1,即 69个。二叉树的总结点数是度为2、度为1和叶子结点的总和,因此,题目中的二叉树总结点数为69+80+70,即219。因此,本题的正确答案是选项A。 (9) B解析 本题考查数据库系统的基本概念和知识。 数据库系统除了数据库管理软件之外,还心须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等。对于大型的多用户数据库系统和网络数据库系统,还需要多用户系统软件和网络系统软件的支持。因此,选项A的说法是错误的。 数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它们所需要的子集,而且容许子集任意重叠。数据库的根本目标是要解决数据的共享问题。因此,选项B的说法是正确的。 通常将引入数据库技术的计算机系统称为数据库系统。一个数据库系统通常由五个部分组成,包括相关计算机的硬件、数据库集合、数据库管理系统、相关软件和人员。 因此,选项C的说法是错误的。 因此,本题的正确答案是选项B。 (10) C解析 题考查数据库的关系模犁。关系模型的数据结构是一个“二维表”,每个二维表可称为一个关系,每个关系有一个关系名。表中的一行称为一个元组:表中的列称为属性,每一列有一个属性名。表中的每一个元组是属性值的集合,属性是关系二维表中最小的单位,它不能再被划分。关系模式是指一个关系的属性名表,即二维表的表框架。因此,选项C的说法是正确的。 (11) B解析 本题考查的知识点是:C语言的基本概念。 C浯言源程序的后缀为.c;经过编译得到的目标程序文件的后缀为obj:再将目标程序文件链接后得到可执行文件的后缀为.exe。故本题应该选择B。 (12) A解析 本题考查的知识点是:标识符。 用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。另外,标识符不能是C语言关键字。选项B中,y-m-d用了“-”所以不是标识符;选项C,Dr.Tom用了“.”也不是标识符;选项D中,case是 C语言关键字,所以不能用作标识符。故本题应该选择A。 (13) B解析 本题考查的知识点是:数值常量。 数值常量分为整型和实型两类。其中,整型有卜进制、八进制和十六进制三种表示法;实型有小数形式和指数形式两种表示法。十进制和书面使用的数据表示一样;八进制是以数字0开头,后面跟由07组成的八进制数组成:十六进制是以0x(或OX)开头,后面跟由09与AF(或af)组成的十六进制数组成:小数形式由数字和小数点组成,其整数部分或小数部分如果为0可省略,但不能同时省略。指数形式由小数形式或十进制形式开头,后面跟e(或E),再跟一个十进制整数组成。选项A中, 028是八进制形式,但后面跟的8不在07之内,所以非法;选项C中,4e1.5是指数形式,但e后面所跟的不是整数,所以非法;选项D中,10,000中不能有“,”,所以非法。故本题应该选择B。 (14) C 解析 本题考查的知识点是:C语言的基本概念。 C语言程序将从主函数main()开始执行,故选项A不正确;主函数必须是main(),故选项B不正确;主函数的返回类型必须为int或void,形参可以没有也可以为int,char *。所以不是任意函数都能作为主函数,故选项D不正确。本题应该选择C。 (15) C解析 本题考查的知识点是:标准输入函数scanf()。 scanf()函数要求,除了第1个参数为格式化字符串以外,其余参数均为相应变量的地址值。本题中,只有p是地址值,故应该选择C。 (16) D解析 在C语言的标准中,short占2个字节、long占4个字节,但int的大小和编译系统相关。例如在Turbo C 2.0中,int占2个字节,但在VisualC+6.0(VC6可以用做C语言编译器)中占4个字节。故本题应该选择D。 (17) A解析 本题考查的知识点是:赋值语句、“%”运算符。 赋值语句由两个运算分量和一个赋值运算符组成。赋值运算符包括“二”、“+=”、“*=”等。其中,赋值运算符左侧的运算分量称为左值,右侧的叫右值。任何合法表达式都可用做右值,但临时值、常量不能用做左值。“%”运算符的作用是求模,意思是做除法求余,这就要求两个运算分量均为整数。选项B中,2.5不是整数,故非法:选项C中,表达式x+n计算后得到的是一临时值,临时值不能做左值,故非法;选项D中,由于“=”运算符的结合性是“从右到左”,故先计算5=4+1,5是常量不能做左值,故选项D也非法。选项A,y=5是一个逻辑表达式,其值为真或假,可以用做右值,所以是合法的。故本题应该选择A。 (18) B解析 本题考查的知识点是:输入格式化控制串。 本题scanf()函数的格式化控制串中,-表示输入一个2位的整数:%f表示输入一个浮点数;%s表示输入一个字符串。因此,从键盘上输入55566 7777abc后, 前两位55被当作2位整数输入给j;566被当作浮点数输入给y;跳过空格后,剩下的字符串7777abc全部输入给name;故本题应该选择B。 (19) B解析 本题考查的知识点是:dowhile循环。 dowhile循环会首先执行循环体1遍,然后再判断while后的逻辑表达式是否为真来决定是否进行下一次循环。所以,dowhile循环的循环体至少会被执行1遍。本题中,首先令i为0,然后进入dowhile循环,执行1遍循环体输出i的值0。然后,因为表达式i+的值为0(执行后i的值被增1),所以dowhile循环结束,接下来再输出i的值1。故本题应该选择B。 (20) B解析 本题考查的知识点是:sqrt()函数。sqrt()函数的作用是计算,要求输出的参数x必须大于等于0。选项B一开始就调用了sqrt(x)而没有判断x的正负,所以是错误的。故应该选B。 (21) B解析 本题考查的知识点是:逻辑表达式。 在C语言中,逻辑表达式的结果只有两种情况“tree”和“false”。如果要把一个逻辑值看成一个整数的话,true等于1;false等于0。如果要把一个整数看成一个逻辑值的话,非0等于true:0等于false。由此可见,如果EXP表达式的结果为0的话;(EXP)为假:(EXP=0)为真;(EXP!=O)为假;(EXP=1)为假;(EXP!=1)为真。如果EXP表达式的结果为非0的话:(EXP)为真:(EXP0)为假;(EXP!=0)为真;(EXP1)结果不定;(EXP!=1)结果不定。综上所述,只有(EXP!=0)完全等价于表达式(EXP)。故应该选择B。 (22) C解析 本题考查的知识点是:for循环、%运算符。 本题首先令y为9,然后通过一个for循环,当y还大于0则循环,每次循环让y递减1。循环体中是一条if语句,通过%运算符计算每当y能被3整除的时候,输出-y的值,即先将y减1,然后输出y的值。故当y等于9、6、3时会输出,输出值分别为8、5、2。所以应该选择C。 (23) B解析 本题考查的知识点是:大写字母的判断。 大写字母从AZ的ASCII码是连续的,所以如果当一个字符大于等于A31小于等于 Z时,那这个字符就一定是一个大写字母,故选项C正确。C语言中的库函数isupper()的作用也正是判断一个字符是否为大写字母的,故选项A正确。在ASCII码中,小写字母的编码也是连续的,对应的小写字符比大写字符的ASCII码值大32,所以选项D经过小写字符-32后,换算成了对应的大写字母z和A,所得到结果和选项C是一致的,故也是正确的。选项B中,C语言的逻辑表达式不能直接连写,而应该写成 选项C那样,故是错误的,应该选择B。 (24) B解析 本题考查的知识点是;for循环的嵌套、%运算符。本题程序中,关键部分是一个for循环的嵌套。外循环将执行3遍,循环变量i的值依次为13。内循环每次将从3循环递增到外循环变量i的值。所以,前两次循环i的值都小于3,故内循环没有被执行,第3次,内循环将执行1次,执行时i等于3。 %运算符的作用是整除求余,55除以3等于18余1,所以整个循环结束后,m的值为1。故应该选择B。 (25) D解析 本题考查的知识点是:函数的形参和实参。 在定义函数时函数名后面括弧中的变量名称为“形式参数”(简称形参),在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数” (简称实参)。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。故本题应该选择D。 (26) C解析 本题考查的知识点是:字符变量。 字符变量其实就是整型变量。只不过它只占1个字节,所以表示范围是-128127。它所储存的值为它所代表字符的ASCII码值。“己知字符,A,的ASCII代码值是65,字符变量c1的值是A”这句话告诉我们,c1中存储的值就是65;c2的值为D,但在输出时减了2,所以输出的值为B,也就是66。故本题应该选择C。 (27) C解析 本题考查的知识点是:函数、指针。 在C语言中,指针变量是不能直接赋给一个整数作为地址值的。因此选项C是错误的。其余选项的说法正确。故应该选择C。 (28) D解析 本题考查的知识点是:字符串常量。 在C语言中,字符串常量是以双引号括起来的字符序列。故选项B和C不正确。字符序列中可包含一些转义字符,转义字符都是以“”开头的。选项A中包含了三个“”,前两个()代表了个”字符,后面一个和“”一起()被看作一个“”,所以该字符串缺少一个结束的“”,故不正确。选项D的两个“”之间没有任何字符,代表的是一个空串,是合法的字符串常量,故应该选择D。 (29) A解析 本题考查的知识点是:sizeof()运算符。 sizeof()运算符的作用是计算一个变量所占的内存字节数。选项A传入的是数组名p,数组p由3个字符大小,所以占3个字节。故不能计算出一个char型数据所占字符数。而选项B、C、D传入的都是字符元素或字符类型名char,这些都能计算出一个 char型数据所占字符数。故本题应该选择A。 (30)A解析 本题考查的知识点是:while循环的简单应用。 aaa()函数中,首先定义了一个字符指针t指向形参s,然后通过一个while循环让指针 t不断递增,直到t指向字符串结束标志处。当t指向结束标志处时,由于后缀+运算符的原因,它还会被再递增1,所以接卜来的t-;语句让它回到结束标志处。最后返回t-s,因此s还是指向字符串第1个字符处,而t指向了字符串结尾,故返回值为字符串的长度值。 (31) B解析 本题考查的知识点是:二维数组在内存中的存放顺序。 二维数组的元素在内存中是按行列顺序连续存放的。以本题的二维数组a36为例,它的元素在内存中的存放顺序是:a00、a01、a02a05、a10、 a11a15、a20a25。由此可见,第10个元素就是第2行第4个元素,即a13。故应该选择B。 (32) A解析 本题考查的知识点是;指针数组和二级指针。 本题主函数中定义了一个指针数组a,可以将它看成一个以字符指针为元素的一维数组。和般的一维数组名能赋给同类型指针变量一样,该字符指针数组也可以赋给指向字符指针的指针(即字符型二级指针),所以数组名a可以用作函数fun()的实参。 在fun()函数中,+p操作使形参p往后移动一个字符指针的位置,即指针a1的位置。故最后通过printf()函数输出的字符串为Afternoon,应该选择A。 (33) C解析 本题考查的知识点是:二维数组和指针数组。 无论一个数组有多少维或者是甭含指针类型,该数组最终都可以被看作一个比较特殊的一维数组。例如本题中的int a23可以看作元素为int3(即包含3个int型元素的一维数组),包含2个这样元素的一维数组;而int*p3则可以看作元素为int*,包含3个这样元素的一维数组。选项A中,p为数组名,其值是不能被改变的,故非法:选项B中,p0的类型是int*,而a是二维数组名(类犁为int3),两者无法赋值,故非法;选项C中,p0为int型指针,&a12是int型变量的地址,可以合法赋值;选项D中,p1是血型指针,而&a是二维数组的地址(类型为int(*)23),两者无法赋值,故非法。所以本题应该选择C。 (34) D解析 本题考查的知识点是:for循环的简单应用。 题目中fun()函数的作用是排序,从形参指针a所指位置开始,对其后n个int型元素进行从大到小排序。主函数中,调用fun()函数传入的两个实参分别为c+4和6,即从数组c的第5个元素开始,对其后连续的6个元素进行从大到小排序。所以,最后通过for循环输出数组c的值为“1,2,3,4,9,8,7,6,5,0,”,故应该选择D。 (35) C解析 本题考查的知识点是:while循环的简单应用。 题目fun()函数中while循环的意思是:判断s所指内容是否为数字字符,如果是数字字符,则计算表达式11=10*n+*s-0;。其中。s-0的作用是将相应的数字字符转换为数值,例如字符8减去字符0后,得到的结果就是数值8了。n=10*n+的作用是将累计变量n中原来内容乘以10,然后再加上刚转换的数字字符的数值,例如原来n的值为1,*s现在的内容为2,那么执行了n=10*n+*s-0,;语句后,n的值变为12,如果接下来再来一个8字符,执行n=10*n+*s-0;语句后,n的值就是128了。故不难看出fun()函数的作用是“将数字字符串转换为相应的十进制数值,碰到非数字字符时结束”。从主函数中定义的字符数组s的初始化内容可以看出,fun()函数返回值应该是61。故应该选择C。 (36) C解析 本题考查的知识点是:输入函数。 C语言提供了许多输入函数,其中有:getchar(输入字符)、scanf(格式输入)和gets (输入字符串)等。题目要求输入的是字符串,所以可以排除getchar,而且要求输入的字符串中包含空格,而scanf函数默认将输入的空格字符作为分割符,所以空格不会被输入,故可排除scanf。getc的作用是从文件中输入一个字符,故也不可取。gets函数可以输入一整行作为一个字符串,其中也包括空格字符,故应该选择C。 (37) D 解析 本题考查的知识点是:字符串。 C语言中只有字符串常量而没有字符串变量,故选项A不正确:字符串比较大小是以第1个不相同字符的大小为标准的,跟长度没有关系,故选项B不正确;字符串比较大小除了使用库函数strcn3()以外,就只能靠自己写代码来实现了,而不能通过关系运算符来比较大小。因为字符串在表达式中相当于const char*,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。所以选项C也不正确。空串的长度为0,而以空格打头的字符串的长度至少为 1,故选项D正确,本题应该选择D。 (38) D解析 本题考查的知识点是:while循环的简单应用。函数fun()中,前一个while循环的作用是:如果形参指针t所指内容不为0,则让t增1,直到它指向0。后一个 while循环的作用是:将s所指内容赋给t所指地址,然后两者同时增1,直到赋给t的内容为0。由此可见,函数fun()的作用就是将形参s所指字符串连接到形参t所指字符串末尾,相当于库函数中的strcat()。主函数中使用fun()将数组aa中的字符串连接到了数组ss中原有字符串之后,所以执行完后,ss中的字符串为accbbxxyy。故 最终输出的结果是:accbbxxyy,bbxxyy,应该选择D。 (39) D解析 本题考查的知识点是:for循环的简单应用,选择排序算法。在函数fun()中有一个两层嵌套的for循环,外循环变量i从0递增到n-2,内循环变量i从i+1循环递增到n-1,这是选择排序算法的标准结构。循环体中因为逆序条件为“si0 sj0”,所以实现的是升序排序。由此可见,fun()函数实现的功能是对一个二维字符数组前n行的首字符进行升序排序。主函数中定义的二维数组初始化为bcc,”bbcc, xy,aaaacc,aabcc,通过fun()函数的排序后,结果将为厂acc,abcc,by, baaacc,xabcc。故最终输出字符串ss0和ss4的结果为acc,xabcc,应该选择D。 (40) D解析 本题考查的知识点是:全局变量的作用域。全局变量的有效范围是从定义变量的位置开始到本源文件结束。如果需要在其他源文件中使用该全局变量,则可以在其他源文件中使用extern关键字来声明该全局变量,这样该全局变量的作用域就被扩展到以extern声明了该全局变量的位置开始到此源文件结束。故本题的正确答案为D。 (41)A 解析 本题考查的知识点是:静态局部变量。静态局部变量的作用域跟一般局部变量相同,都是从声明处开始到声明所在函数或语句块结束为止。但静态局部变量的生存周期却是从第1次执行到该静态局部变量的声明语句时起,直到程序结束。而般局部变量的生存周期到离开它的作用域时就结束了。本题的f()函数中static int a=2;语句就声明了一个静态局部变量a,并初始化为2。主函数中,通过一个for循环连着调用了2次f()函数。两次调用形参c都为3,f()函数中让c增1变为4,然后输出(a+) +c,第1次调用a为2,所以输出结果为3+4=6,而第2次调用a被上次调用时的+运算符增1,所以为3,输出结果为3+4=7。所以主函数for循环结束后,k的值是13,下面一条k+=a;语句中的a是全局变量a,值为1。故最终输出结果是14,应该选择 A。 (42) A解析 本题考查的知识点是:函数的递归调用。在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。本题中的fun()函数直接调用了自身,所以它是一个递归函数。fun()函数中,当形参n为1或2时,让形参p所指内容为1。从这里可以看出形参p的用途是输出一个整数,所以我们不妨记作fun(1)=1、 fun(2)=1。如果是其他情况,那么输出结果*p的内容为f(n)=f(n-1)+f(n-2)。由此可见, fun()函数的作用是求斐波纳契数列第n项的值(斐波纳契数列第1和2项的值为1,以后各项分别为前两项之和:1、1、2、3、5、8、13)。主函数中通过fun()函数,求第3项值;所以输出结果为2,故应该选择A。 (43) B解析 本题考查的知识点是:宏定义。宏定义是预处理命令,即在C源程序进行编 译之前,编译程序对源程序进行编译预处理时所进行的一种替换操作。所以选项C和 D可以排除。宏定义是用宏名代替一个字符串,也就是作简单的置换,不做正确性检查。所以选项A的叙述也不正确,宏替换时100被当作一个字符串来替换宏名的,而不是被看作整数值100。故本题的正确答案为B。 (44) A解析 本题考查的知识点是:typedef关键字。typedef关键字是用来给已有的类型起个新的名字,以增加程序的可读性的。所以,通过typedef是不可能增加新的类型的,故应该选择A。 (45) D解析 本题考查的知识点是:结构体数组。题目中定义了一个全局结构体数组a,结构体中包含两个成员:一个int型变量x和一个自身类型指针y。所以,结构体数组a的初始化列表中每两个初始化一个结构体元素。主函数通过一个for循环,连续调用了两次输出函数printf(),每次输出p所指元素的x成员值。p初始化时指向数组 a的首地址,即a0的位置,所以第1次输出的值为20。然后又将a0的成员y的值赋给p,y在初始化时是a+1,所以p在第2次输出时指向的元素是a1,故第2次输出的值为15。所以本题最终输出结果是“20,15,”,应该选择D。 (46) C解析 本题考查的知识点是:结构体。本题的f()函数中,首先定义了一个STU结构体变量b并初始化为Zhao,m,85.0,90.0,然后分别通过strcpy()库函数、赋值语句和for循环,将b中所有成员分别赋给形参a的相应成员,最后返回a。所以,无论传递给函数fun()的参数是什么,结果返回的都会是函数中定义的STU结构体b的内容Zhao,m,85.0,90.0。故最终输出结果为:Zhao,m,85,90,应该选择C。 (47) D解析 本题考查的知识点是:联合体。联合体的所有成员共占同一段内存,所以联合体变量的长度与它的最长成员所占长度致,本题中float所占内存字节数为4,而 int类型在TurboC 2.0中是占2字节、在VisualC+6.0中占4字节,所以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东梅州市平远县公办幼儿园合同制专任教师招聘18人笔试模拟试题及答案解析
- 2025广东佛山市高明区疾病预防控制中心合同制工作人员招聘1人备考试题及答案解析
- 家具厂雕刻机安全管理细则
- 小学一年级体育培训计划
- 产品合作协议合同(标准版)
- 人教版三年级英语下册单元教学计划
- 异常阈值动态调整-洞察及研究
- 2025年内镜科操作技能考核模拟试卷答案及解析
- 2025年整形美容注射减肥针的护理要点模拟考试答案及解析
- 工程机械租赁环保节能服务方案及保障措施
- 监护学徒协议书范本
- 办公楼维修改造施工方案
- 集团海外业务管理手册(专业完整格式模板)
- 高危儿培训计划和方案
- 2025年公文写作基础知识竞赛试题库及答案(共120题)
- ISO9001 质量管理体系全套(质量手册+程序文件+表格记录全套)
- 路灯CJJ检验批范表
- 肛肠科年度汇报总结
- 鸡蛋合作合同范本
- 外研版英语九年级上册-Module1-12作文范文
- 民用无人机操控员执照(CAAC)考试复习重点题库500题(含答案)
评论
0/150
提交评论