全国计算机等级考试二级C语言真题题库4+2015年3月_第1页
全国计算机等级考试二级C语言真题题库4+2015年3月_第2页
全国计算机等级考试二级C语言真题题库4+2015年3月_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、全国计算机等级考试二级 C语言真题题库4 2015年3月( 总分: 43.00 ,做题时间: 120 分钟 )、选择题 ( 每小题 1 分,共 40 分 )( 总题数: 40,分数: 40.00)1. 下列叙述中正确的是( )。(分数: 1.00 )A. 每一个节点有两个指针域的链表一定是非线性结构B. 所有节点的指针域都为非空的链表一定是非线性结构C. 循环链表是循环队列的链式存储结构D. 线性结构的存储节点也可以有多个指针V解析: 解析 一个非空的数据结构如果满足以下两个条件:有且只有一个根节点;每一个节点最多有一个 前件,也最多有一个后件,则称为线性结构,在数据结构中习惯称为线性表。双向

2、链表节点具有两个指针 域,属于线性结构,A选项错误。循环链表所有节点的指针域都为非空,属于线性结构,B选项错误。循环链表是链表,循环队列属于队列,队列只能在队尾人队,在排头退队,链表可以在任何位置插入、删除,C选项错误。双向链表节点具有多个指针域,D选项正确。2. 使用白盒测试方法时,设计测试用例应根据()。(分数: 1.00 )A. 程序的内部逻辑 VB. 程序的复杂结构C. 程序的功能D. 使用说明书解析: 解析白盒测试又称为结构测试或逻辑驱动测试,它允许测试人员利用程序内部的逻辑结构及有关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试,故A选项正确。3. 在医院, 每个医生只属于

3、某一个诊疗科, 医生同一天可为多位患者看病, 而一名患者可在多个科室治疗。 则实体医生和患者之间的联系是( )。(分数: 1.00 )A. 多对多 VB. 多对一C. 一对多D. 一对一解析: 解析 一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系(1:1)、一对多联系(1 : m)、多对多联系(m: n)。医生可为多位患者看病,患者也可以找多位医生看病,实体医生与患 者联系是多对多,A选项正确。4. 设序列长度为n,在最坏情况下,时间复杂度为O(log2n)的算法是(&nbsp)。(分数: 1.00 )A. 二分法查找 VB. 顺序查找C. 分块查找D. 哈希查找

4、解析:解析对长度为n的线性表排序,最坏情况下时间复杂度,二分法查找为O(log2n);顺序查找法为O(n);分块查找时间复杂度与分块规则有关;哈希查找时间复杂度为0(1),因其通过计算HashCode来定位元素位置,所以只需一次即可。故正确答案为A选项。5. 设数据集合为D= 1,3, 5, 7,9,D上的关系为R,下列数据结构B= (D,R)中为非线性结构的是()分数: 1.00 ) 解析:解析一个非空的数据结构如果满足以下两个条件:有且只有一个根节点;每一个节点最多有一个A. R = (5,1),(7,B. R = (9,7),(1,C. R = (1,9),(9,D. R = (1,3)

5、,(3,9), (1, 7), (9, 3)3), (7, 1), (3, 5)7), (7, 5), (5, 3)5), (5, 9) V前件,也最多有一个后件,则称为线性结构,在数据结构中习惯称为线性表。A选项中,5为根节点,线性表为51793。B选项中,9为根节点,线性表为 97135。C选项中,1为根节点,线性表为 19753。D选项, 节点1与节点7都是根节点,属于非线性结构,故 D选项正确。6. 深度为7的二叉树共有127个节点,则下列说法中错误的是()。(分数:1.00 )A. 该二叉树有一个度为1的节点 VB. 该二叉树是满二叉树C. 该二叉树是完全二叉树D. 该二叉树有64个

6、叶子节点解析:解析在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度。完全二叉树指除最后一层外,每一层上的节点数均达到最大值,在最后一层上只缺少右边的若干节点。满 二叉树指除最后一层外,每一层上的所有节点都有两个子节点的二叉树。深度为7的二叉树,前6层共有节点个数为26-1 = 63,则第7层有127-63 = 64个节点,即第7层节点数达到最大值,故此二叉树为满二叉 树,也是完全二叉树,该二叉树没有度为1的节点,有64个叶子节点。故正确答案为 A选项。7. 某二叉树的中序序列为 BDCA后序序列为DCBA则前序序列为()。(分数:1.00 )A. DCBAB.

7、BDCAC. ABCD VD. BADC解析:解析二叉树遍历可以分为3种:前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。本题中中序序列为 BDCA后序序列为DCBA可知A为根节点,BDC为左侧节点,C是B右子节点,D 是C右子节点,故前序序列为 ABCD C选项正确。8. 下面能作为软件需求分析工具的是()。(分数:1.00 )A. PAD 图B. 程序流程图C. 甘特图D. 数据流程图(DFD图) V解析:解析软件需求分析方法包括结构化分析方法和面向对象的分析方法两大类,前者常用

8、工具为数据流图(DFD)、数据字典(DD)、判定表、判定树等。故 D选项正确。9. 下面不属于对象主要特征的是()。(分数:1.00 )A. 唯一性B. 多态性C. 可复用性 V解析:解析对象的基本特点如下表所示。D. 封装性10. I(分数:1.00 )A. (c,c,11,4) VB. (e,e,6, 1)C. (a,a,2,4)D. (a,a,2, 4)和(e,e,6,1)解析:解析从关系中找出满足给定条件的元组的操作称为选择,用b表示。“人”为交运算,它由属于前者且属于后者的元组组成。题目为选出属性 A等于属性B,同时属性C大于4,并且属性D大于3的元组,结果为(c , c, 11,

9、4),应保留全部属性。故 A选项正确。11. 简单程序设计步骤中不包括( )。(分数: 1.00 )A. 编码B. 确定算法C. 安装编译程序VD. 调试解析: 解析 简单程序设计步骤为确定数据结构、确定算法、编码、调试、整理文档,不包括安装编译程 序,故答案为C选项。12. 若想给已定义为int型的变量a, b, c, d赋值为1,以下选项中错误的语句是()。(分数: 1.00 )A. d = 1, c = d, b = c, a = b;B. a = b=c = d= 1 ;C. a=1, b=a, c=b, d=c;D. a=b, b=c, c=d, d=1; V解析:解析赋值是将一个常

10、量的值赋给一个变量,在D选项中,变量b的值相当于一个未知的数,用变量b对变量a赋值,不满足题干要求的变量a、b、c、d赋值为1的条件,因此答案选 D选项。13. 有C语言表达式2*3+4+15%3,关于其执行顺序,以下叙述正确的是()。(分数: 1.00 )A. 先执行 2*3 得 6,再执行 6+4 得 10,再执行 15% 3 得 0,最后执行 10+0 得 10 VB. 先执行2*3得6,再执行15%3得5,最后执行6+4+5得15C. 先执行15%3得0,再执行2*3得6,最后执行6+4+0得10D. 先执行15%3得3,再执行4+3得7,再执行2*3得6,最后执行6+7得13解析:

11、解析 首先运算符“ *”和运算符“%”有相同优先级,并且优先级都高于运算符“+”,再根据运算结合性,乘法和取余运算都满足从左到右的运算规则,C D选项错误;因为15%3= 0,排除B选项,答案为A选项。14. 若有定义:int a; float b ; double c;,程序运行时输入:1, 2, 3,能把1输入给变量a、2输入给 变量 b、 3 输入给变量 c 的输入语句是( )。(分数: 1.00 )A. scanf(" %d,% f ,% lf" , a, b, c) ; VB. scanf(" %d% f%lf , a,b, c) ;C. scanf(&

12、quot; %d,%lf ,%lf" ,a,b,c);D. scanf( ”% d,% f,%f”, a,b,c);解析:解析scanf()函数中, d对应的参数是整数型地址, f对应的参数是float型地址, If对应 的参数是double型地址,因此 C D选项错误;在格式化字符串中,如果输入地址有多个,应该用逗导隔 开,B选项错误,故答案为 A选项。15. 以下选项中,合法的 C语言实数是()。(分数: 1.00 )A. E1B. 1e0 VC. 0.10eD.解析:解析C语言的数值表示中,e和E都表示“10的幂次”,后面必须接整数,排除C D选项;e前面必须有底数,排除 A选

13、项,答案为B选项。16. 关于程序中的注释,以下叙述正确的是( )。(分数: 1.00 )A. 注释的内容必须放在一对 *和*之间 VB. 注释必须置于所说明的语句前或语句后C. 注释中间可以嵌套另一个注释D. 注释内容错误会导致编译岀错解析:解析程序中,注释可以岀现在程序的任何位置,B选项错误;注释中间不能嵌套另一个注释,C选项错误;注释内容不影响程序编译,D选项错误,故答案为 A选项17.有以下程序:123V回车,则输岀结果是(分数:1.00 )A. 1,2, 3,2, 3,3,B. 1,2, 3,C. 1,2, 2,3, 4,5, VD. 1 ,1,1 , 2, 2, 3解析:解析程序在

14、执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,执行对应的 case语句,之后不再进行判断,继续执行此case后面的语句,并且各个 case和default的出现次序不影响执行结果,即题目中的default放在开始位置,与放在最后是一样的结果;运算符“+”放在变量后面时,表示先执行其他操作,再将变量+1。本题,第一次循环输入 b = 1,执行case 1,输出1;再执行case2,输出2。第二次循环输入 b= 2,执行case 2,输出2。第三次循环,输入b= 3,没有case与其对应,故执行default ,输出b = 3,接着执行case 1 ,输出4,再执行ca

15、se 2,输出b = 5,至此退出for语句 因此,最后输出为1, 2, 2, 3, 4, 5,答案为C选项。18. 以下非法的定义语句是()。(分数:1.00 )A. long b = 0L;B. unsigned int a= -100u ; VC. short c2 = 0123;D. int d = 0x0;解析:解析关键字unsigned定义的是“无符号数",则B选项定义错误,答案为 B选项。19. 有以下程序:程序运行后的输出结果是()。(分数:1.00 )A.1 VB. 4C. 0D. 10解析:解析for语句中,当a = 0时,满足for循环中if语句的条件,执行co

16、ntinue继续下一次循环执行a+1后进入for语句循环,此时a= 1不满足if条件,执行b = b+a,此时b = 1,接着执行break语句,20.有以下程序:终止循环,最后输岀b=1,故答案为A选项abcdefg#,则输出结果是()(分数:1.00 )A. bcdefgh $B. bcdefghC. abcdefg#D. abcdefgV解析:解析运算符“ +”放在变量后面时,先参与其他操作,再对变量+1。putchar(c+)表示先输小当前c值,再对c值+1,当输入abcdef#时,在while语句中,当程序输入“ #”时,循环退出。因此输出为abcdefg,答案为D选项21.有如下程

17、序:(分数:1.00 )I程序运行后的输岀结果是()A. a12dVB. ab3dC. IOabD. llac程序运行后的输岀结果是(解析:解析if(i % 3)表示i对3求余,如果不等于 0,则执行putchar(a+i),否则执行putchar(b+i) 可见,i = 0 时,i %3= 0,执行 putchar(b+i),此时 b= 'a'。以此类推,当 i = 1 时,执行 putchar(a+i). 输出1; i = 2时,执行putchar(a+i),输出2 ; i = 3时,执行putchar(b+i),输出d。故答案为 A选项)。22. 有以下程序:(分数:1.

18、00 )A. ML VB. MKC. OPD. mmIZZ)程序运行后的输出结果是()解析:解析(ch! = 'K')表示如果ch不等于K成立时,输出ch,再对ch进行ASCII码减一操作,循环开 始时,ch = 'M',不等于'K',输出M,执行ch-,此时ch = 'L',循环继续输出L,执行ch-,此时ch = 'K',退岀循环。答案为 A选项。23. 有以下程序:(分数:1.00 )A. 3,3B. 5,5C. 3,5 VD. 5,3解析:解析函数f()的功能是:定义一个临时的整型指针变量 s,指向全局变量

19、k,然后用k的值对s指 向的内存地址进行赋值,结果当然是 k的值不变;在main函数中,调用f()函数,虽然使用 m的地址初始 化s,但是s在f函数内部又被指向k的地址,所以s的后续操作对 m没有任何影响,因此最后输出为 3, 5,答案为C选项。I24. 有如下程序:程序运行后的输出结果是()。(分数:1.00 )A. 12345B. 01234 VC. 45678D. 43210解析:解析程序的main()函数中,printf()函数调用sum_mod()函数,计算结果为i+4 % 2。因为4% 2为0,所以循环中函数每次执行的结果都是返回i,因此答案为B选项。25. 以下对指针变量的操作中

20、,错误的程序段是()。(分数:1.00 )A. int x = 0, *p ; *p = x;VB. int x = 1, *p , *q =& x; p= q;C. int *p , *q ; q = p= NULLD. int p , *q ; q=& p;解析:解析定义指针p后,必须在指针P初始化时进行赋值,故 A选项程序错误,答案为 A选项。26. 有如下程序段:int *p , a = 1; p =& a; *p = 10;则变量a的值为()。(分数:1.00 )A. 不能确定B. 1C. 10 VD. 11HE龄解析:解析题中定义一个指针变量 p和整数变量a

21、,并将a赋初值1,再把a地址的值赋给指针p,最后 把10赋给指针p所对应的地址单元,此时改变了a的值,a = 10,答案为C选项。27. 有以下程序;(分数:1.00 )A. 6 , 9,VB. 6,10,C. 6,6,D. 6 , 7,解析:解析static表示定义一个静态分布变量,变量只会初始化一次,在for循环体内调用f()函数,f()函数是将当前的n,m, a,k值加1后进行累加返回主函数输出。第二次累加时,n值初始值为1,因此输出分别为6,9,答案为A选项。程序运行后的输岀结果是()。(分数:1.00 )A.6 ,5,4,6,5,4,B.4 ,5,6,5,4,VC.4 ,5,6,4,

22、5,6,28.有以下程序:D.6,5, 4,5, 6,解析:解析本题考查了函数的递归调用,在main函数中调用f(z , 3)后,系统进入f()函数,随后进入if语句,输出x0;再进入f()函数时,存在&x1函数的递归,输出x1;再进入f()函数,再进行递 归,输出x2;随后结束返回输出上一个f()函数,输出x1;再返回第一个f()函数中,输出x0,程序运行后的输岀结果是4, 5, 6, 5, 4。因此答案为B选项。29.有如下程序:丨I程序运行后的输出结果是()。(分数:1.00 )A. 4 , 5, 1 , 3B. 4 , 3, 2, 1C. 4 , 5, 3, 3D. 4 , 5

23、, 3, 4 V解析:解析当将一个字符串存储到一个字符型数组中时,系统会在其末尾自动加上一个空字符 0'作为结束符。strlen()函数的返回值是字符串的实际长度,不包括结束符,所以 =3。而 sizeof() sizeof(a) = 5。30.有以下程序:(分数:1.00 )A.8 VB.9strlen(a) = 4, strlen(b)函数的作用是返回一个对象或者类型所占的内存字节数,返回值包括结束符,所以由于一个指针在内存中占用 4个字节,故sizeof(b) = 4,答案为D选项。程序运行后的输岀结果是()。C. 10D. 7解析:解析static 定义一个静态分布变量,变量只

24、会初始化一次。在for函数的循环体中调用sum(i)函数,循环3次,每次都把i值累加在变量init中,再执行i+1操作。因此,退出循环后,init = 1+1+2+3 =7,返回main()函数再次执行sum(1),此时init = 8,把init的地址赋给指针p,输出指针p指向的init 的值,答案为A选项。31.以下对C语言函数的叙述中正确的是()。(分数:1.00 )A.调用函数时,只能把实参的值传给形参,形参的值不能传给实参VB. 函数既能嵌套定义,又能递归定义C. 函数必须有返回值,否则不能使用D. 程序中有调用关系的所有函数必须放在同一个源程序中解析:解析C语言不能嵌套定义函数,能

25、递归定义函数,因此B选项错误;函数可以没有返回值,没有返回值的涵数返回类型为 void , C选项错误;程序有调用关系的所有函数可以不放在同一源程序中,D选程序运行后的输岀结果是(项错误,答案为A选项。)。32. 有以下程序:(分数:1.00 )A. 27 , 27B. 9 , 9C. 27, 29 VD. 29, 29解析:解析定义一个带参数的宏时,字符串内的形参通常要用圆括号括起来,以避免出错。本题中,S(k+j)C选项。)。相当于执行运算k+j /k+j*k+j,将k、j值代人运算后取整为27, S(j?+k)同理,因此答案为33. 若有定义:typedef int *T ; T *a2

26、0;则以下与上述定义中 a类型完全相同的是(分数:1.00 )A. int *a20B. int(*a)20C. int*(*a)20D. int *a20题中,答案为A解析:解析“typedef类型名新类型名”表示为一个已有定义的类型标识符重新定义一个类型名, 首先将指针类型命名为 T,再通过T定义了一个数组指针*a20,整个功能等价于int *a20 选项。34. 设有以下程序段:(分数:1.00 )A. scanf(”B. scanf(”C. scanf("D. scanf("% S",% s",% s",% s",从键盘读人字

27、符串给结构体变量rec的name成员,错误的输入语句是()。rec- > name); V rec . name);(*ptr) . name); ,ptr- > name);解析:解析题中声明了一个结构类型 person的同时,定义了 2个结构变量,一个为rec ,另一个为指针 变量ptr。A选项中,rec是一个结构体变量,结构体变量访问结构成员的力式应该为:rec 成员名,这里用法错误,答案为 A选项。I:戸越i;宰试35.有如下程序:(分数:1.00 )程序运行后的输岀结果是()。A.min =0,max= 6B.min =1,max= 20C.min =1,max= 19D

28、.min =0,max= 2136.有以下程序:(分数:1.00 )A.EOF程序运行后,在当前目录下会生成一个res . txt文件,其内容是()。V解析:解析本题首先在main函数定义一个数组 array ,然后定义了一个结构变量min_max。min_max使用函数get_min_max()的返回值进行初始化,函数get_min_max()的功能就是将数组中的最小值和最大值取 出来后分别赋值给结构变量min_max中的first 和second两个整形变量,数组长度为6个单位,初始化4个数据,剩下2个默认为0,因此答案为D选项。B. M VC. KLMD. L解析:解析for循环中,每次

29、都执行打开文件res .txt、写入文件、再关闭文件的操作,由于fopen()函数使用W模式写文件,所以每次打开res . txt后,都删除文件中原有的数据,再重新写入新数据。所以文件最终的内容只与最后一次for循环有关,最后一次for循环是向文件res . txt写入K +2,即M正确答案是B选项。37.有如下定义:(分数:1.00 )若文件已正确打开,则以下将文件内容读人数组a中的语句错误的是()。VA.B.C.D.解析:解析fread()函数用法是针类型,应该传入指针类型的值,38.有以下程序段:int m = 33,是()。(分数:1.00 )A. m = 66,B. m = 33,C

30、. m= 66,D. m= 33,n = 66n=66 n = 33 Vn = 33fread(void *buffer , int size , int n , FILE *fp),其中 buffer 为指 ai应该改为& ai,因此A选项语句错误,答案为A选项。n= 66; m= mAn; n= nAm; m= mAn; 执行上述语句后,m和n的值分别解析:解析C语言中,“A”表示按位异或,因此,把m n分别转化为二进制后,进行题中要求的运算及赋值后,m= 66, n= 33,由结果可以发现该方法其实是不使用中间变量交换两个变量的值。答案为C选程序的运行结果是()。项。39. 有以

31、下程序:(分数:1.00 )A. ABCDB. A66C68C. 65666768D. 65B67D V解析:解析#define命令定义一个函数,该函数判断一个数能否整除2,如果能,默认当前数值为字符类型的ASCII码值,否则认为当前数值为整数类型,在for循环中,调用该函数进行输岀,答案为 D选项。40. 有如下定义:struct st int x ; float y ; rec ,*px ; 若要使指针px指向rec的成员x,正确的 赋值语句是()。(分数:1.00 )A. px = (struct st*)&rec . x;VB. px = (struct st*)rec. x;

32、C. px = & rec . x;D. *px = rec . x ;解析:解析rec . x表示整型变量,强制转化为 struct st类型的指针赋给px后,px并不指向rec的x, B选项错误;& rec . x是整型变量的地址,不能直接赋给 struct st 类型的指针,C选项错误;px未初始 化,指向未知内存单元,将 rec . x(整数值)赋值给该内存单元是很危险的,并且这种方法也不能使px指向rec的成员x, px依然指向未知内存单元,D选项错误;&rec .x是rec的成员x的地址,这是整型指针, 经过强制转化后,赋值给 px,可以使px指向rec的成员x,答案为A选项。二、程序填空题(总题数:1,分数:1.00)41. 给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所 指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。例如,有10个正数:46、30、32、40、6、17、45、15、48、26,平均值为 30. 500000。移动后的输出为:46、32、40、45、48、30、6、17、15、26。请注意:部分源程序在文件在程序的下划线处填

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论