1、国家二级( C语言)笔试模拟试卷 36及答案与解析 1 线性表 L=(a1, a2, a3, ai , an) ,下列说法正确的是 ( ) ( A)每个元素都有一个直接前件和直接后件 ( B)线性表中至少要有一个元素 ( C)表中诸元素的排列顺序必须是由小到大或由大到小 ( D)除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件 2 设树 T的度为 4,其中度为 1, 2, 3, 4的结点个数分别为 4, 2, 1, 1。则 T中的叶子结点数为 ( ) ( A) 8 ( B) 7 ( C) 5 ( D) 5 3 设有下列二叉树: 对此二叉树前序遍历的结果为 ( )
2、( A) ZBTYCPXA ( B) ATBZXCYP ( C) ZBTACYXP ( D) ATBZXCPY 4 结构化程序设计的一种基本方法是 ( ) ( A)筛选法 ( B)递归法 ( C)归纳法 ( D)逐步求精法 5 软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指 ( ) ( A)模块间的关系 ( B)系统结构部件转换成软件的过程描述 ( C)软件层次结构 ( D)软件开发过程 6 完全不考虑程序的内部结构 和内部特征,而只是根据程序功能导出测试用例的测试方法是 ( ) ( A)黑箱测试法 ( B)白箱测试法 ( C)错误推测法 ( D)安装测试法 7 数据流图用
3、于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是 ( ) ( A)控制流 ( B)加工 ( C)数据存储 ( D)源和潭 8 在数据管理技术的发展过程中,可实现数据共享的是 ( ) ( A)人工管理阶段 ( B)文件系统阶段 ( C)数据库系统阶段 ( D)系统管理阶段 9 按条件 f对关系 R进行选择,其关系代数表达式是 ( ) ( A) R|R ( B) ( C) f(R) ( D) f(R) 10 公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是 ( ) ( A)多对多 ( B
4、)一对一 ( C)多对一 ( D)一对多 11 以下叙述中正确的是 ( ) ( A) C程序由函数和过程组成 ( B) C程序由主函数组成 ( C) C程序由函数组成 ( D) C程序中,主函数必须放在其他函数之前 12 下 列运算符中,不属于关系运算符的是 ( ) ( A) ( B) ( C) ( D) ! 13 下列属于合法的 C语言无符号短整型常数的选项是 ( ) ( A) -2 ( B) 65536 ( C) 123L ( D) 50000 14 设 a, b均为 float型变量,则以下非法的赋值语句是 ( ) ( A) b (a/5)/8; ( B) +a ( C) a 1.0,
5、b 2.0, ( D) a+ 3; 15 设有如下变量定义: double a=3.500000; float b 2.5; int m=2, n=3; 则表达式 “(float)(m+n)/2+(int)a%(int)b”的值是 ( ) ( A) 2.5 ( B) 3.5 ( C) 4.5 ( D)表达式不正确 16 先用以下语句定义字符型变量: char c; 然后要将字符 a赋给变量 c,则下列语句中正确的是 ( ) ( A) c a; ( B) c “a“; ( C) c=“97“; ( D) c=97 17 设有语句 char a 72;,则变量 a( ) ( A)包含 1个字符 (
6、 B)包含 2个字符 ( C)包含 3个字符 ( D)说明不合法 18 以下叙述中正确的是 ( ) ( A) C程序中,赋值运算符的优先级最低 ( B)若 a是实型变量, C程序中允许进行以下赋值: a=10,因此,实型变量中允许存放整型数 ( C)若 a和 b类型相同,在执行了赋值 a b后 b中的值将放入 a中, b中的值将丢失 ( D)在 C程序中,除号运算符 “/”两边的类型相同时才能进行相除运算 19 已有定义: double x; int i;,能正确给 x赋 70000.0的表达式是 ( ) ( A) x 7000*10 ( B) x=70000 ( C) x=35000+350
7、00 ( D) i 700, x i*100 20 若要求在 if后一对圆括号中表示 a不等于 0的关系,则能正确表示这一关系的表达式为 ( ) ( A) a 0 ( B) !a ( C) a=0 ( D) a 21 下列定义正确的是 ( ) ( A) static int a 1, 2, 3, 4, 5 ( B) int b=2, 5 ( C) int a(10) ( D) int 4e4 22 下述程序段的执行结果是 ( ) #include stdio h void main() int x; for(x=1; x 100; x+) if(+x%3 0) if(+x%4=0) if(+x
8、%7 0) printf(“%d“, x); ( A) 75 ( B) 76 ( C) 77 ( D) 84 23 有以下程序 #include stdio h main() int.i 0, a=0; while(i 20) for(;) if(i%10)=0) break; else i-; i+=11; a+=i; printf(“%dn“, a) ; 程序运行后的输出结果是 ( ) ( A) 21 ( B) 32 ( C) 33 ( D) 11 24 有以下程序 main() int y 10; do y-; while(-y); printf(“%dn“,y-); 程序运行后的输出结
9、果是 ( ) ( A) -1 ( B) 1 ( C) 8 ( D) 0 25 若有如下说明: int a, b=5, *t= 则能完成 a=b赋值功能的语句是 ( ) ( A) ( B) *t=b; ( C) *t ( D) *a *t; 26 若变量已正确定义并赋值,对库函数错误调用的是 ( ) ( A) k=scanf(“%d%d“, ( D) putchar(ch); 27 若有如下程序: sub(int a, int b, int *z) *z=a+b; return; main() int a 1, b=2, c 3, d, e; sub(a, b, 则程序运行后的输出结果是 ( A
10、) 3 ( B) 4 ( C) 5 ( D) 6 28 若有如下程序; main() char *p=“china“; p+ 1; printf(“%dn“, p); 则程序运行后的输出结果是 ( ) ( A) china ( B)字符 h的地址 ( C) hina ( D)字符 h的 ASCII码值 29 一个 C程序由函数 A、 B、 C和函数 P构成,在函数 A中分别调用了函数 B和函数 C,在函数 B中调用了函数 A,且在函数 P中也调用了函数 A,则可以说 ( ) ( A)函数 B中调用的函数 A是函数 A的间接递归调用 ( B)函数 A被函数 B调用是函数 A间接递归调用 ( C)
11、函数 P直接递归调用了函数 A ( D)函数 P中调用的函数 A是函数 P的嵌套 30 下列程序的输出结果是 ( ) struct abc int a, b, c; ; main() struct abc s2=1, 2, 3, 4, 5, 6; int t; t s0.a+s1.b; printf(“%dn“,t); ( A) 3 ( B) 4 ( C) 5 ( D) 6 31 若以 下对 fun函数的调用是正确的: x fun(fun(a, b, c) , (a+b, a+c) ,a+b+c); 则 fun函数的形参个数为 ( ) ( A) 3 ( B) 4 ( C) 5 ( D) 6 3
12、2 若有说明: int * p, m 51; n;,以下正确的程序段是 ( ) ( A) p= scanf(“%d“, ( D) p p for(p a, s=a; p-a n; p+) if (_)s p; return(*s); main() int x5=12, 21, 13, 6, 18; printf(“%dn“, findmax(x, 5); 在下划线处应填入的是 ( ) ( A) p s ( B) *p *s ( C) ap as ( D) p-a p-s 34 若指针 p已正确定义,要使 p指向两个连续的整型动态存储单元,则正确语句是 ( ) ( A) p=2 *(int *)
13、malloc(sizeof(int); ( B) p (int*)calloc(2*sizeof(int); ( C) p=(int*)malloc(2* sizeof(int); ( D) p=2 *(int*)calloc(sizeof(int); 35 下列程序的输出结果是 ( ) main() char*p1, *p2, str50 “xyz“; p1=“abcd“; p2=“ABCD“; strcpy(str+2, strcat(p1+2, p2+1); printf(“%s“,str); ( A) xyabcAB ( B) abcABz ( C) Ababcz ( D) XycdB
14、CD 36 以下叙述中不正确的是 ( ) ( A)一个变量的作用域完全取决于变量定义语句的位置 ( B)全局变量可以在函数以外的任何部位进行定义 ( C)局部变量的 “生存期 ”只限于 本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用 ( D)一个变量说明为 static存储类是为了限制其他编译单位的引用 37 交换两个变量的值,不允许用临时变量,应该使用下列哪一个位运算符 ( ) ( A) ( B) main() printf(“n“);sub1(); sub3(A) ,sub2(), sub3(A) ; sub2() int aMAX, i,max; max=5; for(i=
15、0; i max; i+)ai i; sub1() for(i=0;iMAX; i+)ai i+i; sub3(int a) int i; for(i=0;i MAX,i+)printf(“%d“, ai); printf(“n“); ( A) 0 2 4 6 8 10 12 14 16 18 0 1 2 3 4 ( B) 0 1 2 3 4 0 2 4 6 8 10 12 14 16 18 ( C) 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 ( D) 0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18 41 有以下结构 体说明
16、和变量的定义,且如下图所示指针 p指向变量 a,指针 q指向变量 b。则不能把结点 b连接到结点 a之后的语句是 ( ) struct node char data; struct noe *next; a, b, *p= ( A) a,next q; ( B) p.next ( C) p- next ( D) (*p).next=q; 42 若有如下定义: int (*p)(), *q(); 则下列说法正确的是 ( ) ( A) p是一个函数名, q是一个指针变量 ( B) p是一个指向整型变量的指针变量, q是一个指向一维数组的指针变量 ( C) p和 q是等价的,都是指针变量 ( D)
17、p是指向函数的指针变量,函数的返回值是整型数据; q是带回指针值的函数 43 有以下程序 #inelude stdio.h main() float x, y; scan(“%f“, else if(x 10.0)y 1.0 x; else y=10.0; printf(“%fn“, y); 若运行时从键盘上输入 2.0 CR( CR表示回车 ),则上面程序的输出结果是 ( ) ( A) 0 ( B) 0.25 ( C) 0.5 ( D) 1 44 以下程序段中,能够通过调用函数 fun,使 main函数中的指针变量 p指向一个合法的整型单元的是 ( A) main() int*p; fun(
18、p); int fun(int*p) int s; p ( B) main int *p; fun( *p= ( C) #include stdlib.h main() int *p; fun( int fun(int*p) *p=(int*)malloc(2); ( D) #include stdlib.h main() int *p; fun(p); int fun(int *p) p=(int*)malloc(sizeof(int); 45 执行下列程序时输入: 123空格 456空格 789回车,输出结果是 ( ) main() char s100 int c,i; scanf(“%c
19、“, scanf(“%s“, s); printf(“%c, %d, %sn“, c, i, s); ( A) 1,456,789 ( B) 1, 23, 456 ( C) 1, 23, 456, 789 ( D) 123,456,789 46 有以下程序 #includ2 stdio.h #include string.h main() char b18=“abcdefg“, b28, *pb b1+3, while(-pb b1)strcpy(b2, pB) ; printf(“%dn“, strlen(b2); 程序运行后的输出结果是 ( ) ( A) 8 ( B) 3 ( C) 1 (
20、 D) 6 47 设有如下定义和声明: struct 3 int a; struct s *next ; struct s x4 1, char ch c; printf(“%dn“, (a char sex; ( B)结构体的成员名可以与程序中的变量名相同 ( C)对结构体中的成员可以单独使用,它的作用相当于普通变量 ( D)结构体的成员可以是一个结构体变量 50 若要打开 A盘中 user子目录下名为 aaa txt的文本文件进行读、写操作,下面符合此要求的函数调用是 ( ) ( A) fopen(“A:useraaa txt“, “r“) ( B) fopen(“A:useraaa tx
21、t“, “r+“) ( C) fopen(“A:useraaa txt“, “rb“) ( D) fopen(“A:useraaa txt“, “w“) 51 实现算法所需的存储单元多少和算法的工作量大小分别称为算法的【 】。 52 数据结构包括数据的逻辑结构、数据的【 】以及对数据的操作运算。 53 一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【 】。 54 面向刑象的模型中,最基本的概念是对象和【 】。 55 软件维护活动包括以下几类:改正性维护、适应性维护、【 】维护和预防性维护。 56 下列程序的运行结果为【 】。 #include math h #inc
22、lude stdio h main() int s=1; float n=1, pi=0; double t=1; while(fabs(t) =2e-6) pi+=t; n+=2; s=-s; t=s/n; pi*=4; printf(“pi=% 6fn“, pi); 57 下列程序中,字符串中各单词之间有一个空格,则程序的输出结果是【 】。 #include main() char strl=“How do you do“, *p1=strl; strcpy(strl+strlen(strl)/2, “es she“); printf(“%sn“, p1); 58 设在主函数中有以下定义和
23、函数调用语句,且 fun函数为 void类型;请写出fun函数的首部【 】 (要求形参名为 b)。 main() double s1022; int n; fun (s); 59 下列程序的功能是计算机一元二次方程的根。 #include【 】 #include stdio.h main ( ) float a, b, c, disc, x1, x2, realpart, imagpart; scanf(“%f%f%f“, printf(“The equation“); if(【 】 =1e-6) printf(“ is not quadraticn“); else disc=b*b-4*a*
24、c; if (fabs (disc) =1e-6) printf(“has two equal roots:%-8.4fn“,-b/(2*a); else if(【 】 ) x1= (-b+sqrt (disc)/(2*a); x2= (-b-sqrt (disc)/(2*a); printf(“has distinct real roots:%8.4f and %.4fn“,xl,x2); else realpart=-b/(2*a); imagpart=sqrt (-disc)/(2*a); printf(“has complex roots:n“); printf (“%8.4f+%.
25、4fin“, realpart, imagpart); printf (“%8.4f-%. 4fin“, realpart, imagpart); 60 下列程序的功能是计算机平均成绩并统计 90分以上的人数。 main ( ) int n,m; float grade, average; average=n=m=【 】 ; while(【 】 ) scanf(“%f“, if (grade 0) break; m+; average+=grade; if (grade 90)【 】 ; m+; ) if(n) printf(“%.2f %dn“,average/n,m); 国家二级( C语言
26、)笔试模拟试卷 36答案与解析 1 【正确答案】 D 2 【正确答案】 A 3 【正确答案】 B 4 【正确答案】 D 5 【正确答案】 B 6 【正确答案】 A 7 【正确答案】 A 8 【正确答案】 C 9 【正确答案】 C 10 【正确答案】 C 11 【正确答案】 C 12 【正确答案】 D 13 【正确答案】 D 14 【正确答案】 C 15 【 正确答案】 B 16 【正确答案】 A 17 【正确答案】 A 18 【正确答案】 D 19 【正确答案】 B 20 【正确答案】 D 21 【正确答案】 A 22 【正确答案】 C 23 【正确答案】 B 24 【正确答案】 D 25 【
27、正确答案】 B 26 【正确答案】 C 27 【正确答案】 D 28 【正确答案】 B 29 【正确答案】 D 30 【正确答案】 D 31 【正确答案】 A 32 【正确答案】 D 33 【正确答案 】 B 34 【正确答案】 C 35 【正确答案】 D 36 【正确答案】 B 37 【正确答案】 C 38 【正确答案】 B 39 【正确答案】 D 40 【正确答案】 D 41 【正确答案】 B 42 【正确答案】 D 43 【正确答案】 C 44 【正确答案】 C 45 【正确答案】 B 46 【正确答案】 D 47 【正确答案】 A 48 【正确答案】 A 49 【正确答案】 A 50
28、【正确答案】 B 51 【正确答案】 空间 复杂度和时间复杂度 【试题解析】 算法的复杂性是指对一个在有限步骤内终止算法和所需存储空间大小的估计。算法所需存储空间大小是算法的空间复杂性,算法的计算量是算法的时间复杂性。 52 【正确答案】 存储结构 【试题解析】 数据结构包括 3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。 53 【正确答案】 可重用性 【试题解析】 继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。 54 【正确答案】 类 【试题解析】 面向对象模型中,最基本的概念是对象和类。对象是现实世界中实体的模型化;将属性集和方法集相同的所有对象组合在一起,可以构成一个类。 55 【正确答案】 完善性 【试题解析】 软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。 56 【正确答案】 3.141592 57 【正确答案】 How does she 58 【正确答 案】 void fun (double b1022) 59 【正确答案】 math.h fabs(a) fabs(disc) 1e-6 60 【正确答案】 0 1 continue