二级C语言2套选择题的副本_第1页
二级C语言2套选择题的副本_第2页
二级C语言2套选择题的副本_第3页
二级C语言2套选择题的副本_第4页
二级C语言2套选择题的副本_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、(1)算法空间复杂度的度量方法是A)算法程序的长度B)算法所处理的数据量C)执行算法所需要的工作单元D)执行算法所需要的存储空间答案:D【解析】算法的空间复杂度是指执行这个算法所需要的内存空间,。算法执行期间所需的存储空间包括3个部分:输入数据所占的存储空间;程序本身所占的存储空间;算法执行过程中所需要的额外空间。D选项正确。(2)下列叙述中正确的是A)循环队列属于队列的链式存储结构B)双向链表是二叉树的链式存储结构C)非线性结构只能采用链式存储结构D)有的非线性结构也可以采用顺序存储结构答案:D【解析】循环队列是队列的一种顺序存储结构,A 选项错误。双向链表为顺序存储结构,二叉树通常采用链式

2、存储结构,B 选项错误。完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式,C 选项错误,D 选项正确。(3)下列叙述中正确的是()。A) 顺序存储结构的存储一定是连续的, 链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间答案:A【解析】 链式存储结构既可以针对线性结构也可以针对非线性结构, 所以 B)与 C)错误。链式存储结构中每个结点都由数据域与指针域两部分组成, 增加了存储空间,所以 D)错误。(4)下列关于栈的叙述中,正确的是A)栈底

3、元素一定是最后入栈的元素B)栈顶元素一定是最先入栈的元素C)栈操作遵循先进后出的原则D)以上说法均错误答案:C【解析】栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或“后进先出表,所以选择 G(5)在软件设计中不使用的工具是()。A)系统结构图B)PAD图C)数据流图(DFD图)D)程序流程图答案:C【解析】系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。PAt是在详细设计

4、阶段用到的。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择 C)。(6)下面对类-对象主要特征描述正确的是()。A)对象唯一性 B)对象无关性 C)类的单一性 D)类的依赖性答案:A【解析】对象的基本特点是:标识唯一性、分类性、多态性、封装性、模块独立性好。类是具有共同属性、共同方法的对象的集合,是关于对象的抽象描述,反映属于该对象类型的所有对象的性质。对象具有的性质,类也具有。故 A 选项

5、正确(7)在软件开发中,需求分析阶段产生的主要文档是()。A)可行性分析报告B)软件需求规格说明书C)概要设计说明书D)集成测试计划答案:B【解析】A)错误,可行性分析阶段产生可行性分析报告。体设计阶段产生的文档。D)错误,集成测试计划是在概要设计阶段编写的文档。B)正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。(8)下面对软件测试描述错误的是()A)严格执行测试计划,排除测试的随意性B)随机地选取测试数据C)测试根本目的是尽可能多地发现并排除软件中隐藏的错误D)软件测试是保证软件质量的重要手段答案:B【解析】在测试之前制定测试计划,并严格执行,测试用例的选择不可随意,应选择

6、有代表性的,尽可能发现迄今为止尚未发现的错误,A 选项叙述正确,E 选项叙述错误。测试根本目的是尽可能多地发现并排除软件中隐藏的错误,C 选项叙述正确。软件测试是保证软件质量、可靠性的关键步骤,D 选项叙述正确。故正确答案为斑项。(9)在数据库系统中,用于对客观世界中复杂事物的结构及它们之间的联系进行描述的是A)概念数据模型B)逻辑数据模型C)物理数据模型D)关系数据模型答案:A【解析】数据模型按照不同的应用层次分为以下 3 种类型:概念数据模型,C)错误,概要设计说明书是总着重于对客观世界复杂事物的描述及对它们内在联系的刻画; 逻辑数据模型,是面向数据库系统的模型, 着重于在数据库系统一级的

7、实现; 物理数据模型,是面向计算机物理实现的模型,此模型给出了数据模型在计算机上物理结构的表示。A 选项正确。(10)公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是A)1:1联系B)m:1联系C)1:mK系D)m:n联系答案:C【解析】两个实体集间的联系实际上是实体集间的函数关系,主要有一对一联系(1:1)、一对多联系(1:m)、多对一联系(m:1)、多对多联系(m:n)。对于每一个实体部门,都有多名职员,则其对应的联系为一对多联系(1:m),答案选 C。(11)关于程序中的注释,以下叙述正确的是()OA)注释的内容必须放在一对/*和*

8、/之间B)注释必须置于所说明的语句前或语句后C)注释中间可以嵌套另一个注释D)注释内容错误会导致编译出错答案:A【解析】程序中,注释可以出现在程序的任何位置,B 选项错误;注释中间不能嵌套另一个注释,C 选项错误;注释内容不影响程序编译,D 选项错误,答案为 A项。(12)有以下程序#includemain()intk=-17;printf(%d,%o,%xn”,k,1-k,1-k);程序的运行结果是()oA)-17,22,12B)-17,12,22C)-17,-22,-12D)17,22,12答案:A【解析】整型常量有 3 种表示方法,分别是十进制数表示法、八进制数表示法和十六进制数表示法。

9、十进制整常量没有前缀,输出格式控制符为d八进制整常量以 0 作为前缀,输出格式控制符为O 十六进制整常量以 0X 或 0 x 作为前缀,输出格式控制符为%1-k=18,整型常量 18 用八进制表示为 22,十六进制表示为 12,A 选项正确。(13)以下定义语句中正确的是()。A)inta=b=0;B)charA=65+1,b=b;C)floata=1,*b=&a,*c=&b;D)doublea=0.0;b=1.1;答案:B【解析】 A 选项语句中 b 变量还没有定义不能直接用于给 a 变量赋值?佻项语句中*b?*c 表示的是一个实型变量的地址,不能再将&b 武值给指针

10、型变量c?D4 项语句中 a=0.0 后面应该为逗号,不能是分号?(14)有以下程序:#includemain()ints,t,A=10;doubleB=6;s=sizeof(A);t=sizeof(B);printf(%d,%dn,s,t);)在VC6.0平台上编译运行,程序运行后的输出结果是()。A)10,6B)4,4C)2,4D)4,8答案:D【解析】C 语言中利用 sizeof()函数判断数据类型长度,在 VC6.0 平台中,整型 int 占有 4 个字节,double 型数据占有 8 个字节。(15)表达式:(int)(double)9/2)-9%2的值是()。A)0B)3C)4D)

11、5答案:B【解析】先将整型数据 9 强制转换成 double 型,然后除以 2 得到的结果与double 型保持一致,即为 4.5,然后将 4.5 强制转换成整型数据 4,然后计算9%的值为 1,最后计算 4-1 的值为 3,所以选择 E 选项?(16)设有定义:intx=11,y=12,z=0;,以下表达式值不等于12的是()。A)(z,x,y)B)(z=x,y)C)z=(x,y)D)z=(x=y)答案:D【解析】逗号表达式的计算过程是从左到右逐个求每个表达式的值,取最右边一个表达式的值作为该逗号表达式的值。赋值运算结合性为由右向左结合,赋值运算符左值为变量,右值为变量或常量,且左右两边数据

12、类型相同才能实现赋值。成功实现赋值后以左值为返回值。 逻辑表达式成立则返回 1,不成立返回0oA 选项逻辑表达式 x=y 不成立,则 z=0,表达式值为0oB 选项中逗号表达式 x,y 取 y 值为表达式值, 然后赋值给 z=12,表达式值为 12。C 选项逗号表达式(x,y)取 y 值为表达式值,然后赋值给 z=12,表达式值为12。D 选项逗号表达式(z,x,y)取 y 值为表达式值 12。选择 D 选项。(17)若有定义:inta=0,b=0,c=0,d=0;,有丽言表达式(a+&b+)?c+:d+,以下关于其执行顺序的叙述正确是()oA)先执行a+,表达式a+的值为0,由此即可

13、确定(a+&b+)的值为0,因此执行d+B)先执行a+,表达式a+的值为0;再执行b+,表达式b+的值为0,由此可确定(a+&b+)值为0,因此执行d+C)先执行a+,表确定(a+&b+)值为1,因此执行C+达式a+的值为1;再执行b+,表达式b+的值为1,由此可D)先执行b+,表达式b+的值为1;再执行a+,表达式a+的值为1,由此可确定(a+&b+)值为1,因此执行C+答案:A【解析】表达式 1?表达式 2:表达式 3,若表达式 1 为真,则执行表达式 2,否则执行表达式 3。逻辑与运算符遵循短路求值”策略,即只有在仅靠左操作数的值无法确定该逻辑表达式的结果

14、时,才会求解右操作数,表达式(a+&b+)中,左操作数 a+的值为 0,已经可以确定整个逻辑表达式的结果为 0,因此右操作数 b+不再求解,直接执行表达式3,即 d+,答案为 A 选项(18)有以下程序:#includemain()unsignedchara=2,b=4,c=5,d;d=a|b;d&=c;printf(%dn,d);程序运行后的输出结果是()。A)3B)4C)5D)6答案:B【解析】&按位与,如果两个相应的二进制位都为 1,则该位的结果值为 1,否则为 0。|按位或,两个相应的二进制位中只要有一个为 1,该位的结果值为 1。2 的二进制为00000010

15、,4 的二进制为 00000100,所以做或运算结果为 00000110,该数与 5即 00000101 做与操作结果为 00000100,即 4(19)有以下程序#includemain()charc;c=getchar();doputchar(c+);while(c=getchar()!=#);程序运行时从第一列开始输入:abcdefg#,则输出结果是()。A)bcdefgh$B)bcdefghC)abcdefg#D)abcdefg答案:D【解析】运算符+”放在变量后面时,先参与其他操作,再对变量+1。putchar(c+)表示先输出当前c值, 再对c值+1,当输入abcdef#时, 在w

16、hile语句中,程序输入#,循环退出。因此输出为 abcdefg,答案为 D1 项。(20)若有定义:charc;intd;,程序运行时输入:1,2回车,能把值1输入给变量c、值2输入给变量d的输入语句是A)scanf(%c,%d,&c,&d);B)scanf(%c%d,&c,&d);C)scanf(%d,%f,&c,&d);D)scanf(%d%d,&c,&d);答案:A【解析】scanf 函数的调用格式为:scanf(格式控制串,地址列表);,格式控制串,由%开头,后跟格式字符,如 c 对应字符型变量,d 对应整型变量。地址表

17、列需要读入的是所有变量的地址或字符串的首地址。如果除了格式说明字符和附加格式字符外,如果还有其他字符,则在输入数据时要求按一一对应的位置原样输入这些字符,比如两个格式说明之间有一个逗号,则从键盘输入时输入量之间也应照原样输入逗号。A 选项正确。(21)有以下程序#includemain()inta=1,b=2,c=3,d=0;if(a=1&b+=2)if(b!=2|c-!=3)printf(%d,%d,%dn,a,b,c);elseprintf(%d,%d,%dn,a,b,c);elseprintf(%d,%d,%dn,a,b,c);程序运行后的输出结果是()。A)1,3,2B)1,3

18、,3C)1,2,3D)3,2,1答案:B【解析】else 总是和最近的 if 配对,所以进入第一个 if 语句中条件判断时,因为是逻辑与操作需要两边运算对象的值均为非零值,才为真,所以需要逐个执行判断的结果为 1,不再执行第二个 case 语句中的操作?而是进入第二个 if 语句条件判断,因为b!=2 条件成立所以整个条件表达式的值为真, 所以不再执行逻辑或的第二个运算对象(c-!=3)c 的值不变,也不再执行第一个 else 语句?打印 a 的值 1,b 的值 3,c 的值 3?(22)有以下程序#includemain()ints;scanf(%d,&s);while(s0)swi

19、tch(s)case1:printf(%d,s+5);case 2:printf(%d,s+4);break;case 3:printf(%d,s+3);default:printf(%d,s+1);break;scanf(%d,&s);运行时,若输入123450,则输出结果是()。A)66656B)6566456C)66666D)6666656答案:B【解析】switch 语句的执行流程是:首先计算 sw 让 ch 后面圆括号中表达式的值, 然后用此值依次与各个 case 的常量表达式比较, 若圆括号中表达式的值与某个 case 后面的常量表达式的值相等,就执行此 case 后面的语

20、句,执行后遇 break 语句就退出switch 语句; 若圆括号中表达式的值与所有 case 后面的常量表达式都不等,则执行 default 后面的语句?然后退出?所以输入 1 时打印 65,输入 2 时打印 6,输入 3 时打印 64,输入 4 时打印 5,输入 5 时打印 6?(23)设有以下代码dowhile(条件表达式1)循环体A;while(条件表达式2);while(条件表达式1)do循环体B;while(条件表达式2);其中,循环体A与循环体济目同,以下叙述正确的是()。A)循环体A与循环体B的执行次数相同B)循环体A比循环体B的执行次数多一次C)循环体A比循环体B的执行次数少

21、一次D)循环体A与循环体B的执行次数不确定答案:A【解析】while 循环语句一般形式为:while(表达式)循环体,执行过程为:首先判断表达式,成立(非 0)则执行循环体,不成立(0)则退出循环。do-while 循环语句一般形式为:do循环体while(表达式),执行过程为:首先执行循环体,之后判断表达式,成立(非 0)则再一次执行循环体,不成立 (0) 则退出循环。 假设表达式1与表达式2成立次数为n1与n2。 若 n1n2,则循环体儆行次数为 n2+1,瞅行次数 n2+1;若 n1n2,则循环体 A 执行次数为n1,B 执行次数 n1,A 选项正确。(24)有以下程序#includem

22、ain()inta=0,b=0;for(;a5;a+)if(a%2=0)continue;b+=a;break;printf(%dn,b);程序运行后的输出结果是()OA)1B)4C)0D)10答案:A【解析】for 语句中,当 a=0 时,满足 for 循环中 if 语句的条件,执行continue 继续下一次循环,a+1 后再进入 for 语句循环,此时 a=1 不满足 if语句,执行 b=b+a 为 1,接着执行 break 语句,终止循环,最后输出 b=1,故答案为 Ai4 项。(25)有以下程序#includemain()inti=5;doif(i%3=1)if(i%5=2)prin

23、tf(*%d,i);break;i+;while(i!=0);printf(n);程序的运行结果是A)*2*6B)*3*5C)*5D)*7答案:D【解析】do.while 语句是先执行后判断,所以第一次先执行循环体,判断 i%3=1 的条件,由于 i 为 5 所以余数为 2,条件不成立,执行 i+,i 的值为 6,判断 while条件为真,第二次执行循环体,同第一次循环体的执行过程一样,i 的值变为7,判断 while 条件为真,第三次执行循环体,此时 i%3=1 条件成立,判断 i%5=2 也成立,打印*与 i 的值,即*7,然后执行 break 语句,跳出循环?所以选择 C项?(26)有以

24、下程序#includemain()intc6=10,20,30,40,50,60,*p,*s;p=c;s=&c5;printf(%dn,s-p);程序运行后的输出结果是()。A)5B)50C)6D)60答案:A【解析】首先初始化一维数组 c6,语句 p=c;指将 c0元素的地址赋给指针变量 p;语句 s=&c5;指将 c5元素的地址赋给指针变量 s。程序最后输出 s-p,即结果为 5 因此 A 选项正确。(27)有以下程序#includevoidfun(inta,intn,intflag)inti=0,j,t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if

25、(flag)if(aiaj)t=ai;ai=aj;aj=t;main()intc10=7,9,10,8,3,5,1,6,2,4,i;fun(c,4,1);fun(c+4,6,0);for(i=0;i10;i+)printf(%d,ci);printf(n);程序运行后的输出结果是()。A)7,8,9,10,6,5,4,3,2,1B)10,9,8,7,6,5,4,3,2,1C)10,9,8,7,1,2,3,4,5,6,D)1,2,3,4,5,6,7,8,9,10,答案:C【解析】fun()函数作用冒泡法排序,flag 控制升序(0)或者降序(1)。n 为参与排序的个数。a 为数组的起始地址。因此

26、,fun(a,4,1),数组的前四个降序排序,fun(a+4,6,0)从数组的第四项,后六个升序排序。故结果为 10,9,8,7,1,2,3,4,5,6。答案为 C 选项(28)下列选项中,能正确定义数组的语句是()。A)intnum0.2008;B)intnum;C)intN=2008;intnumN;D)#defineN2008intnumN;答案:D【解析】C 语言不允许定义动态数组,定义数组的大小必须为常量表达式。A 选项错误,C 语言中数组没有此类型的定义方法; B 选项错误, 定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;C 选项错误,N 为变量,不能用来定义数组

27、大小。因此 D 选项正确。(29)有以下程序#includemain()inta44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1;inti,j,k,t;for(i=0;i4;i+)for(j=0;j3;j+)for(k=j+1;kaki)t=aji;aji=aki;aki=t;/*按列排序*/for(i=0;i4;i+)printf(%d,aii);程序运行后的输出结果是()。A)1,6,2,1,B)8,7,3,1,C)4,7,5,2,D)1,6,5,7,答案:D【解析】首先对二维数组进行赋值操作,a00、a01、a32、a33的值为 1、4、6、1。通过 for 语句和

28、if 语句,对二维数组各列元素进行由小到大的排序操作, 程序最后通过 for 语句输出二维数组对角线上的元素。因此 Cte 项正确。(30)有以下程序#includemain()charw20,a510=abcdef,ghijkl,mnopq,rstuv,wxyz;inti,j;for(i=0;i5;i+)j=0;while(aij!=0)j+;wi=aij/2+1;)w5=0;puts(w);)程序运行后的输出结果是()oA)ekpuzB)agmrwC)flqvzD)djoty答案:A【解析】在 for 循环中,执行完 while 语句,j 值为字符串数组 a 的每行字符串的长度, 因止匕

29、wi=aij/2+1,数组 a 的元素 aij/2+1的值赋给一维数组 wi。比如i=0;j=6;aij/2+1=a04=e,将此值赋给 w0。循环依次给数组 V1赋值最后输出w,答案为 A4 项。(31)有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数)#include#includemain()chara10=abc,b10=012,c10=xyz;strcpy(a+1,b+2);puts(strcat(a,c+1);)程序运行后的输出结果是()。A)a12xyzB)bc2yzC)a2yzD)12yz答案:C【解析】本题考查字符串处理函数 strcpy 和 strca

30、t,执行完strcpy(a+1,b+2);后,a变为 a2,执行完 strcat(a,c+1)后,a 变为 a2yz,所以答案为 C 选项。(32)有以下程序#includeintf(intn)intt=0,a=5;if(n/2)inta=6;t+=a+;elseinta=7;t+=a+;returnt+a+;main()ints=0,i=0;for(;i2;i+)s+=f(i);printf(%dn,s);程序运行后的输出结果是A)28B)24C)32D)36答案:B【解析】 在主函数 main()中定义了两个变量 s 和 i,同时给 s 和 i 赋初值 0。当 i=0 时。执行s+=f(i

31、);语句,调用 f()并将 i 的初值 0 传递给形参 n0首先执行if语句中内条件: n/2,条件为假。 则执行else下的语句, a=7,t=7+0=7,使用 return 返回 t,t=7+(a+)=7+5=12,此时 a 运算完后自增 1,变为 6;返回主函数中,s=0+12=12o 当 i=1 时,执行s+=f(i);语句,调用 f()并将 i 的初值 1 传递给形参 n0首先执行 if 语句中的条件:n/2,条件为真,执行 if 下面的语句,t=0,a=6t=0+6=6,使用 return 返回 t,t=6+6=12,返回主函数中,s=12+12=24。最后输出的结果为 24。因此

32、 B 选项正确。(33)有以下程序#includevoidfun(int*a,int*b) int*c;c=a;a=b;b=c;main() intx=3,y=5,*p=&x,*q=&y;fun(p,q);printf(%d,%d,*p,*q);fun(&x,&y);printf(%d,%dn,*p,*q);程序运行后的输出结果是()。A)3,5,3,5B)3,5,5,3C)5,3,3,5D)5,3,5,3答案:A【解析】 fun 函数的功能是交换形式参数的值, 即交换指针变量 a 和 b 的值,但是 fun 函数并不能够交换实参的值,因此 fun(p,q)不能

33、交换 p 和 q 的值,所以第一个printf 语句的输出为 3,5。第二个 fun 函数对 x 和 y 的地址进行了操作,同样不能交换 x 和 y 的值,并不能影响 p 和 q 指针指向的数据,因此第二个printf 语句的输出也是 3,5。因此 A 选项正确。(34)有以下程序:#includeintf(intx);main() intn=1,m;m=f(f(f(n);printf(%dn,m);intf(intx) returnx*2;程序运行后的输出结果是()。A)8B)2C)4D)1答案:A【解析】第一次调用 Ff(f(f(1),第二次为诈 f(f(2),第三次为洋 f(4),即返回值为 8。(35)设有如下函数定义:#includeintfun(intk)if(k1)return0;elseif(k=1)return1;elsereturnfun(k1)+1;若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是()。A)2B)3C)4D)5答案:B【解析】首先 n=fun(3),3 被当作参数传递进去,这就进行了一次调用,3被当做参数传进去后,程序会执行这句 elsereturnfun(k-1)+1;这就调用了第二次,而参数是 31 也就是 2。2 被当做参数传进

温馨提示

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

评论

0/150

提交评论