全国计算机二级C选择题题库第36套_第1页
全国计算机二级C选择题题库第36套_第2页
全国计算机二级C选择题题库第36套_第3页
全国计算机二级C选择题题库第36套_第4页
全国计算机二级C选择题题库第36套_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、全国计算机二级C选择题题库第36套1、下列叙述中正确的是A) 算法复杂度是指算法控制结构的复杂程度B) 算法复杂度是指设计算法的难度C) 算法的时间复杂度是指设计算法的工作量D) 算法的复杂度包括时间复杂度与空间复杂度 参考答案:D算法的复杂度是指运行该算法所需要的计算机资源的多少,所需的资源越多,该算法的复杂度越高;反之,所需资源越少,复杂度越低。算法复杂度包括算法的时间复杂度和算法的空间复杂度,算法的时间复杂度是指执行算法所需要的计算工作量,算法空间复杂度指执行这个算法所需要的内存空间。故选择D选项。2、设循环队列的存储空间为Q(1:50),初始状态为front=rear=50。现经过一系

2、列入队与退队操作后,front=rear=1,此后又正常地插入了两个元素。最后该队列中的元素个数为A) 2B) 1C) 3D) 52 参考答案:A循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用排头指针指向排头元素的前一个位置。循环队列长度为50,由初始状态为front=rear=50可知此时循环队列为空。入队运算时,首先队尾指针进1(即rear+1),然后在rear指针指向的位置插入新元素。特别的,当队尾指针rear=50+1时,置rear=1。退队运算时,排头指针进1(即front+1),然后删除front指针指向的位置上的元素,当排头指针front=50+1时

3、,置front=1。若经过运算,front=rear=1可知队列空或者队列满。此后又正常地插入了两个元素说明插入前队列为空,则插入后队列元素个数为2。故选A选项。3、一棵完全二叉树共有360个结点,则在该二叉树中度为1的结点个数为A) 0B) 1C) 180D) 181 参考答案:B在二叉树中,一个结点所拥有的后件个数称为该结点的度。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。由定义可以知道,完全二叉树中度为1的结点个数为1或者0。若结点总数为偶数,则有1个度为1的结点;若结点总数为奇数,没有度为1的结点。由于题目中的完全二叉树共有360个结点,则

4、度为1的结点个数为1。故选择B选项。4、设某二叉树的后序序列与中序序列均为ABCDEFGH,则该二叉树的前序序列为A) HGFEDCBAB) ABCDEFGHC) EFGHABCDD) DCBAHGFE 参考答案:A二叉树遍历可以分为3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。二叉树的后序序列与中序序列相同,说明此树结点没有右子树,且最后一个节点H为根节点,而前序遍历中根节点应在最先被访问,即节点H在最先出现,由此推断前序遍历为HGFEDCBA,故A选项正确。5、在排序过程

5、中,每一次数据元素的移动会产生新的逆序的排序方法是A) 快速排序B) 简单插入排序C) 冒泡排序D) 以上说法均不正确 参考答案:A冒泡排序只交换相邻元素,但不是每次移动都产生新的逆序。简单插入排序的元素移动不会产生新的逆序。快速排序每一次交换移动都会产生新的逆序,因为当不会有新的逆序产生时,本轮比较结束。故选择A选项。6、下面对软件工程描述正确的是A) 软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法B) 软件工程的三要素是方法、工具和进程C) 软件工程是用于软件的定义、开发和维护的方法D) 软件工程是为了解决软件生产率问题 参考答案:A软件工程是应用于计算机

6、软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。C选项叙述不全面。软件工程包含个要素:方法、工具和过程。B选项错误。软件工程的目标是:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品,追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。D选项错误。软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。故本题选A选项。7、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是A) 内聚性是指模块间互相连接的紧密程度B) 提高耦合性降低内聚性

7、有利于提高模块的独立性C) 耦合性是指一个模块内部各个元素间彼此结合的紧密程度D) 降低耦合性提高内聚性有利于提高模块的独立性 参考答案:D模块的独立程度可以由两个定性标准度量,一个是耦合性,用来衡量不同模块彼此间互相依赖(连接)的紧密程度。另一个是内聚性,用来衡量一个模块内部各个元素彼此结合的紧密程度。一般来说,要求模块之间的耦合尽可能弱,即模块尽可能独立,且要求模块的内聚程度尽可能高。故选D选项。8、下列关于数据库系统的叙述中正确的是A) 数据库系统中数据的一致性是指数据类型一致 B) 数据库系统避免了一切冗余C) 数据库系统减少了数据冗余D) 数据库系统比文件系统能管理更多的数据 参考答

8、案:C数据管理技术的发展经历了个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。数据库系统共享性大,冗余度小,但只是减少了冗余,并不是避免一切冗余。数据的一致性是指在系统中同一数据在不同位置的出现应保持相同的值,而不是数据类型的一致。数据库系统比文件系统有更强的管理控制能力,而不是管理更多的数据。故本题选C选项。9、一名演员可以出演多部电影,则实体演员和电影之间的联系是A) 多对多B) 一对一C) 多对一 D) 一对多 参考答案:A实体集之间通过联系来建立联接关系分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。由于一名演员可以出演多部电影,而一部电影必定有多个演员

9、参演,则实体演员和电影之间的联系属于多对多。故选A选项。10、A) 表S中所有学生都选修了的课程的课号B) 全部课程的课号C) 成绩不小于80的学生的学号D) 所选人数较多的课程的课号 参考答案:A表示针对属性进行的投影运算, "/"表示除运算,可以近似地看作笛卡尔积的逆运算。表达式表示,首先在关系模式SC中选择属性"学号"与"课号",结果如下左图。其次在这个关系模式中对关系模式S进行除运算,结果如下右图。则关系式结果表示S中所有学生(S1、S2)都选修了的课程的课号(C1、C2)。S#,C# (SC)/S的运算结果S#,C# (SC

10、)的运算结果故本题选A选项。11、有以下程序#include <stdio.h>main() int a=2,b=3,c=4; a*=16 +(b+) - (+c); printf("%d n",a );程序运行后的输出结果是A) 15B) 30C) 28D) 14 参考答案:C1、后置自增运算:k+表示先运算,后自加。2、前置自增运算:+k表示先自加,后运算。+单目运算符的优先级高于赋值运算符。a*=16 +(b+) - (+c);可转化为:a=a*(16+b-(c+1);b=b+1;代入值计算可得值a=28。答案为C选项。12、以下叙述正确的是A) 通过分解

11、成简单子任务,可以完成任何复杂任务B) 每个结构化程序都要包含全部三种基本结构C) C语言程序的所有自定义函数只能写在同一个源文件中D) C语言程序允许使用多个main函数,只要它们的函数体各不相同即可 参考答案:A算法的三种基本结构:循环、顺序、条件。有的简单的程序只包含其中的若干个,因此B选项错误,C语言程序的自定义函数可以放在多个.c文件中,只要包含其引用的头文件即可链接到,因此选项C错误。C语言程序有且只有一个main函数,因此D选项错误。故答案为A选项。13、以下选项中,合法的C语言实数是A) E4.8B) 4.3e0.2 C) .4e0D) 0.29E 参考答案:CC语言"

12、;标准化指数形式":其数值部分是一个小数,小数点前的数字是零,小数点后的第一位数字不是零。一个实数可以有多种指数表示形式,但只有一种属于标准化指数形式。在C语言中e后面的指数必须是整数。因此只有C选项正确。14、设a,b,c已定义为整型变量,以下选项中不正确的赋值表达式是A) a = 3 = (b = 2) = 1;B) a = (b = 0) * c + 1;C) a = (b = 0) * c + 1;D) a = 10 % (b = c = 2.0); 参考答案:A根据()和=运算符的优先级,运算过程为b=2,b=1,之后3=1为非法赋值运算。,,C语言规定常量只能做为右值,不

13、能做左值,因此选项A的表达式错误。15、若变量已正确定义并赋初值,以下合法的赋值语句是A) k=(m=n);B) k=-m-n C) k=int(m+n);D) k=m*n=1; 参考答案:Am,n的变量类型未知,但题目中已定义和赋值。选项B的-m-n对于整型与浮点数类型可以这样操作,但若变量为字符类型,则错误。选项C,编译类型错误,强制转化使用错误。选项D,m*n是常量,只能用作表达式的右值,不能作为左值。故答案为A选项。16、以下关于逻辑运算符两侧运算对象的叙述中正确的是A) 只能是整数0或1 B) 只能是整数0或非0整数C) 可以是结构体类型的数据D) 可以是任意合法的表达式 参考答案:

14、D与运算符(&&)和或运算符(|)均为双目运算符,具有左结合性。非运算符(!)为单目运算符,具有右结合性。只要是合法的表达式,都可以作为逻辑运算表达的运算表达式。因此可知选项A,B,C错误。答案为D选项。17、以下选项中错误的是A) printf("%sn", 's'); B) printf("%d %cn", 's','s');C) printf("%cn", 's'- 32);D) printf("%cn", 65); 参考答案:A

15、%d可以作为输出字符和整型类型的格式,%c作为输出字符类型的格式,%s作为输出字符串类型的格式,选项A,s是字符,不能用%s格式来输出。故答案为A选项。18、若有定义:char ch;当执行以下循环时从键盘输入abcde<回车>,将输出*的个数是 while(ch=getchar()='e') printf("*");A) 4B) 0C) 5D) 1 参考答案:Bwhile(ch=getchar()=e),输入abcde,接收到的第一个字符是a,while循环的条件为0,跳出循环结束。因此printf没有执行过。因此,没有打印任何字符出来。故答案

16、为B选项。19、有以下程序#include <stdio.h>main() int x=10,y=11,z=12; if( y< z ) x=y; y=z; z=x; printf("x=%d y=%d z=%dn", x, y, z );程序运行后的输出结果是A) x=11 y=12 z=11B) x=10 y=10 z=10C) x=11 y=11 z=10D) x=10 y=10 z=12 参考答案:Aif条件为真,执行x=y;此时x=11;y=11;z=12再执行y=z;z=x;此时y=12;z=11;最后x=11;y=12;z=11;故答案为A选

17、项。20、对于if(表达式)语句,以下叙述正确的是A) "表达式"不能是变量B) "表达式"的值只能是整数值C) "表达式"可以是常量 D) "表达式"中不可以出现字符型变量的比较 参考答案:CC语言没有规定if(表达式)中的"表达式"的形式,可以是任意合法表达式。故答案为C选项。21、有以下程序#include <stdio.h>main( ) char ch = '1' while (ch < '9') printf("%d&quo

18、t;, ch - '0'); ch+; 程序运行后的输出结果是A) 12345678 B) 01234567C) 0D) 1 参考答案:A将字符转为数字,并输出打印的格式为%d,while循环从1-8,因此打印的结果是12345678。故答案为A选项。22、以下与表达式(!x=0) 的逻辑值不等价的选项是A) x=1B) xC) x!=0D) x>0 | x<0 参考答案:A!与=运算,!的优先级高于=,即等价于(!x)=0。如果x0,则表达式为真,否则表达式为假,因此可以验证选项,只有选项A不符合。故答案为A选项。23、以下叙述正确的是A) 表达式9-'0

19、'的值是数值 9B) 表达式'A'+32的值是字母A的ASCII码C) 表达式'a'-32的值是字母a的ASCII码D) 表达式9+'0'的值是字符9的ASCII码 参考答案:D表达式9-0的值是数值9-48=-39,故选项A错误, 表达式A+32的值是字母a的ASCII码, 故选项B错误,表达式a-32的值是字母A的ASCII码, 故选项C错误。故答案为D选项。24、有以下程序 #include <stdio.h> int fun (int x, int y ) if (x!=y) return ( (x+y) /2 );

20、else return ( x ); main() int a=4, b=5, c=6; printf( "%dn" , fun(2*a, fun( b, c ) ) ); 程序运行后的输出结果是A) 3B) 6C) 8D) 12 参考答案:Bfun函数的功能是获取二个数的平均数,注意平均数是整型数,小数会被截断。fun(2*4,fun(5,6)àfun(8,5)à6,因此答案为C选项。25、有以下程序 #include <stdio.h> int f( int x,int y) return(y-x)*x); main() int a=3,

21、b=4,c=5,d; d=f(f(a,b),f(a,c); printf("%dn",d); 程序运行后的输出结果是A) 8B) 10C) 9D) 7 参考答案:Cf(a,b)=f(3,4)=(4-3)*3=3;f(a,c)=f(3,5)=(5-3)*3=6;f(3,6)=(6-3)*3=9;因此,d=f(f(a,b),f(a,c)=9,答案为C选项。26、有以下程序#include <stdio.h>void fun( int a , int n, int flag ) int i=0,j, t; for ( i=0; i<n-1; i+ ) for (

22、 j=i+1; j<n; j+ ) if ( flag ) if ( ai < aj ) t = ai; ai = aj; aj = t; else if ( ai > aj ) t = ai; ai = aj; aj = t; main( ) int c10= 7,9,10,8,3,5,1,6,2,4 ,i; fun( c, 4, 1 ); fun( c+4, 6, 0 ); for ( i=0;i<10; i+ ) printf( "%d,", ci ); printf("n");程序运行后的输出结果是A) 7,8,9,10,

23、6,5,4,3,2,1,B) 10,9,8,7,6,5,4,3,2,1,C) 10,9,8,7,1,2,3,4,5,6,D) 1,2,3,4,5,6,7,8,9,10, 参考答案:Cfun()函数作用冒泡法排序,flag控制升序(0)或者降序(1)。n为参与排序的个数。a为数组的起始地址。因此,fun(a,4,1),数组的前四个降序排序,fun(a+4,6,0)从数组的第四项,后六个升序排序。故结果为10,9,8,7,1,2,3,4,5,6。答案为C选项。27、有以下程序#include <stdio.h>int m1(int x, int y ) if( x<= y ) r

24、eturn 2*x+1; else return y;int m2(int x, int y ) if( x<= y ) return 2*y+1; else return x;main() int i, t1=10, t2=0; for( i=1; i<=4; i+ ) t1=m1( i,t1 ); t2=m2( i,t2 ); printf("t1=%d t2=%d n", t1, t2 );程序运行后的输出结果是A) t1=9 t2=4 B) t1=4 t2=9C) t1=9 t2=9D) t1=1 t2=4 参考答案:A函数m1(x,y),若x<y

25、,返回2*x+1,否则返回y, 函数m2(x,y),若x<=y,返回2*y+1,否则返回x,for循环对t1=m1(i,t1),执行4次,可知答案为9,t2=m2(i,t2), 执行4次,可知答案为4,因此答案为A选项。28、有以下程序#include <stdio.h>void f1(char *a, char b ) char c; c=*a; *a=b; b=c; void f2(char a, char b ) char c; c=a; a=b; b=c; void f3(char *a, char *b ) char c; c=*a; *a=*b; *b=c; ma

26、in() char t1, t2; t1 = 'A' t2 = 'B' f3( &t1,&t2 ); putchar(t1); putchar(t2); t1 = 'A' t2 = 'B' f2( t1, t2 ); putchar(t1); putchar(t2); t1 = 'A' t2 = 'B' f1( &t1, t2 ); putchar(t1); putchar(t2); printf("n");程序运行后的输出结果是A) ABBABBB) B

27、AABBBC) BABABAD) BABAAB 参考答案:Bf1(*a,b),*a地址传递,b值传递,将b值传给*a,则f1(&t1,t2)调用后输出t1、t2为BB。f2(a,b)值传递,传入的只是a,b的拷贝,不实现交换,则f2(t1,t2)调用后输出t1、t2为AB。f3(*a,*b)为地址传递,可以实现a,b值的交换,则f3(&t1,&t2)调用后输出t1、t2为BA。因此结果为BAABBB。故答案为B选项。29、以下叙述正确的是A) char c1, *c2, *c310; 是合法的变量定义语句B) 数组说明符的一对方括号中不能使用表达式C) 数组元素下标可以

28、是非整数D) 若有定义 char array4; 则语句 printf("%c", array"3");是合法的 参考答案:AC语言规定定义数组时,数组的长度必须是整型常量,数组说明符的一对方括号中表达式只要是常量即合法,因此选项B错误。C语言规定,数组元素下标必须是非负整数 ,因此选项C错误。选项D char array4数组的长度为4, array"3",其中"3"常量字符串,与C语言规定数组的下标必须是非负整数不符,故答案为A选项。30、有以下程序#include <stdio.h>main( )

29、 int a33=1,3,5, 7,9,11, 13,15,17; int (*p)3=a, i,j,n=0; for(i=0;i<3;i+) for(j=0;j<2;j+) n+=*(*(p+i)+j); printf("%dn",n); 程序运行后的输出结果是A) 54B) 60C) 36D) 48 参考答案:Dfor循环的作用是求数组各行前二列的数字之和。*(*(p+i)+j)àpij1+3+7+9+13+15=48,因此答案为D选项。31、设有定义: char p='1', '2', '3',*q

30、=p; 以下不能计算出一个char型数据所占字节数的表达式是A) sizeof(*q)B) sizeof(char)C) sizeof(p)D) sizeof(p0) 参考答案:C变量p,q均是指针,因此sizeof(p)=4,而*p,*q,p0的类型都是char,因此长度为1,故A、D选项均正确。选项B,直接计算char的字节数也正确,故答案为C选项。32、有以下程序 #include <stdio.h> fun(int x, int y) static int m=0, i=2; i+=m+1; m=i+x+y; return m; main() int j=1, m=1, k

31、; k=fun(j,m); printf("%d,",k); k=fun(j,m); printf("%dn",k); 执行后的输出结果是A) 5, 11B) 5, 5C) 11, 11D) 11, 5 参考答案:Astatic静态变量只在声明时初始化一次。因此m,n只是在第一个调用fun函数时初始化,第二次保持原来的只不变,不在进行初始化。因此第一次,可计算i=3,m=3+1+1=5,故打印为5,第二次i=4+5,m=9+1+1=11,故打印11。故答案为A选项。33、有以下程序#include <stdio.h>int f( int x,

32、 int n ) if ( n> 1) return xn-1+ f(x, n-1)*10; else return x0;main( ) int z3 = 1,2,3, y; y = f(z,3); printf( "%dn", y );程序运行后的输出结果是A) 321B) 123C) 1D) 3 参考答案:Bf函数的作用是将int型数组构造成一个整型数。f函数采用递归的方式来实现,位数是递增的。有题设可知结果为123,因此输出结果为B选项。34、有以下程序#include <stdio.h>#include <string.h>main(

33、) char ss10="12345" strcat( ss, "6789" ); gets( ss ); printf("%sn", ss );执行时输入:ABC<回车>,则输出结果是A) 123456ABCB) ABC9 C) ABCD) ABC456789 参考答案:Cgets(ss)读入一串字符串,直到遇到回车,读入的数据从数组的起始位置覆盖。数组s里的内容是ABC0567890,因此打印出ABC。故答案为C选项。35、有以下程序#include <stdio.h>#include <string

34、.h>main() printf("%dn", strlen("0tn0C0111");程序运行后的输出结果是A) 3B) 13C) 1D) 0 参考答案:AC语言转义字符是一个字符。字符串0tn0C011,共有0,t, n三个字符。strlen()遇到0计数结束,因此计数为3,故答案为A选项。36、有以下程序#include <stdio.h>int show( char *str ) while (*str) putchar(*str+1); str+; return *str+1;main( ) printf("%dn", show("ABCD");程序运行后的输出结果是A) ABCD0B) BCDE0C) BCDE1D) ABCD1 参考答案:Cputchar()每次输出一个字符,根据*str+1,因此ABCD每个字符都加1, 最后0=0,因此最后输出1,故答案BCDE1。故答案为C选项。37、有以下程序#include <stdio.h>void my_put() char ch; ch = getchar(); if (ch != 'C') my

温馨提示

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

最新文档

评论

0/150

提交评论