1、二级 C 语言分类模拟题 529 及答案解析(总分:47.50,做题时间:90 分钟)一、选择题(总题数:35,分数:47.50)1.在 C 语言中,char 型数据在内存中的存储形式为_。(分数:2.00)A.反码B.补码C.ASCII 码D.原码2.下列叙述中,正确的是_。(分数:1.00)A.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令3.有下列程序: #includestdio.h main() int a=6,b=7,m=1; switch(a%2) case 0:m+;break; cas
2、e 1:m+; switch(b%2) defaut:m+; case0:m+;break; printf(“%d/n“,m); 程序运行后的输出结果是 _ 。(分数:1.00)A.1B.2C.3D.44.下列合法的声明语句是_。(分数:1.00)A.int _abc=50;B.double int=3+5e2.5;C.long do=1L;D.float 3_asd=3e-3;5.以下选项中叙述正确的是_。(分数:1.00)A.char c1,c2,*c3,c440j;是合法的变量定义语句B.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式C.数组下标的下限可以是负值D.若有数组定
3、义 float array4;则语句 printf(“%f“,array3.12);是合法的6.有以下程序 main() int p8=(11,12,13,14,15,16,17,18),i=0,j=0; while(i+7)if(pi%2) j+=pi; printf(“%d/n“,j); 程序运行后的输出结果是_。(分数:1.00)A.42B.45C.56D.607.下列二维数组初始化语句中,不正确的是 _ 。(分数:1.00)A.int b2=1,2,3,4,5,6,7;B.int b35=0,0,0;C.intb4=1,2,3,4,5,6;D.int b32=(1,2) ,(3,4)
4、,(5,6) ;8.以下程序的输出结果是_。 试题程序#include stdio.h main() int i=2, p; p=f(i, i+1); printf(“% d/n“, p); int f(int a, int b) int c; c=a; if(ab) c=1; else if(a=b) c=0; else c=-1; return(c); (分数:1.00)A.-1B.0C.1D.29.假定 x 和 y 为 double 型,则表达式 x=2,y=x+3/2 的值是_。(分数:1.00)A.3.500000B.3C.2.000000D.3.00000010.以下叙述中正确的是
5、_。(分数:2.00)A.int * p1; int * * p2; int *p3;都是合法的定义指针变量的语句B.指针变量只能通过求地址运算符(与 p=/0;是等价的语句D.语句 p=NULL;执行后,指针 p 指向地址为 0 的存储单元11.定义无符号整数类为 UInt,下面可以作为类 UInt 实例化值的是_。(分数:2.50)A.-369B.369C.0.369D.整数集合1,2,3,4,512.若要通过位运算使整型变量 a 中的各位数字全部清零,以下选项正确的是_。(分数:1.00)A.a=aB.a=a|0;C.a=a0;D.a=!a;13.一个 C 语言程序是由_。(分数:2.0
6、0)A.一个主程序和若干子程序组成B.函数组成C.若干过程组成D.若干子程序组成14.下列程序段中完全正确的是_。(分数:1.50)A.int*p;scanf(“%d“,B.int*p;scanf(“%d“,p);C.int k,*p=scanf(“%d“,p);D.int k,*p;*p=scanf(“%d“,p);15.某二叉树有 5 个度为 2 的结点,则该二叉树中的叶子结点数是_。(分数:2.00)A.10B.8C.6D.416.设有以下程序段: struct person float weight; char sex; char name10; rec, *ptr; ptr= 从键盘
7、读入字符串给结构体变量 rec 的 name 成员,错误的输入语句是_。(分数:1.00)A.scanf(“%s“,rec-name);B.scanf(“%s“,rec.name);C.scanf(“%s“,(*ptr).name);D.scanf(“%s“,ptr-name);17.有以下程序 #includestdio.h int fun() static int x=1; x*=2; return x; main() int i, s=1; for(i=1; i=3; i+)s*=fun(); printf(“%d/n“, s); 程序运行后的输出结果是_。(分数:2.00)A.30B.
8、10C.0D.6418.若有定义语句:char str1=“string“,str28,*str3,str410=“string“;,库函数 strcpy 的功能是复制字符串,以下选项中错误的函数调用是_。(分数:1.00)A.strcpy(str3,“HELLO!“)B.strcpy(str2,“HELLO!“)C.strcpy(str1,“HELLO!“)D.strcpy(str4,“HELLO!“)19.已定义以下函数: int fun(int*p) return*p; fun 函数的返回值是_。(分数:1.00)A.一个整数B.不确定的值C.形参 p 中存放的值D.形参 p 的地址值2
9、0.在面向对象方法中,不属于“对象”基本特点的是_。(分数:1.00)A.一致性B.分类性C.多态性D.标识唯一性21.以下关于 C 语言数据类型使用的叙述中错误的是_。(分数:1.00)A.若只处理“真”和“假”两种逻辑值,应使用逻辑类型B.若要保存带有多位小数的数据,可使用双精度类型C.若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型D.整数类型表示的自然数是准确无误差的22.以下程序的结果是_。 int a,b; void fun() a=100;b=200; main() int a=5,b=7; fun(); printf(“%d%d/n“,a,b) ; (分数:1
10、.00)A.100200B.57C.200100D.7523.下面描述中,不属于软件危机表现的是_。(分数:2.50)A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高24.若有定义:int a; float b; double c;,程序运行时输入:a=1,b=2,c=3回车,能把值 1 输入给变量 a、值 2 输入给变量 b、值 3 输入给变量 c 的输入语句是_。(分数:1.00)A.scanf(“a=%d,b=%f,c=%lf“,B.scanf(“%d%f%lf“,C.scanf(“a=% d,b=% lf,c=%lf“,D.scanf(“a=%d,b=%
11、f,c=%f“,25.在关系数据库中,用来表示实体之间联系的是(分数:1.00)A.树形结构B.网状结构C.线性表D.二维表26.下列叙述中正确的是_。(分数:1.00)A.程序执行的效率与数据的存储结构密切相关B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上三种说法都不对27.以下数组定义中错误的是_。(分数:2.00)A.int x23=1, 2, 3, 4, 5, 6);B.int x3=0;C.int x3=1, 2, 3, 4, 5, 6;D.int x23=1, 2, 3, 4, 5, 6;28.设变量已正确定义并赋值,以下正确的表达式是_。
12、(分数:4.00)A.x=y+z+5, + +yB.int(15.8%5)C.x=y*5=x+zD.x=25%5.029.有以下程序 main() int a,b,d=25; a=d/10%9;b=a printf(“%d,%d/n“,a,b); 程序运行后的输出结果是_。(分数:1.00)A.6,1B.2,1C.6,0D.2,030.有以下程序: #include stdio.h main() int*p,x=100; p=x=*p+10; printf(“%d/n“,x); 程序运行后的输出结果是_。(分数:1.00)A.110B.120C.100D.9031.有以下程序: #includ
13、estdio.h main() int a=1,b=3,c=5; int * p1=a,*p2=b,*p=c; *p=*p1*(* p2); printf(“%d/n“,c); 程序执行后的输出结果是_。(分数:1.00)A.1B.2C.3D.432.以下说法正确的是_。(分数:1.00)A.由 3 种基本结构组成的结构化程序只能解决一些简单的问题B.由 3 种基本结构组成的结构化程序可以解决任何复杂的问题C.由 3 种基本结构组成的结构化程序只能解决那些可以结构化的问题D.由 3 种基本结构组成的结构化程序只能解决一些数学上有解析解的问题33.设某二叉树的前序序列为 ABC,中序序列为 CB
14、A,则该二叉树的后序序列为_。(分数:1.00)A.BCAB.CBAC.ABCD.CAB34.有以下程序 #includestdio.h main() FILE*fp; int a10=1,2,3,0,0,i; fp=fopen(“d2.dat“,“wb“); fwrite(a,sizeof(int),5,fp); fwrite(a,sizeof(int),5,fp); fclose(fp); tp=fopen(“d2.dat“,“rb“); fread(a,sizeof(int),10,fp); fclose(fp); for(i=0;i10;i+) printf(“%d,“,ai); 程序
15、的运行结果是_。(分数:1.00)A.1,2,3,0,0,1,2,3,0,0,B.1,2,3,1,2,3,0,0,0,0,C.123,0,0,0,0,123,0,0,0,0,D.1,2,3,0,0,0,0,0,0,0,35.设有如下函数定义: int fun(int k) if(k1) return 0; else if(k=1) return 1; else return fun(k-1)+1; 若执行调用语句:“n=fun(3);”,则函数 fun 总共被调用的次数是_。(分数:1.00)A.2B.3C.4D.5二级 C 语言分类模拟题 529 答案解析(总分:47.50,做题时间:90
16、分钟)一、选择题(总题数:35,分数:47.50)1.在 C 语言中,char 型数据在内存中的存储形式为_。(分数:2.00)A.反码B.补码C.ASCII 码 D.原码解析:2.下列叙述中,正确的是_。(分数:1.00)A.软件交付使用后还需要进行维护 B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令解析:3.有下列程序: #includestdio.h main() int a=6,b=7,m=1; switch(a%2) case 0:m+;break; case 1:m+; switch(b%2) defaut:m+; c
17、ase0:m+;break; printf(“%d/n“,m); 程序运行后的输出结果是 _ 。(分数:1.00)A.1B.2 C.3D.4解析:解析 本题考查 switch 语句。第一个 switch 语句,因为 a=6,a%2=0,所以执行 case0将 m 加1,遇到 break 语句跳出 switch 语句,结束循环。4.下列合法的声明语句是_。(分数:1.00)A.int _abc=50; B.double int=3+5e2.5;C.long do=1L;D.float 3_asd=3e-3;解析:解析 标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线。B 选
18、项int 不是表达变量类型的标识符,它不能再用做变量名和函数名。C 选项 do 是 C 语言的一个关键字。D 选项标识符只能以字母或下划线开始。5.以下选项中叙述正确的是_。(分数:1.00)A.char c1,c2,*c3,c440j;是合法的变量定义语句 B.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式C.数组下标的下限可以是负值D.若有数组定义 float array4;则语句 printf(“%f“,array3.12);是合法的解析:解析 A 选项正确定义了字符变量 c1、c2,字符型指针 c3,字符型一维数组 c440,A 选项正确。“”是下标运算符,“下标”可以是任
19、何非负整型数据,取值范围是 0(数据元素的个数-1)。在引用数组元素时,下标运算符内可以是常量也可以是变量或者表达式,B 选项错误。数组下标的下限不可以是负值,C 选项错误。数组下标必须是整型数据,3.12 为浮点数,故 D 选项错误。6.有以下程序 main() int p8=(11,12,13,14,15,16,17,18),i=0,j=0; while(i+7)if(pi%2) j+=pi; printf(“%d/n“,j); 程序运行后的输出结果是_。(分数:1.00)A.42B.45 C.56D.60解析:解析 本题程序中 while 循环的条件是 i+7,由于在循环体中没有改变 i
20、 的值,所以循环过程是 i 从初始值 0 开始,每次自加 1,当 i 为 7 再次进行循环条件判断时退出循环。而在循环体中,i 从 1到 7 变化。循环体是一个 if 语句,当 pi%2 为真,即 pi为奇数时执行 j+=pi。所以该段程序的实际效果是将 p1p7中的奇数累加到变量 j 中。所以 j=13+15+17=45,选 B。7.下列二维数组初始化语句中,不正确的是 _ 。(分数:1.00)A.int b2=1,2,3,4,5,6,7;B.int b35=0,0,0;C.intb4=1,2,3,4,5,6;D.int b32=(1,2) ,(3,4) ,(5,6) ; 解析:解析 在对二
21、维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取 0;C 语言规定,对于二维数组,只可以省略第 1 个方括号中的常量表达式,而不能省略第 2 个方括号中的常量表达式;赋的初值不能多于事先定义好的数组元素个数。 在选项 D)赋值表达式中对每一维的元素赋初值应用 ,而不是()。8.以下程序的输出结果是_。 试题程序#include stdio.h main() int i=2, p; p=f(i, i+1); printf(“% d/n“, p); int f(int a, int b) int c; c=a; if(ab) c=1; else if(a=b) c=0; else
22、c=-1; return(c); (分数:1.00)A.-1 B.0C.1D.2解析:解析 以上程序中定义了名为 f()的整型函数,它有两个 int 类型的形参。在 main()函数中调用了 f()函数,可以很直观地看到,实参的值分别是 2 和 3,2 传给函数形参 a,3 传给函数形参 b。函数返回的值赋给变量 p,main()函数中输出的值就是函数中的返回值。在函数 f()中,若 a 的值大于 b,c 被赋1;若 a 的值等于 b,c 被赋 0;若 a 的值小于 b,c 被赋-1。按照实参传送过来的值,a 的值小于 b,因此c 被赋-1,所以函数的返回值为-1。总结:本题中没有复杂的算法,
23、但读者必须熟练地掌握 if.else 分支结构的执行流程,同时建立清晰的有关函数定义和函数调用的基本概念,就可得出正确的答案。9.假定 x 和 y 为 double 型,则表达式 x=2,y=x+3/2 的值是_。(分数:1.00)A.3.500000B.3C.2.000000D.3.000000 解析:解析 在 x=2,y=x+3/2 中,3/2=1,2+1=3,因此表达式的值为 3,因为 x、y 为 double 型变量,故选择 D 选项。10.以下叙述中正确的是_。(分数:2.00)A.int * p1; int * * p2; int *p3;都是合法的定义指针变量的语句 B.指针变量
24、只能通过求地址运算符(与 p=/0;是等价的语句D.语句 p=NULL;执行后,指针 p 指向地址为 0 的存储单元解析:解析 B 选项描述不正确,指针变量可以通过求地址运算符(等价;D 选项中,语句 p=NULL;执行后,指针 p 并不是指向地址为 0 的存储单元,而是具有一个确定的值-“空”。因此 A选项正确。11.定义无符号整数类为 UInt,下面可以作为类 UInt 实例化值的是_。(分数:2.50)A.-369B.369 C.0.369D.整数集合1,2,3,4,5解析:解析 只有 B 选项 369 可以用无符号整数来表示和存储。A 选项-369 有负号,选项 C0.369 是小数,
25、它们都不能用无符号整数类存储。选项 D 是一个整数集合需要用数组来存储。12.若要通过位运算使整型变量 a 中的各位数字全部清零,以下选项正确的是_。(分数:1.00)A.a=a B.a=a|0;C.a=a0;D.a=!a;解析:解析 本题考查位运算符和位运算。“|”运算符,1|0=1,0|0=0,所以选项 B 中 a 变量的各位数字保持不变,故 B 选项错误;“”运算符,10=1,00=1,所以选项 C 中 a 变量的各位数字中,1 保持不变,0 变成 1,故 C 选项错误;“!”运算符,!1=0,!0=1,所以选项 D 中 a 变量的个位数字中,1 变成0,0 变成 1,故 D 选项错误;
26、“scanf(“%d“,B.int*p;scanf(“%d“,p);C.int k,*p=scanf(“%d“,p); D.int k,*p;*p=scanf(“%d“,p);解析:解析 A 选项中错在没有对指针进行初始化,无效指针,并且在 scanf(“%d“, char sex; char name10; rec, *ptr; ptr= 从键盘读入字符串给结构体变量 rec 的 name 成员,错误的输入语句是_。(分数:1.00)A.scanf(“%s“,rec-name); B.scanf(“%s“,rec.name);C.scanf(“%s“,(*ptr).name);D.scanf
27、(“%s“,ptr-name);解析:解析 题中声明了个结构类型 person 的同时,定义了 2 个结构变量,一个为 rec,另一个为指针变量 ptr。A 选项中,rec 是一个结构体变量,结构体变量访问结构成员的方式应该为:“rec.成员名“,这里用法错误,答案为 A 选项。17.有以下程序 #includestdio.h int fun() static int x=1; x*=2; return x; main() int i, s=1; for(i=1; i=3; i+)s*=fun(); printf(“%d/n“, s); 程序运行后的输出结果是_。(分数:2.00)A.30B.
28、10C.0D.64 解析:解析 第一次循环 fun 函数返回值为 2,第二次循环由于 x 是 static 类型,x 仍保留上次的值2,所以返回值为 4,第三次循环由于 x 是 static 类型,x 仍保留上次的值 4,所以返回值为 8,对三次返回值乘积值为 64,所以答案选择 D。18.若有定义语句:char str1=“string“,str28,*str3,str410=“string“;,库函数 strcpy 的功能是复制字符串,以下选项中错误的函数调用是_。(分数:1.00)A.strcpy(str3,“HELLO!“) B.strcpy(str2,“HELLO!“)C.strcp
29、y(str1,“HELLO!“)D.strcpy(str4,“HELLO!“)解析:解析 题目中字符指针 str3,没有为指针开辟内存,能作为函数参数,选择 A 选项。19.已定义以下函数: int fun(int*p) return*p; fun 函数的返回值是_。(分数:1.00)A.一个整数 B.不确定的值C.形参 p 中存放的值D.形参 p 的地址值解析:解析 返回值为指针变量指向的数据,该数据已被定义为整型。因此 A 选项正确。20.在面向对象方法中,不属于“对象”基本特点的是_。(分数:1.00)A.一致性 B.分类性C.多态性D.标识唯一性解析:解析 在面向对象方法中,对象的基本
30、特点包括:标识唯一性、分类性、多态性、封装性、模块独立性好。一致性不属于对象的基本特点,因此本题答案为 A。21.以下关于 C 语言数据类型使用的叙述中错误的是_。(分数:1.00)A.若只处理“真”和“假”两种逻辑值,应使用逻辑类型 B.若要保存带有多位小数的数据,可使用双精度类型C.若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型D.整数类型表示的自然数是准确无误差的解析:解析 C 语言不存在逻辑类型,所以 A 错误。单精度 float 类型可提供 6 位有效数字,双精度double 类型可提供 16 位有效数字,所以要保存带有多位小数的数据,要使用双精度类型,所以 B
31、选项正确。结构体类型可以保存不同类型数据,所以 C 正确,整数的表示是不存在误差的,所以 D 选项正确。22.以下程序的结果是_。 int a,b; void fun() a=100;b=200; main() int a=5,b=7; fun(); printf(“%d%d/n“,a,b) ; (分数:1.00)A.100200B.57 C.200100D.75解析:解析 全程变量是可以在于函数中对其值作改变,且它也可作为函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。23.下面描述中,不属于软件危机表现的是_。(分数:2.50)A.软件过程不规范
32、B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高解析:解析 软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。因此本题答案为 A。24.若有定义:int a; float b; double c;,程序运行时输入:a=1,b=2,c=3回车,能把值 1 输入给变量 a、值 2 输入给变量 b、值 3 输入给变量 c 的输入语句是_。(分数:1.00)A.scanf(“a=%d,b=%f,c=%lf“, B.scanf(“%d%f%lf“,
33、C.scanf(“a=% d,b=% lf,c=%lf“,D.scanf(“a=%d,b=% f,c=%f“,解析:解析 格式字符 d,输入十进制整数;格式字符 f,输入浮点数;格式字符 lf,输入双精度浮点数。除了格式说明字符和附加格式字符外,如果还有其他字符,则在输入数据时要求按照这些字符在一一对应的位置原样输入。程序运行时输入:a=1,b=2,c=3,则 scanf 函数格式控制串应该是“a=%d,b=%f,c=%lf”。25.在关系数据库中,用来表示实体之间联系的是(分数:1.00)A.树形结构B.网状结构C.线性表D.二维表 解析:解析 数据库中的关系模型是采用二维表来表示实体与实体
34、之间的联系。26.下列叙述中正确的是_。(分数:1.00)A.程序执行的效率与数据的存储结构密切相关 B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上三种说法都不对解析:解析 数据的存储结构、程序处理的数据量、程序的算法等都会影响程序执行效率。27.以下数组定义中错误的是_。(分数:2.00)A.int x23=1, 2, 3, 4, 5, 6); B.int x3=0;C.int x3=1, 2, 3, 4, 5, 6;D.int x23=1, 2, 3, 4, 5, 6;解析:解析 本题考核的知识点是二维数组的定义及初始化。在定义一个二维数组同时初始
35、化时,其第一维的长度可以省略。二维数组的初始化列表可以只使用一重花括号,其中的每个值依次代表从第 1 行的第 1 个元素起,直到第 1 行满,接着代表第 2 行、第 3 行的每一个元素,若第 1 维长度没有省略,则这些值总个数不得超过两个维度的乘积。故选项 D 是正确的。二维数组的初始化列表还可以使用二重花括号括起来,其中每一个内花括号代表一行的值,在内花括号中值的个数不得超过数组第二维的长度,若不足第 2 维长度,则该行多出部分值被初始化为 0,若第一维省略,花括号的个数代表行数。A 选项第一维为 2,故只有两行,但有三个花括号超出了行的要求,所以本题答案选 A。28.设变量已正确定义并赋值
36、,以下正确的表达式是_。(分数:4.00)A.x=y+z+5, + +y B.int(15.8%5)C.x=y*5=x+zD.x=25%5.0解析:解析 B 与 D 选项中取模运算符%的左右两个操作数均应为整数,所以 B、D 错误。C 选项中不能将x+y 的值赋给表达式 y*5,所以 C 错误。29.有以下程序 main() int a,b,d=25; a=d/10%9;b=a printf(“%d,%d/n“,a,b); 程序运行后的输出结果是_。(分数:1.00)A.6,1B.2,1 C.6,0D.2,0解析:解析 C 语言中,若/符号两边都为整数,则返回的是运算结果的整数部分。%是取余运
37、算,运算对象只能是整数,结果是两数相除后所得的余数,若运算量为负数,则结果的符号与被除数相同。因此,a=d/10%9=25/10%9=2%9=2。C 语言中没有专门的逻辑值,而是用整型值代替:非零整数表示逻辑真,零表示逻辑假;逻辑真的值为 1,逻辑假的值为 0。所以,b=a p=x=*p+10; printf(“%d/n“,x); 程序运行后的输出结果是_。(分数:1.00)A.110 B.120C.100D.90解析:解析 程序执行过程为:定义指针 p,指向变量 x,x=(* p)+10=110,输出 110,A 选项正确。31.有以下程序: #includestdio.h main() i
38、nt a=1,b=3,c=5; int * p1=a,*p2=b,*p=c; *p=*p1*(* p2); printf(“%d/n“,c); 程序执行后的输出结果是_。(分数:1.00)A.1B.2C.3 D.4解析:解析 该程序中 int*p1=a,*p2=b,*p=c;指定义三个指针变量,并赋值,即使 p1 指向a、p2 指向 b、p 指向 c。*p=*p1*(*p2);该条语句是给 p 所指的存储单元 c 赋值,就是 p1 所指的存储单元的值,即 a 的值,与 p2 所指的存储单元 b 的值相乘,也就是 c=a*b,等价于 c=1*3=3。因此 C 选项正确。32.以下说法正确的是_。
39、(分数:1.00)A.由 3 种基本结构组成的结构化程序只能解决一些简单的问题B.由 3 种基本结构组成的结构化程序可以解决任何复杂的问题 C.由 3 种基本结构组成的结构化程序只能解决那些可以结构化的问题D.由 3 种基本结构组成的结构化程序只能解决一些数学上有解析解的问题解析:解析 由 3 种基本结构组成的算法可以解决任何复杂的问题,由 3 种基本结构所构成的算法称为结构化算法,由 3 种基本结构所构成的程序称为结构化程序,故本题答案为 B 选项。33.设某二叉树的前序序列为 ABC,中序序列为 CBA,则该二叉树的后序序列为_。(分数:1.00)A.BCAB.CBA C.ABCD.CAB
40、解析:解析 二叉树遍历可以分为 3 种:前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。前序序列为 ABC,则 A 为根节点。中序序列为 CBA,则 C 和 B 均为左子树节点或右子树节点,且C 为 B 父节点,可知后序序列为 CBA,故 B 选项正确。34.有以下程序 #includestdio.h main() FILE*fp; int a10=1,2,3,0,0,i; fp=fopen(“d2.dat“,“wb“); fwrite(a,sizeof(int),5,fp); fw
41、rite(a,sizeof(int),5,fp); fclose(fp); tp=fopen(“d2.dat“,“rb“); fread(a,sizeof(int),10,fp); fclose(fp); for(i=0;i10;i+) printf(“%d,“,ai); 程序的运行结果是_。(分数:1.00)A.1,2,3,0,0,1,2,3,0,0, B.1,2,3,1,2,3,0,0,0,0,C.123,0,0,0,0,123,0,0,0,0,D.1,2,3,0,0,0,0,0,0,0,解析:解析 fwrite 函数将数组 a 写入文件,写入两遍,读出后为选项 A 的值,所以选择 A。35.设有如下函数定义: int fun(int k) if(k1) return 0; else if(k=1) return 1; else return fun(k-1)+1; 若执行调用语句:“n=fun(3);”,则函数 fun 总共被调用的次数是_。(分数:1.00)A.2B.3 C.4D.5解析:解析 此题考查简单的循环,当执行 n=fun(3)时,则函数 fun 执行 3 次。