二级C语言笔试-396_第1页
二级C语言笔试-396_第2页
二级C语言笔试-396_第3页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、二级 C 语言笔试 -396( 总分: 100.00 ,做题时间: 90 分钟 )一、选择题 (总题数: 40,分数: 40.00)1. 下列描述中正确的是A)算法是指对解题方案准确而完整的描述B)算法的有穷性是指算法程序的长度是有限的C)算法是否有效与拥有的情报无关D)算法的基本特征有可行性、确定性和有穷性 (分数: 1.00 )A. VB.C.D.解析: 解析 算法是指对解题方案准确而完整的描述。算法具有 4 个特征:可行性、确定性、有穷性和拥 有足够的情报。有穷性指算法必须在有限时间内做完,即算法必须能在执行有限个步骤之后终止。当算法 拥有足够的情报时,此算法才是有效的;而当提供的情报不

2、够时,算法可能无效。2. 下列数据结构中属于非线性结构的是A)队列 B) 线性表 C) 二叉树 D) 栈(分数: 1.00 )A.B.C. VD.解析: 解析 线性结构满足两个条件:有且只有一个根结点;每个结点最多只有一个前件,也最多只有一 个后件。栈、队列、线性表都属于线性结构,而二叉树是一种非线性结构,因为除叶子结点外,每个结点 都有两个后件,不满足线性结构的条件。3.4个元素A、B、C、D依次入栈,入栈过程中允许栈顶元素出栈,假设某一时刻栈的状态是C(栈顶)、B、A(栈底),则不可能的出栈顺序是A)D 、C、B、A B) C 、B、D、AC) C 、A、D、B D) C 、D、B、A(分

3、数: 1.00 )A.B.C. VD.解析:解析栈的特点是先进后出,所以后入栈的最先出栈。在栈的状态是C(栈顶)、B、A(栈底)时,D未入栈,栈顶元素可以出栈,但A不可能比B先出栈,所以选项 C)错误。4. 下列叙述中正确的是A)顺序存储结构的存储空间一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间(分数: 1.00 )A. VB.C.D.解析:解析 顺序存储方式是把逻辑上相邻的结点存储在物理上相邻的存储单元里,结点之间的关系由存储单元

4、的邻接关系来体现。其优点是占用最少的存储空间,所以选项D)错误。顺序存储结构可以存储如二叉树这样的非线性结构,所以选项B)错误。链式存储结构也可以存储线性表,所以选项C)错误。5. 下面概念中,不属于面向对象方法的是A)对象 B) 继承 C) 类 D) 过程调用(分数: 1.00 )A.B.C.D. V解析: 解析 类是指具有共同属性、共同方法的对象的集合,所以类是对象的抽象,对象是对应类的一个实例。继承是指能够直接获得已有的性质和特征,而不必重复定义它们。所以选项A)、B)、C)属于面向对象方法,选项 D )属于面向过程方法。6. 下列选项中属于软件生命周期开发阶段任务的是A)可行性研究 B

5、) 需求分析 C) 详细设计 D) 软件维护(分数: 1.00 )A.B.C. VD.解析: 解析 软件生命周期可分为软件定义、软件开发和软件运行维护 3个阶段。软件开发期包括概要设 计、详细设计、实现和测试 4 个阶段。7. 软件设计中衡量模块独立性的度量标准是A)抽象和信息隐蔽B)局部化和封装化C)内聚性和耦合性D)激活机制和控制方法(分数: 1.00 )A.B.C. VD.解析: 解析 耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中, 各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块 之间的耦合性和提高模块内的内

6、聚性,有利于提高模块的独立性。8. 下列不属于过程设计工具中图形工具的是A) N-S B) PAD C) 程序流程图 D) PDL(分数:1.00 )A.B.C.D. V解析:解析常用的过程设计工具有图形工具 (程序流程图、N-S图、PAD图、HIPO卜表格工具(判定表)、 语言工具(PDL)。9. 下列叙述中错误的是A)数据库管理系统是数据库的核心B)数据库系统由数据库、数据库管理系统、数据库管理员3部分组成C)数据共享最好的是数据库系统阶段D)数据库中的数据独立于应用程序而不依赖于应用程序(分数:1.00 )A.B. VC.D.解析:解析数据库管理系统是数据库系统的核心,它位于用户和操作系

7、统之间,属于系统软件。数据库 系统由数据库、数据库管理系统、数据库管理员、硬件平台和软件平台5部分组成。数据库技术的发展经历了 3个阶段,人工管理、文件系统和数据库系统,数据共享最好的是数据库系统阶段,数据库中的数据 独立于应用程序而不依赖于应用程序。10. 如图所示,两个关系 R1和R2:则由关系R1和R2得到关系R3的操作是A)笛卡儿积B)连接C)交D)除(分数:1.00 )A.B. VC.D.解析:解析连接运算也称9连接,是对两个关系进行运算,其意义是从两个关系的笛卡儿积中选择满 足给定属性间一定条件的那些元组。本题关系R3为关系R1中B属性和关系R2中D属性相等连接而成。11. 以下可

8、用作C语言用户标识符的是A) void,define,WORD B) a3_b3,_123,IFC) FOR,-abc,Case D) 2a,Do,Sizeof(分数:1.00 )A.B. VC.D.解析:解析C语言规定用户标识符由字母、数字和下划线组成,且第一个字符必须是字母或下划线,可 见选项C),D)是错误的;此外,C语言不允许用户将关键字作为标识符,而选项 A)中的void正是C语言 的关键字。12. 以下叙述中错误的是A)C语言的可执行程序是由一系列机器指令构成的B)用C语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在没有安装C语言集成开

9、发环境的机器上不能运行C源程序生成的.exe文件(分数:1.00)A.B.C.D. V解析:解析C语言的可执行程序是由一系列机器指令组成的,用C语言编写的源程序必须经过编译生成二进制目标代码,再经过连接才能运行,并且可以脱离C语言集成开发环境。故答案为D)。13. 以下4个选项中,不能看作一条语句的是A) ; B) a=5,b=2.5,c=3.6;C) if(b!=5)x=2;y=6; D) return j;(分数:1.00 )A.B.C. VD.C)为两条语句解析:解析C语言规定每个语句以;(分号)结束,因此选项14.以下不能正确计算代数式值的C语言表达式是A) 1/3*sin(1/2)*

10、sin(1/2) B) sin(0.5)*sin(0.5)/3C) pow(sin(0.5),2)/3 D) 1/3.0*pow(sin(1.0/2),2)(分数:1.00 )A. VB.C.D.解析:解析本题考查的是C语言表达式。如果算术运算符“ /”中参与运算的变量都是整型变量,则“/”表示整除运算,所以“1/3 ”的值应为 0,故选项A)的表达式值为0,而事实上代数式的值并不为 0,所以 选项A)不能正确计算题目所要求的代数式。15. 若有说明:int *p ,m=5 n;,以下正确的程序段是A) p=&n ; scanf("%d",&p); B) p

11、=&n ; scanf("%d",*p)C) scanf("%d" ,&n);*p=n; D) p=&n;*p=m;(分数:1.00 )A.B.C.D. V解析:解析“&是求址运算符,“ *”是指变量说明符。选项A)、B)应改为scanf("%d" , p);选项C)中指针变量 p 未指向一确定的内存单元,不能为其赋值,并且这样做很危险,建议不使用。16. 以下程序的输出结果是main()int a=20;printf("%d,%o,%x/n",a,a,a);A) 20, 024,

12、0x14 B) 20, 24, 14C) 20, 0x14, 024 D) 20, 20, 20(分数: 1.00 )A.B. VC.D.解析: 解析 本题的考查点是不同格式的数据输出。 printf 函数对不同类型的数据用不同的格式字符,“qod”是以带符号的十进制形式输出整数(正数不输出符号);“%0以八进制无符号形式输出整数(不包括前导符0) X以十六进制无符号形式输出整数(不包括前导符Ox)。17. 下面程序的运行结果是main()int y=5,x=14; y=(x=3*y,x+6),x-1);printf("x=%d,y=%d",x,y);A) x=27,y=2

13、7 B) x=12,y=13C) x=15 , y=14 D) x=y=27(分数: 1.00 )A.B.C. VD.解析: 解析 本题考查的是逗号表达式。逗号表达式的求解步骤是先求解表达式1,然后依次求解表达式2,直到表达式N的值。整个逗号表达式的值就是最后一个表达式N的值。表达式(x=3*y , x+6)中,x=15。表达式 y=x-1=14 。18. 设变量 x 和 y 均已正确定义并赋值。以下 if 语句中,在编译时将产生错误信息的是A) if(x+); B) if(x> y&&y!=0);C) if(x> 0) x- D) if(y < 0);els

14、e y+ ; else x+;分数: 1.00 )A.B.C. VD.解析:解析本题考查的是if语句。if是C语言关键字,表达式两侧的圆括号不可少,最后是一条语句 或是用花括号括起来的一组语句。选项A)和B)是在表达式后跟了一条空语句,选项D)是在表达式后跟了一组空语句,选项 C)中x-是表达式而不是语句,所以在编译时会出现错误信息,在x-后面加上“;”号就对了。19. 请阅读以下程序:#include < stdio.h >main()int x=1,y=0,a=0,b=0;switch(x)case 1 :switch(y)case 0:a+ ; break;case 2 :a

15、+, b+; break ; printf("a=%d,b=%d/n",a,b);上面程序运行后的输出结果是A) a=2,b=1 B) a=2,b=1 C) a=1,b=0 D) a=2,b=2(分数: 1.00 )A. VB.C.D.解析: 解析 考查 switch 语句的使用, switch 语句的执行过程为:进入 switch 结构后,对条件表达式 进行运算,然后从上至下去寻找与条件表达式值相匹配的case,以此作为入口,执行 switch结构中后面的各语句,直到遇到 break 语句,则跳出 switch 语句,如果各 case 都不匹配时,则执行 default

16、后面的 语句。20. 以下叙述中正确的是A) 调用 printf 函数时,必须要有输出项B) 使用 putchar 函数时,必须在之前包含头文件 stdio.hC) 在C语言中,整数可以用十二进制、八进制或十六进制的形式输出D) 调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCH码(分数: 1.00 )A.B. VC.D.解析: 解析 本题考查的是标准输入输出函数。在使用标准输入输出库函数 ( 除了 printf 和 scanf) 前, 必须要用预编译命令“ #include ”将头文件“ stdio.h ”包括到用户源文件中。调用 printf 函数时可以没 有输出项,比

17、如printf("") 是允许的。C语言中整数的输出形式没有十二进制的形式。getchar函数读人字符时可以得到第一个输入字符的 ASCH码,无法通过输入相应字符的 ASCH得到该字符。21. 有以下语句: char b8 ; int c ;,则正确的输入语句是A) scanf("%s%d" , &b,&c); B) scanf("%s%d",&b,c);C) scanf("%s%d",b,c); D) scanf("%s%d",b,&c);(分数: 1.00 )

18、A.B.C.D. V解析:解析scanf函数常用的格式控制中“ s”代表输入的是字符串,“ d”代表输入带符号的十进制整 型数,根据语句 char b8 ;int c ;可确定正确的输入语句是选项D)。22. 有以下程序:#include < stdio.h >main()int a=1,2,3,4,y,*p=&a3;-p; y=*p;printf("y=%d/n",y);程序的运行结果是A) y=0 B) y=1 C) y=2 D) y=3(分数: 1.00 )A.B.C.D. V解析: 解析 在程序中指针变量 p 初始指向 a3 ,执行 p 减 1

19、后, p 指向 a2 ,语句 y=*p 的作用是把 a2 的值赋给变量y,所以输出为y=3。23. 若有以下说明和语句,对 c 数组元素正确引用是int c45, (*cp)5;cp=c;A) cp+1 B) *(cp+3) C) *(cp+1)+3 D) *(*cp+2)(分数: 1.00 )A.B.C.D. V解析: 解析 本题的考查点是数组元素的引用。 cp=c 这个语句是将数组 c 的首行元素地址赋给了指针数组cp。选项A), cp+1是指将数组c的首行地址加1,即为第2行地址;选项B), *(cp+3)是地址,等于数 组c的首地址加3的那个内存单元的内容,不是对数组元素的引用;选项

20、C), *(cp+1) +3是地址,等于数 组c的首地址加1的那个内存单元中存放的值加 3,不是对数组元素的引用。24. 有以下程序:#include < string.h >main()char p20='a','b','c','d',q="abc",r="abcde";strcat(p,r);strcpy(p+strlen(q),q);printf("%d/n",strlen(p);程序运行后的输出结果是A) 9 B) 6 C) 11 D) 7分数: 1.

21、00 )A.B. VC.D.解析: 解析 本题考查的是用于字符串处理的函数。题目中首先通过 strcat(p , r) 将 r 所指字符串的内 容连接到 p 所指的字符串后面, p20='a','b','c','d','a','b','c','d','e'。然后通过 p+strlen(q)在数组元素 p0 地址的基础上向后移动 3 位,再将 q 所指字符串的内容复制到 p 所指的存储空间中,从字 符“d”往后全部覆盖,p20='a',

22、'b' , 'c' , 'a' , 'b' , 'c'。在输出语句中strlen(p)是求字符串的长度,值为 6。25. 以下程序段中的变量已正确定义:for(i=0 ; i v 4 ; i+ , i+)for(k=1;k v 3;k+);printf("*");程序段的输出结果是A)*B)C)*D)(分数: 1.00 )A.B.C.D. V解析: 解析 本题考察 for 循环语句,注意第二个 for 语句的后面有一个分号,即 printf 函数不属于循 环体,无论循环执行多少次, printf

23、( “*” )语句只执行一次。因此,本题的正确答案为D)。26. 以下程序运行后的输出结果是main()char ch="uvwxyz" , *pc;pc=ch;printf("%c/n" , *(pc+5);A) z B) 0 C) 元素 ch5 地址 D) 字符 y 的地址(分数: 1.00 )A. VB.C.D.解析:解析表达式*(pc+5)先将指针向后移动5个存储单元,指向ch5,再取出其中的值。其值为字 符 z 。27. 有以下程序:#include v stdio.h >void fun(char *p)+p;printf("

24、%s/n", *p) ;main()char *a="Morning","Afternoon","Evening","Night"fun(a) ;程序运行后的输出结果是:A) Afternoon B) fternoon C) Morning D) orning(分数: 1.00 )A. VB.C.D.解析: 解析 语句 void fun(char *p) 中的形参是一个指向指针的指针,在调用函数 fun(a) 后,指针数 组a加1,则指向了数组的第 2个字符串“ Aftemoon”的'a'

25、的地址。28. 以下程序运行后的输出结果是void f(int n,int *r)int r1=0;if(n%3=0) r1=n/3;else if(n%5=0) r1=n/5;else f(-n, &r1) ;*r=r1 ;main()int m=7,r;f(m , &r) ;printf("%d/n",r) ;A) 2 B) 1 C) 3 D) 0(分数: 1.00 )A. VB.C.D.解析:解析参数r的传递是地址传递,函数调用会改变其值。函数f的功能是:判断n是否为3或5的倍数,如果是,则将指针r所指的内存空间赋值为n除以3或5的商;否则n递减,直到

26、它可以被 3或5整除。初始时调用函数f(7,&r) ;n=7,执行else子句,调用f(6,&r1);后n=6,执行语句if(n%3=0) r1=n/3 ;, 此后执行语句 *r=r1 ;。所以 r=6/3=2 。29. 有以下程序:main() int a32=0,(*ptr)2,i,j; for(i=0 ; i v 2 ; i+) ptr=a+i; scanf("%d",ptr);ptr+; for(i=0 ; i < 3 ; i+)for(j=0;j v 2;j+) printf("%2d",aij);printf("

27、;/n") ;若运行时输入:1 23 v回车,则输出结果是A) 编译错误2 00 0B) 1 02 00 0C) 1 22 03 0D) 1 0(分数: 1.00 )A.B. VC.D.解析: 解析 首先二维数组 a 中的元素都初始化为 0,其次定义了指向数组的指针 ptr ,并且依次将 ptr 指向二维数组 a 中的各行, 循环语句 for(i=0 ; i v 2; i+) 等价于: scanf("%d" , a+0) ; scanf("%d" , a+1) ; 其中 a+i 即是数组 ai 的首地址,也是元素 ai0 的地址,故以上语句读入

28、两个整数,分别存入二维数 组 a 的第 1 列中,在输入 1 2 3 后,a=1 , 0 , 2 , 0 , 0 , 0。30. 有以下程序:#include v stdio.h >void fun(char *s)while(*s)if(*s%2=0)printf("%c", *s) ;s+;main()char a="good" ;fun(a) ; printf("/n") ;注意:字母a的ASQ码值为97,程序运行后的输出结果是A) d B) go C) god D) good(分数: 1.00 )A. VB.C.D.解析

29、:解析fun函数的功能是输出字符串中ASQ码能被2整除的字符,g的ASQ码为103,0的ASQ码为111,d的ASCI码为100,只有d满足。因此,本题答案为A)。31. 有以下程序:main()int i,s=0,t=1,2,3,4,5,6,7,8,9;for(i=0;1 v 9;i+=2) s+=*(t+i);printf("%d/n",s);程序执行后的输出结果是A) 45 B) 20 C) 25 D) 36(分数: 1.00 )A.B.C. VD.解析:解析统计19九个数中的奇数和,此题重点考查指向数组的指针。C语言规定数组名代表数组的首地址,也就是第一个元素的地址

30、。因此 *(t+i) 代表数组的第 i+1 个元素。程序运行后的结果是 1+3+5+7+9=25。32. 当用“#define F 37.5f”定义后,下列叙述正确的是A) F 是 fl0at 型数 B) F 是 char 型数C) F 无类型 D) F 是字符串(分数: 1.00 )A.B.C.D. V解析: 解析 字符替换定义格式为: #define 标识符 ( 形参表 ) 形参表达式。本题中 F 是代表形参表达式的 标识符 ( 字符串 ) 。33. 有以下程序 (函数 fun 只对下标为偶数的元素进行操作 ):#include v stdio.h >v0id fun (int *a

31、,int n)int i,j ,k,t;f0r(i=0;i v n-1 ;i+=2)k=i;f0r(j=i;j v n;j+=2) if(aj > ak) k=j;t=ai;ai=ak;ak=t;main()int aa10=1,2,3,4,5,6,7,i;fun(aa,7) ;f0r(i=0;i v 7;i+) printf("%d,",aai);printf("/n") ;程序运行后的输出结果是A) 7,2,5,4,3,6,1, B) 1,6,3,4,5,2,7,C) 7,6,5,4,3,2,l, D) 1,7,3,5,6,2,1,(分数: 1

32、.00 )A. VB.C.D.解析:解析由函数fun(int *a , int n)中语句if(aj >ak)k=j;可知当前k是记录数组中较大数据值所在位置的下标变量,所以该函数的作用是对数组 a 中的下标为偶数位置的数据进行从大到小的排序, 即对 a0 , a2 , a4 , a6 中的数据 1, 3, 5, 7 进行从大到小的排序,其他位置的数据不变,所以答 案为 A)。34. 阅读下列程序,则运行结果为#include "stdio.h"fun()static int x=3;x+;return x ;main() int i,x;for(i=0 ; i v

33、3 ; i+) x=fun(); printf("%d/n" , x) ; A) 3 B) 4 C) 5 D) 6(分数: 1.00 )A.B.C.D. V解析: 解析 在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久的存储单元,即使退 出函数以后,下次再进入该函数时,静态局部变量仍使用原来的存储单元,静态局部变量的初值是在编译 的时候赋予的,在程序执行期间不再赋予初值。本题由于连续3次调用函数fun() ,3次对静态变量x进行操作, x 的值应依次为 4, 5, 6。35. 下列程序的输出结果是#include "stdio.h"#def

34、ine N 3 #define M 3 void fun(int aMN) printf("%d/n" , *(a1+2);main()int aMN;int i , j ;for(i=0 ; i v M; i+)for(j=0 ; j v N; j+) aij=i+j-(i-j);fun(a) ;A) 3 B) 4 C) 5 D) 6(分数: 1.00 )A.B. VC.D.解析:解析若有以下定义:int a3 4, i , j ;,且Owi < 3, 0<j < 4,则可以有以下几种方式来引用数组中的第 i 行,第 j 列的元素:aij, *(ai+j

35、), *(*(a+i)+j),(*(a+i)j, *(&aOO+4*i+j)。赋值语句完成后数组中数据如下:O 2 4O 2 4O 2 4因为 fun() 函数打印的是第 1行第 2列的数据,所以为 4。36. 有以下程序段:typedef struct NODEint num; struct NODE *next;OLD;以下叙述中正确的是A) 以上的说明形式非法 B) NODE 是一个结构体类型C) OLD 是一个结构体类型 D) OLD 是一个结构体变量(分数: 1.OO )A.B.C. VD.解析: 解析 本题考查的是结构体的定义。 typedef 关键字用于声明一个新的类型名

36、代替已有的类型名。 本题中如果没有用 typedef 进行定义,则 struct NODE 为结构体类型,现在用 typedef 定义后,相当于用 OLD弋表了 struct NODE这一结构体类型,故 OLD为结构体类型。37. 有以下程序:struct Sint n;int a2O;void f(int *a, int n)int i ;for(i=0;i v n-1;i+)ai+=i;main()int i;struct S s=10,12,3,1,6,8,7,5,4 ,10,9;f(s a, sn) ;for(i=0;i v s.n;i+)printf("%d,",

37、s.ai);程序运行后的输出结果是A) 2,4,3,9,12,12,11,11,18,9, B) 3,4,2,7,9,8,6,5,11,10,C) 2,3,1,6,8,7,5,4,10,9, D) 1,2,3,6,8,7,5,4,10,9,(分数: 1.00 )A. VB.C.D.解析: 解析 本题考查的是结构体成员的引用。在主函数 main() 中定义了一个整型变量 i 和一个结构体 变量s。f()函数中,通过指针 a来引用数组中的元素;通过 for循环语句将数组中除最后一个元素外的其 他元素(由条件i v n-1决定的)分别加上由0开始的递增数据(即0、1、28),所以最后的输出结果为2,

38、4, 3, 9, 12, 12, 11 , 11 , 18, 9,。38. 下列选项中,能够满足“若字符串si等于字符串S2,则执行ST要求的是A) if(strcmp(s2,s1)=0) ST; B) if(s1=s2) ST;C) if(strcpy(s1,s2)=1) ST; D) if(s1-s2=0) ST;(分数: 1.00 )A. VB.C.D.解析:解析函数strcmp(s2 , si)的作用是比较字符串的大小,函数strcpy(s1 , s2)的作用是进行字符串复制,所以选择选项 A)。B)和D)都是比较字符串si与s2的地址是否一致而不是比较字符串内容是否一 致。39. 有

39、以下程序:struct STUchar namei0;int num; float TotalScore;void f(struct STU *p)struct STU s2="SunDan",20044 ,550,"Penghua",20045 ,537, *q=s;+p; +q; *p=*q ;main()struct STU s3="YangSan",2004i,703,"LiSiGuo",20042,580;f(s) ;printf("%s %d %3.0f/n",,si.

40、num,si.TotalScore);程序运行后的输出结果是A) SunDan 20044 550 B) Penghua 20045 537C) LiSiGuo 20042 580 D) SunDan 2004i 703(分数: i.00 )A.B. VC.D.解析:解析本题考查的是结构体。本程序将结构体数组s的首地址传递给了结构体指针变量 p,并在函数f中改变了指针变量p所指向的第2个结构体中的成员变量,这一改变,也就是改变了主函数中s1的成员变量,故程序输出的值为 Penghua 20045 537 。40. 下面程序段的输出为#include "stdio.h"mai

41、n()printf("%d/n",i2 vv 2);A) 0 B) 47 C) 48 D) 24(分数: 1.00 )A.B.C. VD.解析:解析本题考查位运算的运算原理。VV为左移运算符,运算符的左边是移位对象;右边是整型表 达式,代表左移的位数,左移时,右端 ( 低位) 补 0;左端 (高位 )移出的部分舍弃。二、填空题 (总题数: 15,分数: 60.00)41. 某二叉树有 6 个度为 2 的结点以及 4 个度为 1的结点,则该二叉树中共有 1 个结点。(分数: 4.00 )填空项 1: (正确答案: 17)解析: 解析 由二叉树的定义可知,在二叉树中,度为 0

42、的结点数是度为 2 的结点数加 1,故二叉树中结 点数的总和为度为 0 的结点数、度为 1 的结点数及度为 2的结点数 3 者相加,得出结果为 17个结点。42. 设某循环队列的容量为 60,头指针 front=10( 指向队头元素的前一位置 ) ,尾指针 rear=29( 指向队尾元 素) ,则该循环队列中共有 1 个元素。(分数: 4.00 )填空项 1: (正确答案: 19)解析:解析当front < rear时,循环队列中元素的个数为rear-front ,当front > rear,循环队列中元素的个数为N(N为循环队列容量)-front+rear。此题中front=10

43、 > rear=29,因此该循环队列中共有29-10=19 个元素。43. 若按功能划分,软件测试的方法通常分为白盒测试法和 1 测试法。(分数: 4.00 )填空项 1: (正确答案:黑盒)解析: 解析 按照功能划分,软件测试分为白盒测试和黑盒测试。白盒测试又称为结构测试或逻辑驱动测 试,主要有逻辑覆盖和基本路径测试等;黑盒测试方法又称功能测试或数据驱动测试,主要有等价类划分 法、边界值分析法、错误推测法等。44. 一个工人可管理多个设备,而一个设备只被一个工人管理,则实体“工人”与实体“设备”之间存在1的关系。(分数: 4.00 )填空项 1: (正确答案:一对多或 1:n )解析:

44、 解析 实体间的联系有一对一、一对多、多对多 3 种。本题中一个工人可以管理多个设备,一个设 备只被一个工人管理,所以是一对多的关系。45. 数据库设计分为 6 个设计阶段:需求分析阶段、 1、逻辑设计阶段、物理设计阶段、实施阶段、运行和 维护阶段。(分数: 4.00 )填空项 1: (正确答案:概念设计阶段) 解析: 解析 数据库设计分为 6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶 段、实施阶段及数据库运行和维护阶段。46. 设变量已正确定义为整型,则表达式n=i=12 , +i , i+ 的值为 1 。(分数: 4.00 )填空项 1: (正确答案: 13)解析:解

45、析本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗 号分隔的各表达式的值,整个逗号表达式的值等于其中的最后一个表达式的值。本题中,首先i 被赋值为12,再自加 1,最后 i+ 的值计算为 13。47. 以下程序运行后的输出结果是 。main()int a=3,b=4,c=5,t=99;if(b < a&&a< c)t=a;a=c;c=t;if(a < c&&b< c)t=b;b=a;a=t;printf("%d %d %d/n",a,b,c);(分数: 4.00 )填空项 1: (正确答

46、案: 4 5 99 )解析:解析本题考查的是条件判断语句。本题需特别注意的是“;”的问题,不能把“ t=a ; a=c; c=t ; ”误认为是第一个if的语句,实际上,只有“ t=a ; ”才是第一个if的语句。所以判断第一个if语句的表达式不成立后,执行的是“ a=c;c=t;”,此时a=5,c=99。然后判断第2个if语句的条件表达式,表达式成立,执行后面的 3 个语句,让 a, b 的值进行交换,最后输出a、b、c 分别为 4、5 和 99。48. 以下程序的输出结果是 。#include < string.h >main()printf("%d/n"

47、,strlen("IBM/n012/1/");(分数: 4.00 )填空项 1: (正确答案: 9)解析: 解析 本题考查的是字符串长度。本题中的字符是: 'I' 、'B' 、'M' 、'/n' 、'0' 、'1' 、'2' 、'/1' 、 '/' 和最后一个字符串结束标记 '/0' ,由于 strlen() 求的是字符串的实际长度,不包括 '/0' ,所以字符串 长度为 9。49. 以下程序的输出结

48、果是 。#include< stdio.h >#include< string.h>char* fun( char *t)char *p=t;return(p+strlen(t)/2);main()char *str="abcdefgh"str=fun(str) ;puts(str) ;(分数: 4.00 )填空项 1: (正确答案: efgh )解析: 解析 程序从 main 函数开始执行, 首先执行的函数是 str=fun(str) ;,由程序可知 str="abcdefgh" , 传递到 char *t, char*p=t

49、;指向 char 的指针 p 包含的是 t 的首地址 str0 ,由 p+strlen(t)/2 ;可知 t的长度是 8 除以 2 等于 4,因此 p+strlen(t)/2 就是 str4 即 e 字符那个位置,输出结果为 efgh 。50. 以下程序的输出结果是 。#include < stdio.h >main()int i ;for(i='a'i < 'f'i+,i+)printf("%c",i-'a'+'A');printf("/n") ;(分数: 4.00 )填

50、空项 1: (正确答案: ACE)解析: 解析 在本题中, for 循环体每执行完一次,变量 i 的值自加两次。 i 的初值为 'a' ,执行一次循环 后变为 'c' ,之后再变成 'e' ,当其变为 'g' 时,循环条件若不满足,循环终止,故本题共输出 3 个字符。表 达式“i -'a'+'A' ”即表示输出i对应的大写字母,结果为 ACE51. 以下程序的功能是: 删去一维数组中所有相同的数, 使之只剩一个。 数组中的数已按由小到大的顺序排 列,函数返回删除后数组中数据的个数。例如,若一维数组中

51、的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10请填空。#include < stdio.h >#define N 80int fun(int a, int n)int i,j=1;for(i=1 ;i < n;i+)if(aj-1!=ai)aj+=ai;main()int aN=2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,i,n=19;printf("The original data:/n");for(i=0;i <n;i+) printf("%3d",ai);n=fun(a,n) ;printf("/nThe data after deleted: /n");for(i=0;i < n;i+)printf("%3d",ai);printf("/n/n");分数: 4.00 )解析: 解析 本题程序的流程是:让i,j 都从 1

温馨提示

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

评论

0/150

提交评论