1、国家二级( C语言)笔试模拟试卷 231 及答案与解析 1 对长度为 n的线性表排序,在最坏情况下,比较次数不是 n(n-1)/2的排序方法是 ( A)快速排序 ( B)冒泡排序 ( C)直接插入排序 ( D)堆排序 2 对长度为 n的线性表进行顺序查找,在最坏的情况下需要比较的次数为 ( )。 ( A) 125 ( B) n/2 ( C) n ( D) n+1 3 结构化分析方法是面向 ( )的自顶向下、逐步求精进行需求分析的方法。 ( A)对象 ( B)数据结构 ( C)数据流 ( D)目标 4 有 下列二叉树,对此二叉树前序遍历的结果为 ( )。 ( A) ACBEDGFH ( B) A
2、BDGCEHF ( C) HGFEDCBA ( D) ABCDEFGH 5 相对于数据库系统 ,文件系统的主要缺陷有数据关联差、数据不一致性和 ( A)可重用性差 ( B)安全性差 ( C)非持久性 ( D)冗余性 6 数据处理的最小单位是 ( )。 ( A)数据 ( B)数据元素 ( C)数据项 ( D)数据结构 7 下列叙述中,不属于软件需求规格说明书的作用的是 ( )。 ( A)便于用户、开发人员相互理 解和交流 ( B)反映用户问题的结构,可以作为软件开发工作的基础和依据 ( C)作为确认测试和验收的依据 ( D)便于开发人员进行需求分析 8 为了提高测试的效率,应该 ( A)随机选取
3、测试数据 ( B)取一切可能的输入数据作为测试数据 ( C)在完成编码以后制定软件的测试计划 ( D)集中对付那些错误群集的程序 9 设栈 S的初始状态为空。元素 a、 b、 c、 d、 e、 f依次通过栈 S,若出栈的顺序为b、 d、 c、 f、 e、 a,则栈 S的容量至少应该为 ( )。 ( A) 3 ( B) 4 ( C) 5 ( D) 6 10 在软件开发中,需求分析阶段产生的主要文档是 ( A)软件集成测试计划 ( B)软件详细设计说明书 ( C)用户手册 ( D)软件需求规格说明书 11 下列能正确定义一维数组的选项是 ( )。 ( A) 4,3,7 ( B) 3,4,7 ( C
4、) 5,2,7 ( D) 2,5,7 12 在数据流图中,带有箭头的线段表示的是 ( )。 ( A)控制流 ( B)数据流 ( C)模块调用 ( D)事件驱动 13 以下程序的输出结果是 _。 main() int i, j, x=0; for (i=0; i 2; i+) x+; for(j=0; j 3; j+) if(j%2) continue; x+; x+; printf(“x=%dn“, x); ( A) x=4 ( B) x=8 ( C) x=6 ( D) x=12 14 现在有以下定义, int a; double b; float c; char k;则下面的表达式 a/b+
5、c-k值的类型为: ( A) int ( B) double ( C) float ( D) char 15 下列叙述中正确的是 ( )。 ( A) C语言中既有逻辑类型也有集合类型 ( B) C语言中没有逻辑类型但有集合类型 ( C) C语言中有逻辑类型但没有集合类型 ( D) C语言中既没有逻辑类型也没有集合类型 16 字符串 “abcd123xABt“的长度是 ( )。 ( A) 8 ( B) 17 ( C) 9 ( D) 10 17 设 x、 y、 t均为 int 型变量,则执行语句: x=y=3; t=+x|+y;后, y的值为( )。 ( A)不定值 ( B) 4 ( C) 3 (
6、 D) 1 18 静态测试是一种重要的测试方式,可以发现 30到 70的逻辑设计和编码错误。下面 ( )不属于静态测试 ? ( A)白盒测试 ( B)代码检查 ( C)代码质量度量 ( D)静态分析 19 假定 w、 x、 y、 m均为 int型变量,则执行下列的语句后, m的值是 ( )。 w=6,x=4,y=3; m=(w x)?w:x; m=(m y)?m:y; ( A) 3 ( B) 4 ( C) 5 ( D) 6 20 若整型变量 a、 b、 c、 d中的值依次为: 1、 4、 3、 2。则条件表达式 a b?a:cd?c:d的值是 ( )。 ( A) 1 ( B) 2 ( C) 3
7、 ( D) 4 21 下列不是合法的 C语言语句是 ( )。 ( A) a=5 ( B) int i; i+; ( C); ( D) ; 22 当用户要求输入的字符串中含有空格时,应使用的输入函数是 ( A) scanf() ( B) getchar() ( C) gets() ( D) Setc() 23 设变量 x和 y均已正确定义并赋值,以下 if语句中,在编译时 将产生错误信息的是 ( )。 ( A) if(x+); ( B) if(x y ( C) if(x y)x-else y+; ( D) if(y 0) ; else x+; 24 有以下程序: #include stdio.h
8、 main() int i,j; for(i=3;i =1;i-) for(j=1;j =2;j+)printf(“%d“,i+j); printf(“n“); 程序运行 的结果是( )。 ( A) 2 3 4 ( B) 4 3 2 ( C) 2 3 ( D) 4 5 3 4 5 5 4 3 3 4 3 4 4 5 2 3 25 若有定义和语句: int*pp,*p,a 20,b 10; pp p p printf(“%d,%dn“,*p,*pp); 则输出结果是 ( )。 ( A) 20,10 ( B) 20,20 ( C) 10,20 ( D) 10,10 26 以下程序的输出结 果是 _
9、。 main() union int i2; long j; char m4; r, *s=float f2 ( float n) return 2 * n;main( ) float ( * p1)(float),( * p2)(float),(*t)(float) ,y1,y2; p1 = f1;p2 = f2; y1 = p2(p1(2.0) ); t =p1;p1 = p2;p2 =t; y2=p2(p1(2.0); prinff(“% 3.0f, %3.Ofn“ ,y1,y2);程序运行后的输出结果是 ( )。 ( A) 8,16 ( B) 8,8 ( C) 16,16 ( D) 4
10、,8 28 设变量 x为 float型且已赋值,则以 下语句中能将 x中的数值保留到小数点后两位,并将第三位四舍五入的是 ( )。 ( A) x=x*100+0.5/100.0; ( B) x=(x*100+0.5)/100.0 ( C) x=(int)(x*100+0.5)/100.0; ( D) x=(x/100+0.5)/100.0; 29 若以下定义 :struct link int data; struck link *next; a, b, c, *p, *q; 且变量a和 b之间已有如下图所示的链表结构: 指针p指向变量 a, q指向变量 c。则能够把 c插入到 a和 b之间并形
11、成新的链表的语句组是 ( A) a.next=c; c.next=b; ( B) p.next=q; q.next=p.next; ( C) p- next=(*q).next= while(*(str+num)!=0) num+; return(num);p main() char str10,*p=str; gets(p);printf(“%dn“,func(P); ( A) 8 ( B) 7 ( C) 6 ( D) 5 31 下列程序执行后输出的结果是 _。 int d=1; fun(int p) int d=5; d+=p+; printh(“%d,“,d); main() int a
12、=3; fuin(a); d+=a+; printf(:%dn“,d); ( A) 8, 12 ( B) 9, 13 ( C) 8, 4 ( D) 9, 5 32 下述函数功能是 _。 int fun(char *x) char *y=x; while(*y+); retum y-x-1; ( A)求 字符串的长度 ( B)求字符串存放的位置 ( C)比较两个字符串的大小 ( D)将字符串 x连接到字符串 y后面 33 阅读以下程序及对程序功能的描述,其中正确的描述是 #include stdio.h main() FILE*in, *out; char ch, infile10, outfi
13、le10; printf(“Enter the infile name:n“); scanf(“%s“, infile); printf(“Enter the outfile name:n“); scanf(“%s“, outfile); if(in=fopen(infile, “r“)=NULL) printf(“cannot open infilen“); exit(0); if(out=fopen(outfile, “w“)=NULL) printf(“cannot open outfilen“); exit(0); while(!feof(in)fputc(fgetc(in),out)
14、; fclose(in); fclose(out); ( A)程序完成将磁盘文件的信息在屏幕上显示的功能 ( B)程序完成将两个磁盘文件合二为一的功能 ( C)程序完成将一个磁盘文件复制到另一个磁盘文件中 ( D)程序完成将两个磁盘文件合并并在屏幕上输出 34 有以下程序: main() int x=0, y=0, i; for(i=1; +i) if(i%2=0)x+; continue; if(i%5=0)y+; break; printf(“%d, %d“, x, y); 程序的输出结果是 ( )。 ( A) 2, 1 ( B) 2, 2 ( C) 2, 5 ( D) 5, 2 35 下
15、面程序的输出结果是 _。 main() int x=0x48; printf(“%dn“,-x); ( A) 48 ( B) 47 ( C) 71 ( D) 72 36 下列程序的输出结果是 ( )。 #include stdio.h #include string.hmain() char a=“n123“; printf(“%d, %dn“, strlen(A) , sizeof(A) ); ( A) 5,6 ( B) 5,5 ( C) 6,6 ( D) 6,5 37 若有定义 int a10, *p=a,则 p+6表示 ( )。 ( A)数组元素 a5的值 ( B)数组元素 a5的地址
16、( C)数组元素 a6的地址 ( D)数组元素 a0的值加上 5 38 有一函数: 以下程序段中不能根据 x值正确计算 出 y值的是 ( A) if(x0)y=1; else if(x= =0)y=0; else y=-1; ( B) y=0; if(x0)y=1; else if(x = 0) if (x0) y = 1; else y = -1; ( D) if ( x = 0) if ( x0)y = 1; else y = 0; else y = -1; 39 以下叙述中错误的是 ( A)二进制文件打开后可以先读 文件的末尾,而顺序文件不可以 ( B)在程序结束时,应当用函数 fclo
17、se( )关闭已打开的文件 ( C)在利用函数 fread( )从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据 ( D)不可以用 FILE定义指向二进制文件的文件指针 40 若有定义: char *x=“abcdefghi“;,以下选项中正确运用了 strcpy函数的是_。 ( A) char y10; strcpy(y,x4); ( B) char y10; strcpy( y, ( C) char y10,*s; strcpy(s=y 5,x); ( D) char y10,*s; strcpy(s=y 1,x 1); 41 下列叙述中错误的是 ( )。 ( A) gets函
18、数用于从终端读入字符串 ( B) getchar函数用于从磁盘文件读入字符 ( C) fputs函数用于把字符串输出到文件 ( D) fwrite函数用于以二进制形式输出数据到文件 42 设一棵完全二叉树共有 500个结点,则在该二叉树中有 _个叶子结点。 43 关系模型的完整性规则是对关系的某种约束条件 ,包括实体完整性、 _和自定义完整性。 44 对于长度为 n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【 】。 45 设一棵完全二叉树共有 700个结点,则在该二叉树中有【 】个叶子结点。 46 数据流图的类型有【 】和事务型。 47 两种基本测试方法中, ( )
19、测试的原因之一是保证所测试模块中每一个独立路径至少要执行一次。 48 下列程序的运行结果是 _。 #define P(A) printf(“%d“,A) main() int j,a=1,2,3,4,5,6,7,i=5; for(j=3;j 1;j-) switch(j) case 1: case2: P(ai+);break; case 3: P(a-i); 49 #define命令出现在程序中函数的外面,宏名的有效范围为 _。 50 以下程序的运行结果是 ( )。 int k=0; void fun(int m) m+=k;k+=m;printf(“m=%dn k=%d“,m,k+); m
20、ain() int i=4; fun(i+);printf(“i=%d k=%dn“,i,k); 51 以下程序运行时从键盘输入: 1 0 2 0,输出结果是: 1 000000 2 000000,请填空。 #include main() double a; float b; scanf(“_“, 成员变量 link是指向自身结构体的指针 ,请将定义补充完整。 struct node int info; 【 】 link; ; 54 设二进制数 A是 00101101,若想通过异或运算 ab使 A的高 4位取反,低 4位不变,则二进制数 B应是【 】。 55 在计算机中,字符 的比较是对它们的
21、【 】进行比较。 56 语句: x+;、 +x;、 x x+1;、 x=1+x;,执行后都使变量 x中的值增 1,请写出一条同一功能的赋值语句 (不得与列举的相同 )【 】。 57 函数 fun的功能是计算 xn double fun(double x, int n) int i; double y=1; for(i=1; i =n; i+) y=y*x; return y; 主函数中已正确定义 m、 a、 b变量并赋值,而且调用 fun函数计算: m=a4+b4-(a+b)3。实现这一计算的函数调用语句为【 】。 国家二级( C语言)笔试模拟试卷 231 答案与解析 1 【正确答案】 D 【
22、试题解析】 在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都为 n(n-1)/2,堆排序需要的比较次数为 nlog2n。 2 【正确答案】 C 【试题解析】 对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所 要找的元素为止。在最坏的情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。 3 【正确答案】 C 【试题解析】 结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统
23、的逻辑模型。 4 【正确答案】 B 【试题解析】 对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子 树。 5 【正确答案】 D 【试题解析】 本题考查文件系统和数据库系统的区别。文件系统所管理的数据文件基本上是分散的、相互独立的 ,因此相对于数据库系统 ,以此为基础的数据处理存在 3个缺点 ,即数据冗余大、数据的不一致性、程序与数据的相互依赖 (简称为数据依赖 )。 6 【正确答案】 C 【试题解析】 数据处理的最小单位是数据项。由若干数据项组成数据元素,而数据是指能够被计算机识别、存储和加工处理的信息载体,数据
24、结构是指数据之间的相互关系和数据运算。故正确答案为选项 C)。 7 【正确答案】 D 【试题解析】 软件需求规格说明书 (SRS, Software Requirement Specification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用: 便于用户、开发人员相互理解和交流。 反映用户问题的结构,可以作为软件开发工作的基础和依据。 作为确认测试和验收的依据。 8 【正确答案】 D 【试题解析】 测试的目的是发现软件中的错误。经验表明,程序中存在错误的概率与该程序中已发现的错误数成正比。这一现象说明,为了提高测试效 率,测试人员应该集中对付那些错误群集的程
25、序。 9 【正确答案】 A 【试题解析】 根据条件,可做如下操作: a、 b 进栈,栈中有 a和 b 两个元素; b出栈, c、 d进栈,栈中有 a、 c、 d这 3个元素; d、 c出栈, e、 f 进栈,栈中有 a、 e、 f这 3个元素; 元素 f、 e、 a出栈,栈为空。由此可见,进栈顺序为 a、 b、 c、 d、 e、 f,出栈顺序为 b、 d、 c、 f、 e、 a,满足题目要求。每次进栈操作后,栈中最多有 3个元素,所以,为了顺利完成这些操作,栈的容量应至少为 3。 10 【正确答案】 D 【试题解析】 软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。 1
26、1 【正确答案】 A 【试题解析】 根据函数 int f1(int x,int y)return x y?x:y;和 int f2(int x,int y)return x) ?y:x;的定义可知,如果 x y成立,则函数 f1返回 x的值,函数 f2返回 y的值。所以 f1(a,b)=4,f1(c,d)=5,f2(a,b)=3,f2(c,d)=2,故 e=f2(4,5),f=f1(3,2)=3,g=4+3+5+2-4-3=7。 12 【正确答案】 B 【试题解析】 数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。 13 【正确答案】 B 14 【正确答案】
27、 B 【试题解析】 双目运算中两边运算量类型转换规律: 运算数 1 运算数 2 转换结果类型 短整型 长整型 短整型 -长整型 整型 长整型 整型 -长整型 字符型 整型 字符型 -整型 有符号整型无符号整型有 符号整型 -无符号整型 整型 浮点型 整型 -浮点型 在 a/b 的时候, a, b的类型不一致,根据类型转换规则,把整型转换成 double类型,之后的加,减类似。转化规则为 char,shortintunsignedlongdoublefloat 15 【正确答案】 D 【试题解析】 在 C语言中没有逻辑类型,逻辑类型用整型来表示,故选项 A和选项 C不正确: C语言中没有集合类型
28、,故选项 B 不正确。所以, D选项为所选。 16 【正确答案】 C 【试题解析】 本题中的字符串出现了 5个转义字符 、 、 123、 xAB、 t和 4个字符 a、 b、 c、 d,所以字符串的长度是 9,选项 C符合题意。 17 【正确答案】 C 【试题解析】 在 |运算中,当第一个表达式的值为真时,第二个表达式将不再运算。由于在表达式 t=+t|+y;中, t的值为非 0,即第一个表达式的值为真,第二个表达式将不再运算,所以 y的值没有变化,仍然为 3。所以, 4个选项中选项C符合题意。 18 【正确答案】 A 19 【正确答案】 A 【试题解析】 条件表 达式 “a?b:c”的含义是
29、:当 a为真时,其值等于表达式 b的值,当 a为假时,其值等于表达式 c的值。第一个表达式: w=6 x=4为假,所以返回 x的值,即 m=x=4;第二个表达式: m=4 y=3为假,所以返回 y的值,即m=y=3。 20 【正确答案】 A 【试题解析】 条件表达式的形式如下:表达式 1?表达式 2:表达式 3,所以本题条件表达式 a b? a: c d? c: d应该理解为 a b? a:(c d? c: d),首先求出条件表达式 c d? c: d的值等于 2,再求条件表达式 a b?a:2的值,由 于 a-1 b-4成立,所以上述条件表达式的值等于 1。 21 【正确答案】 A 【试题解
30、析】 选项 A)是一个表达式,它后面没有分号结尾 (C 语言中规定语句必须以分号结束 ),所以它不是语句;选项 B)用一个花括号把几条语句括起来了,这是一个复合语句;选项 C)中只有一个分号,是一个空语句;选项 D)是个复合语句,也是一个空语句。 22 【正确答案】 C 【试题解析】 本题综合考查了输入函数的使用。 scanf 函数会将空格视为分隔符, getchar函数只能输入单个字符, getc函数是文件操作函数,显 然都不符合题意。通过 gets函数输入字符串时,输入的空格被认为是字符串的一个字符。 23 【正确答案】 C 24 【正确答案】 D 【试题解析】 本题主要考查 for循环语
31、句的嵌套。外层主循环执行了 3次,嵌套的循环语句每轮执行 2次,每次输出 i+j的值,推出嵌套循环语句后换行。 25 【正确答案】 D 【试题解析】 本题考查指针变量的赋值。 *pp 是定义了一个指向指针的指针变量,语句 pp &p 是将 pp指向指针 p, *p和 *pp都是指针 p所指的内存空间的内容,即 b的值。 26 【正确答 案】 A 27 【正确答案】 A 【试题解析】 程序中定义了三个指向函数的指针变量 p1、 p2、 t,函数返回值均是 float类型。在 main 函数中, p1指向了函数 f1, p2指向了函数 f2。语句y1=p2(p1(2.0);先调用 f1函数,将其返
32、回值 4.000000传递给 f2的形参 n,并将其函数返回值 8.000000赋值给 y1。然后在 main 函数中交换 p1, p2指针变量的指向,使 p1指向了函数 f2, p2指向了函数 f1,执行语句 y2= p2(p1(2.0);先调用函数 f2,得到返回值 4.000000,将其传递给 f1函数的形参 n,并将返回值 16.000000赋值给 y2。在输出 y1, y2时,各浮点数占 3列,小数位数为 0,即输出了: 8,16。 28 【正确答案】 C 【试题解析】 本题考查实型数据。题目要求保留到小数点后两位,选项 A)、B)、 D)都不合要求。在选项 C)中, x*100+0
33、.5的作用是将第三位四舍五入,取整后再除以 100.0,即可得符合要求的数据。 29 【正确答案】 D 【试题解析】 本题考核的知识点是在链表中插入结点的操作。在本题中指针p指向变量 a, q指向变量 c。要把 c插入到变量 n和变量 b 之间,就应该首先让变量 a的指针域指向变量 c,即 (*p) next=q,然后让变量 c的指针域指向变量b,即 (*q) next=&b所以, 4个选项中 D为所选。 30 【正确答案】 C 【试题解析】 本题通过函数 gets()从键盘接收一个字符串,并通过调用 fune()函数,统计串中字符的个数。 31 【正确答案】 C 【试题解析】 本题执行过程如
34、下:首先调用 fun 函数,使得实参 a的值 3传递给形参 p,得到局部变量 d=8,打印出局部变量 d 的值 8;返回主函数执行“d+=a+”,此处的 d为全局变量,所以 d=1+3=4(由于本题是值传递,所以在函数fun中对 p值的改变并不能引起 a的改变 ),故本题的输出是 8,4。 32 【正确答案】 A 【试题解析】 在函数体内定义一字符型指针并指向形参,然后遍历其中各字符直到 NULL,最后返回字符串首尾地址的差值,即字符串的长度。 33 【正确答案】 C 【试题解析】 本题中,最主要的是掌握几个有关文件的函数的应用。 函数名: fopen功能:打开一个文件调用方式 FILE *f
35、p; fp=fopen(文件名,使用文件方式 ); 函数名: feof功能:检查文件是否结束调用方式: feof(FILE *fp); 函数名: fputc功能:把一个字符写到磁盘文件上去调用方式: fputc(ch, fp)(ch是要输出的字符, fp是从指定的文件读入一个字符,该文件必须是以读或读写方式打开的调用方式: ch=fgetc(fp)(ch 是字符变量, fp是文件指针变量 ); 函数名: fclose功能:关闭一个文件调用方式: fclose(文件指针 )。 34 【正确答案】 A 【试题解析】 本题考查了 continue和 break 语句用在循环语句中的作用。 break
36、语句的作用是结束本层循环,而 continue语句的作用是结束本次循环直接进入到下次循环。 35 【正确答案】 C 【试题解析】 定义 x时,初始值为十六进制数 48,先执行前置自减,再以十进制数 71输出。 36 【正确答案】 A 【试题解析】 转义字符, n表示换行, 表示反斜杠,函数 strlen()是计算字符串的长度,不包括文件结束标志 (0),函数 sizeof()统计字符串所占的字节数。 37 【正确答案】 C 【试题解析】 指针中存放的是变量的地址,指针也可以进行加减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中 p+6指的是将指针向后移动了 6个存储单元,
37、指向 a6,存放的是 a6的地址。 38 【正确答案】 C 39 【正确答案】 D 40 【正确答案】 D 【试题解析】 选项 A中 x4是取字符 e,也就是将字符复制到 y中, strcpy实现的是地址的复制所以选项 A错误;选项 B 中 y是错误的,不允许对常量进行自加运算 (y 是 个确定的地址值 ),所以选项 B 错误;选项 C指针变量 s指向了 y向后的第 5位,则存放 x时会出现越界问题,所以选项 C错误;选项 D中,指针变量 s指向了 y向后的第 位,此时 s可存放数据的长度为 9,而地址 “x 1”起的字符串的地址长度也刚好为 9(包括 “0”),所以开始复制不会出现地址越界问
38、题,故选项 D正确。 41 【正确答案】 B 【试题解析】 本题考查的是输入输出函数的使用, gets和 getchar 函数用于从标准输入设备终端读八字符串和字符,并非从磁盘文件读入, fputs用于把字符串输出到文件, fwrite用于以二进制形式输出数据到文件,故选项 B)描述错误。 42 【正确答案】 250。 【试题解析】 根据二叉树的性质:具有 n 个结点的完全二叉树,其父结点数为int(n 2),而叶子结点数等于总结点数减去父结点数。 43 【正确答案】 参照完整性 【试题解析】 关系模型的完整性规则包括实体完整性、参照完整性和自定义完整性。 44 【正确答案】 n/2 【试题解
39、析】 删除一个元素,平均移动的元素个数为 (n-1+n-2+0)/n=(n -1)/2:插入一个元素,平均移动元素个数为 (n+n-1+n-2+1)/n=(n+1)/2 ;所以 总体平均移动元素个数为 n/2。 45 【正确答案】 350 【试题解析】 在任意二叉树中,叶子结点总比度为 2的结点多一个。在完全二叉树中,最多有一个度为 1的结点。设一棵完全二叉树具有 n 个结点,若 n为偶数,则在该二叉树中有 n/2 个叶子结点以及 n/2-1个度为 2的结点,还有一个是度为 1的结点:若 n为奇数,则在该二叉树中有 n/2+1 个叶子结点以及 n/2 个度为 2的结点,没有度为 1的结点。 根
40、据题意,完全二叉树共有 700个结点, 700是偶数,所以,在该二叉树中有 350个叶子结点以及 349个度为 2 的结点,还有 一个是度为 1的结点。所以,本题的正确答案为 350。 46 【正确答案】 变换型 【试题解析】 典型的数据流图有两种,即变换型和事务型。 47 【正确答案】 白盒测试 【试题解析】 白盒测试的基本原则:保证所测模块中每一独立路径至少执行一次;保证所测模块所有判断的每一分支至少执行一次;保证所测模块每一循环都在边界条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性。 48 【正确答案】 5 5 【试题解析】 分析程序执行过程,第一次循环时, i=3, i=
41、5,因为 switch(3),所以执行 case 3,调用 P(a-i)=P(a4)=P(5),输出 5:第二次循环时, j=2, i=4,因为 switch(2),所以执行 case2,调用 P(ai+): P(a4)=P(5),输出 5,之后 i自加等于 5。 49 【正确答案】 从定义到本源文件结束 【试题解析】 C语言规定,宏名的有效范围为从定义宏到本源程序结束。 50 【正确答案】 m=4 k=4 i=5 k=5 【试题解析】 在主函数 main()中定义了一个变量 i,并赋初值 4,调用 fun()函数将 i的 初值传递给形参 m,进行 fun()函数后的运算,输出结果为 m=4,
42、 k=4。将 k值输出后自行增加 1, k=5,此时全局变量 k的值变为 5。主函数中调用 fun()函数后, i再自行增加 1, i=5,所以主函数输出的结果为 “i=5 k=5”。 51 【正确答案】 1f f 【试题解析】 Double类型输出是用 1f, float类型的数据输出用 f。 52 【正确答案】 3 【试题解析】 本题考查的是 C语言逗号表达式的相关知识。程序在计算逗号表达式时 ,从左到右计算由逗号分隔各表达式的值 ,整个逗号表达式 的值等于其中最后一个表达式的值。本题中 ,首先 i被赋值为 2,再自加 1,最后 i+的值计算为 3。 53 【正确答案】 struct no
43、de * 【试题解析】 本题中的结构类型名为 struct node,所以空白处应填 :struct node *,即定义一个指向自身的结构体指针。 54 【正确答案】 11110000 【试题解析】 按位异或运算的一个重要应用是让某个整型变量的二进制位取反,0变成 1,而 1变成 0。这只要设计这样一个位串信息,让要变反的位为 1,不要改变的位为 0,用这个位串信息与 整型变量按位加就能得到希望的结果。要使字节的高 4位取反,低 4位不变,则需要位串信息是 11110000。 55 【正确答案】 ASCII码 【试题解析】 C语言中,字符也可以进行比较运算,并且是按照其 ASCII码值进行的。 56 【正确答案】 x+ 1; 57 【正确答案】 m=fun(a,4)+fun(b, 4)-fun(a+b,3); 【试题解析】 函数 fun(x, n)的作用是求 x的 n 次方,因此 a的 4次方应该调用函数 fun(a,4), b 的 4次方应该调用函数 fun(b, 4), a+b的 3次方应该调用函数fun(a+b,3),所以题目中的数学表达式,写成 C程序中的语句为m=fun(a,4)+fun(b, 4)-fun(a+b,3)。