1、二级 C语言笔试 357及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.下列程序的输出结果是( )。 #includestdio.h void main() int a=0,b=1,c=2; if(+a0+b0) +c; printf(“%d,%d,%d“,a,b,c); (分数:2.00)A.0,1,2B.1,2,3C.1,1,3D.1,2,22.字符串“/“ABCDEF/“/“的长度是( )。(分数:2.00)A.15B.10C.7D.83.下列程序的输出结果是( )。 point(char*pt); main() char b4
2、= a,c,s,f ,*pt=b; pt=point(pt); printf(“%c/n“,*pt); point(char*p) p+=3; return p; (分数:2.00)A.sB.cC.fD.a4.下列关于栈的描述中错误的是( )。(分数:2.00)A.栈是先进先出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针5.若有下列说明和语句,则对结构体变量 st中成员 i的引用方式不正确的是( )。 Struct stu int i; int name; st,*p; p=(分数:2.00)A.siB.*iC.(*.iD.p-i6.已有定义 in
3、t(*q)(),指针 q可以( )。(分数:2.00)A.指向函数的入口地址B.代表函数的返回值C.表示函数的类型D.表示函数返回值的类型7.有下列程序: fun(int x) int p; if(x= =0 x= =1) return(3); p=x-fun(x-2); return p; main( ) print f(“%d/n“,fun(7 ); 执行后输出的结果是( )。(分数:2.00)A.7B.3C.2D08.下列不属于软件工程的 3个要素的是( )。(分数:2.00)A.工具B.过程C.方法D.环境9.定义下列结构体(联合)数组: struct st char name15;
4、int age; a10=“ZHAO“,14, “WANG“,15, “LIU“,16, “ZHANG“,17 ; 执行语句 printf“%d,%c“,a2.age, *(a3.name+2)的输出结果为( )。(分数:2.00)A.15, AB.16, HC.16, AD.17, H10.对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。(分数:2.00)A.125B.n/2C.nD.n+111.下列选项中,值为 1的表达式是( )。(分数:1.00)A.1-0B.1-/0C.1-0D./0-012.设计软件结构是在软件生命周期的( )。(分数:1.00)A.软件定义期
5、B.软件开发期C.软件维护期D.以上 3个都不是13.利用 fseek函数可实现的操作是( )。(分数:1.00)A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确14.下列叙述中错误的是( )。(分数:1.00)A.一种数据的逻辑结构可以有多种存储结构B.数据的存储结构与数据的处理效率无关C.数据的存储结构与数据的处理效率密切相关D.数据的存储结构在计算机中所占的空间不一定是连续的15.若有运算符: 、*=、%、sizeof,则它们按优先级(由低至高)的正确排列次序为( )。(分数:1.00)A.*= % sizeofB. *= % sizeofC.%= s
6、izeof %D.*= % sizeof16.有下列程序: main() int x=5; do printf(“%d“,x-=4); while(!(-x); 程序的输出结果是( )。(分数:1.00)A.1B.20C.1 4D.死循环17.有下列二叉树,对此二叉树中序遍历的结果为( )。 (分数:1.00)A.BDYEACFXZB.DYBEAFCZXC.ABCDEFXYZD.ABDYECFXZ18.下列程序的输出结果是( )。 #includestdio.h main() int a=4; print f(“%d/n“,(a+=a-=a*a);(分数:1.00)A.-8B.14C.0D.-
7、2419.下列说法正确的是( )。(分数:1.00)A.一个 C程序可以有多个主函数B.一个 C语言的函数中只允许有一对花括号C.C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内D.在对 C程序进行编译时,可以发现注释行中的拼写错误20.表示关系 abc 的 C语言表达式为( )。(分数:1.00)A.(a= while(x+!=(y-=1) a+=1; if(yx)break; printf(“%d,%d,%d/n“,x,y,a); (分数:2.00)A.2,3,2B.2,3,1C.1,3,3D.3,1,222.下列选项中不会引起二义性的宏定义是( )。(分数:2.00)A
8、.#define S( X*XB.#define S(*(C.#define S(x*D.#define S(*()23.若有下列定义,则对 a数组无素地址的正确引用是( )。 int a5,*p=a;(分数:2.00)A.p+5B.*a+1C.“,则正确的输入语句是( )。(分数:2.00)A.scanf(“%1f“,;B.scanf(“%f“,&;C.scanf(“%1f“,26.若变量已正确定义,下列正确的程序段是( )。(分数:2.00)A.while(ch=getchar()=/N)putchar(c;B.while(ch=getchar()=/n)putchar(c;C.while
9、(ch=getchar()!=/N)putchar(c;D.while(ch=getchar()!=/n)putchar(c;27.下列叙述中正确的是( )。(分数:2.00)A.在模块化程序设计中,一个模块应该尽量多的包括与其他模块联系的信息B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的第一个细节C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法28.下列程序的输出结果是( )。 #includestdio.h #includestring.h main() char a=“/n123/“; p
10、rintf(“%d,%d/n“,strlen(a),sizeof(a); (分数:2.00)A.5,6B.5,5C.6,6D.6,529.执行语句 printf(“%u/n“, +12345)的输出结果是( )。(分数:2.00)A.12345B.0C.-1D.非定值30.下列叙述中错误的是( )。(分数:2.00)A.线性表是由 n个元素组成的一个有限序列B.线性表是一种线性结构C.线性表的所有结点有且仅有一个前件和后件D.线性表可以是空表31.设有下列语句 int a=1,b=2,c; c=a(b2); 执行后,C 的值为( )。(分数:2.00)A.6B.7C.8D.932.若有定义:“
11、int a23;“则对 a数组的第 i行第 j列无素的正确引用为( )。(分数:2.00)A.*(*(a+B.(a+C.*(a+i+D.*(a+j33.有下列程序: #include stdio.h main( ) char c1,c2,c3,c4,c5,c6; scanf(“%c%c%c%c“, c5=getchar(); c6=getchar(); putchar(c1);putchar(c2); printf(“%c%c/n“,c5,c6); 程序运行后,若从键盘输入(从第 1列开始) 123CR 45678CR 则输出结果是( )。(分数:2.00)A.1267B.1256C.1278
12、D.124534.在 C语言中,下列关于文件操作的叙述正确的是( )。(分数:2.00)A.对文件操作必须先关闭文件B.对文件操作必须先打开文件C.对文件操作顺序没有统一规定D.以上全错35.下列特征中不是面向对象方法的主要特征的是( )。(分数:2.00)A.多态性B.继承C.封装性D.模块化36.若 a、b、c、d 都是 int型变量且都已经正确赋初值,则下列不正确的赋值语句是( )(分数:2.00)A.a+d;B.a+;C.a=b=c=d=100;D.a=(b=3)+(d=5);37.下列选项中,当 x为大于 1的奇数时,值为 0的表达式是( )。(分数:2.00)A.x%2=1B.x/
13、2C.x%2!=0D.x%2=038.有以下程序: #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+; case0:m+;break; printf(“%d/n“,m); (分数:2.00)A.1B.2C.3D.439.下列程序的输出结果是( )。 #includestdio.h int fun(int x) int p; if(x=0x=1) return 3; else p=x-fun(x-2); return p; void main
14、() print f(“/n%d“, fun(5); (分数:2.00)A.5B.3C.7D.140.下列叙述中不正确的是( )。(分数:2.00)A.在 C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B.在 C的函数中,最好使用全局变量C.外部变量可以在函数之间传递数据D.自动变量实质上是一个函数内部的局部变量二、B填空题/B(总题数:15,分数:30.00)41.算法的复杂度主要包括时间复杂度和 1 复杂度。(分数:2.00)填空项 1:_42.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于 1。(分数:2.00)填空项 1:_43.树中度为零的结点称为
15、1。(分数:2.00)填空项 1:_44.在面向对象方法中,类之间共享属性和方法的机制称为 1。(分数:2.00)填空项 1:_45.软件是程序、数据和 1 的集合。(分数:2.00)填空项 1:_46.若 x和 a均是 int型变量,则计算完 x=(a=4,6*2)后的 x值为 1。(分数:2.00)填空项 1:_47.若 a是 int型变量,则下列表达式的值为_。 (a=2*3,a*2),a+4(分数:2.00)填空项 1:_48.下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空。 int n=0,c; c=getchar(); while(c!=/n) if(_
16、) n+; (分数:2.00)填空项 1:_49.下列程序的运行结果是_。 #includestdio.h main() int a,b,c,n; a=2;b=0;c=1;n=1; while(n=3) c=c*a;b=b+c;+n; printf(“b=%d“,b); (分数:2.00)填空项 1:_50.下列程序的输出结果是_。 main() int i=0,a=0; while(i20) for(; ) if(i%10)=0)break; else i-; i+=11; a+=i; printf(“%d/n“,a); (分数:2.00)填空项 1:_51.下列程序的运行结果是_。 #in
17、cludestdio.h long func(int x) long p; if(x=0x=1) return(1); p=x*func(x-1); return(p); main() printf(“%d/n“, func(4); (分数:2.00)填空项 1:_52.下列程序将二维数组 a的行和列元素互换后存放到另一个二维数组 b中。请填空。 main() int a23= 1,2,3,4,5 , b32,i,j; for(i=0;i2;i+) for(j=0; j3;j+) (分数:2.00)填空项 1:_53.下列程序的运行结果是_。 #includestdio.h main() in
18、t fun(); fun(); fun() static int a4= 1,2,3,4; int i; for(i=0;i4;i+) ai+=ai; for(i=0;i4;i+) print f(“%d,“,ai ); printf“/n“); (分数:2.00)填空项 1:_54.设有下列程序: #includestdio.h #includestring.h main() int i; char s10,t10; gets(t); for(i=0;i2;i+) gets(s); if(strcmp(t,s)0)strcpy(t,s); print f(“%s/n“,t); 程序运行后,从
19、键盘上输入(CR代表回车符): DEFCRBADEFCRQTHRGCR,则程序的输出结果是_。(分数:2.00)填空项 1:_55.下列程序的运行结果是_。 #define P(a) printf(“%d “,a) main() int j,a= 1,2,3,4,5,6,7,i=5; for(j=3;jl ;j-) switch(j) case 1: case 2: P(ai+); break; case 3: P(a-i); (分数:2.00)填空项 1:_二级 C语言笔试 357答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.下列程
20、序的输出结果是( )。 #includestdio.h void main() int a=0,b=1,c=2; if(+a0+b0) +c; printf(“%d,%d,%d“,a,b,c); (分数:2.00)A.0,1,2B.1,2,3C.1,1,3 D.1,2,2解析:解析 本题考查 if语句。先判断 if语句的条件是否成立,+a=10,此条件成立,又因为是进行逻辑或运算,在已知其中一个运算对象为真的情况下,不必判断另外一个运算符的真假,即不进行+b操作,就可以直接得出整个表达式的值为逻辑 1,执行下列的+c。2.字符串“/“ABCDEF/“/“的长度是( )。(分数:2.00)A.1
21、5B.10 C.7D.8解析:解析 本题涉及字符串最基本的两个概念:字符串的长度是指字符串中字符的个数,但不包括字符串结束符;以反斜杠“/”开头的特殊字符序列,意思是把反斜杠后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,“/”连同后面的字符为一个长度。3.下列程序的输出结果是( )。 point(char*pt); main() char b4= a,c,s,f ,*pt=b; pt=point(pt); printf(“%c/n“,*pt); point(char*p) p+=3; return p; (分数:2.00)A.sB.cC.f D.a解析:解析 本题考
22、查函数调用时的参数传递。函数 point的参数为字符指针,当执行函数 point时,刚开始指针 p指向“a”,经过+3 操作后,指针 p指向“f”所以最后的输出结果是 f。4.下列关于栈的描述中错误的是( )。(分数:2.00)A.栈是先进先出的线性表B.栈只能顺序存储 C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针解析:解析 栈是限定只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。5.若有下列说明和语句,则对结构体变量 st中成员 i的引用方式不正确的是( )。 Stru
23、ct stu int i; int name; st,*p; p=(分数:2.00)A.siB.*i C.(*.iD.p-i解析:解析 本题主要考查结构指针:p= if(x= =0 x= =1) return(3); p=x-fun(x-2); return p; main( ) print f(“%d/n“,fun(7 ); 执行后输出的结果是( )。(分数:2.00)A.7B.3C.2 D0解析:解析 因为在函数 fun(int x)中,如果参数 x等于 0或 1时,返回值 3。否则 p=x-fun(x-2)这是一个递归函数,所以在主函数调用 fun(7)时,其过程为: “fun(7)=7
24、-fun(5)=7-(5-fun(3)=7-(5-(3-fun(1)=7-(5-(3-3)=7-5=2“,所以最后的输出结果为 2。8.下列不属于软件工程的 3个要素的是( )。(分数:2.00)A.工具B.过程C.方法D.环境 解析:解析 软件工程包括 3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制、管理。9.定义下列结构体(联合)数组: struct st char name15; int age; a10=“ZHAO“,14, “WANG“,15, “LIU“,16, “ZHANG“,17 ; 执行语句
25、 printf“%d,%c“,a2.age, *(a3.name+2)的输出结果为( )。(分数:2.00)A.15, AB.16, HC.16, A D.17, H解析:解析 本题主要考查结构体数组。a2.age 为结构体 a2的 age成员,即 160 a3.name为指向结构体 a3的 name成员的第一个元素的指针,即指向“Z”,(a3.name+2)将指针后移两位指向第三个元素“A”,*(a3).name+2)是取指针所指向地址的内容。10.对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。(分数:2.00)A.125B.n/2C.n D.n+1解析:解析 对线性
26、表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。11.下列选项中,值为 1的表达式是( )。(分数:1.00)A.1-0B.1-/0 C.1-0D./0-0解析:解析 在 C程序中,字符量可参与任何整数运算。字符参与运算时,首先要将字符转换为对应的ASC II码值再参与整数运算。字符 1对应的 ASC II码值是 49,字符0对应的 ASC II码值是 48,字符/0是字符串结束标识符 NULL
27、,其对应的 ASC II码值是 0。12.设计软件结构是在软件生命周期的( )。(分数:1.00)A.软件定义期B.软件开发期 C.软件维护期D.以上 3个都不是解析:解析 设计软件结构是在软件概要设计阶段进行的,而概要设计属于软件开发期。13.利用 fseek函数可实现的操作是( )。(分数:1.00)A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确 解析:解析 改变文件位置指针函数 fseek()的功能是:改变文件的位置指针;辅助实现文件的顺序读写;辅助实现文件的随机读写。14.下列叙述中错误的是( )。(分数:1.00)A.一种数据的逻辑结构可以有多种
28、存储结构B.数据的存储结构与数据的处理效率无关 C.数据的存储结构与数据的处理效率密切相关D.数据的存储结构在计算机中所占的空间不一定是连续的解析:解析 数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构。顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的。数据的存储结构与数据的处理效率密切相关。15.若有运算符: 、*=、%、sizeof,则它们按优先级(由低至高)的正确排列次序为( )。(分数:1.00)A.*= % sizeofB. *= % sizeofC.%= sizeof %D.*= % sizeof 解析:解析
29、 本题主要考查算术运算的优先级。顺序如下; 16.有下列程序: main() int x=5; do printf(“%d“,x-=4); while(!(-x); 程序的输出结果是( )。(分数:1.00)A.1B.20C.1 4 D.死循环解析:解析 本题考查 dowhile循环。执行 printf语句,x=x-4 1,输出 1,判断 while循环的控制条件,-x=0,则(!(-x)非零,循环条件成立,执行下一次循环;执行 printf语句,x=x-4=-4,输出-4,判断 while循环的控制条件,-x=-5,则(!(-x)为零,循环条件不成立,结束循环。17.有下列二叉树,对此二叉树
30、中序遍历的结果为( )。 (分数:1.00)A.BDYEACFXZB.DYBEAFCZX C.ABCDEFXYZD.ABDYECFXZ解析:解析 对二叉树的中序遍历是指:首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,注意依旧按照“左子树根结点右于树”的顺序。本题的遍历顺序是这样的; 首先访问左子树:BDEY;在左子树 BDEY中,也按中序遍历,先访问左于树 DY;在左子树 DY中,也按中序遍历,先访问左子树,左子树没有,则访问根结点 D,然后访问右子树 Y;接着访问根 B,再访问右子树 E;访问左子树 BDEY后,接着访问根结点 A,接着访问右于树 CFXZ:右子树 CF
31、XZ的访问顺序同理可得:FCZX。18.下列程序的输出结果是( )。 #includestdio.h main() int a=4; print f(“%d/n“,(a+=a-=a*a);(分数:1.00)A.-8B.14C.0D.-24 解析:解析 表达式 a+=a-=a*a看起来复杂,其实将它分成两个表达式来计算就简单了:第一个表达式(a-=a*a)=(a-a-a*a=-2):第二个表达式(a+=a-=a*a)=(a=a+a=-24)。19.下列说法正确的是( )。(分数:1.00)A.一个 C程序可以有多个主函数B.一个 C语言的函数中只允许有一对花括号C.C程序的书写格式是自由的,一个
32、语句可以写在一行上,也可以写在多行内 D.在对 C程序进行编译时,可以发现注释行中的拼写错误解析:解析 本题涉及 C语言基本的 3个知识点,C 语言规定一个程序只允许有一个主函数,一个函数内可以允许有多个花括号;C 语言的标识符是由字母、数字、下画线组成的,可以是大写字母,而且标识符区分字母的大小写:C 程序的注释部分仅仅是方便程序员阅读,提高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释行中的错误。20.表示关系 abc 的 C语言表达式为( )。(分数:1.00)A.(a= while(x+!=(y-=1) a+=1; if(yx)break; printf(“%
33、d,%d,%d/n“,x,y,a); (分数:2.00)A.2,3,2B.2,3,1C.1,3,3D.3,1,2 解析:解析 本题考查 while循环。第一次循环,先拿 x的值和(y-1)比较,此时 x=1,y-1-2,循环条件成立,比较完将 x的值加 1,此时 x=2,进入循环,a-a+1=1,判断 if语句的控制条件是否成立,yx不成立,接着执行下一次循环。第二欲循环,先拿 x的值和(y-1)比较,此时 x-2,y-1=1,循环条件成立,比较完将 x的值加 1,此时 x=3,进入循环,a=a+1=2,判断 if语句的控制条件是否成立,yx 成立,执行 break语句退出循环。22.下列选项
34、中不会引起二义性的宏定义是( )。(分数:2.00)A.#define S( X*XB.#define S(*(C.#define S(x*D.#define S(*() 解析:解析 本题考查带参数的宏的替换。有些参数表达式必须加括号,否则,在实参表达式替换时,会出现错误。23.若有下列定义,则对 a数组无素地址的正确引用是( )。 int a5,*p=a;(分数:2.00)A.p+5B.*a+1C.“,则正确的输入语句是( )。(分数:2.00)A.scanf(“%1f“,;B.scanf(“%f“,&;C.scanf(“%1f“, 解析:解析 函数 scanf()的调用形式是:scanf(
35、格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。 本题中定义变量 a为双精度型变量,双精度变量的格式符为“1e”;变量的地址用取地址符“B.while(ch=getchar()=/n)putchar(c;C.while(ch=getchar()!=/N)putchar(c;D.while(ch=getchar()!=/n)putchar(c; 解析:解析 本题考查两个知识点:C 语言用/n这个字符常量表示换行;函数 getchar()的作用是从终端输入一个字符,当遇到换行时结束输入。27.下列叙述中正确的是( )。(分数:2.00)
36、A.在模块化程序设计中,一个模块应该尽量多的包括与其他模块联系的信息B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的第一个细节C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则 D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法解析:解析 在模块化程序设计中,模块之间的联系可以通过程序的控制结构来实现,在自顶向下、逐步细化的设计过程中,首先要考虑全局目标,而不是细节。在程序设计中模块化和结构化可以同时使用,一个模块的内部结构也要符合结构化设计原则。28.下列程序的输出结果是( )。 #includestdio.h #includestring.h
37、main() char a=“/n123/“; printf(“%d,%d/n“,strlen(a),sizeof(a); (分数:2.00)A.5,6 B.5,5C.6,6D.6,5解析:解析 转义字符/n表示换行,/表示反斜杠,函数 strlen()是计算字符串的长度,不包括文件结束标志(/0),函数 sizeof()统计字符串所占的字节数。29.执行语句 printf(“%u/n“, +12345)的输出结果是( )。(分数:2.00)A.12345 B.0C.-1D.非定值解析:解析 “%u”表示输出无符号的整数(注意:如果输出值前有符号,将自动转化为相应的无符号数输出)。30.下列叙
38、述中错误的是( )。(分数:2.00)A.线性表是由 n个元素组成的一个有限序列B.线性表是一种线性结构C.线性表的所有结点有且仅有一个前件和后件 D.线性表可以是空表解析:解析 线性表是一种线性结构,由 n(n0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项 C)是错误的。31.设有下列语句 int a=1,b=2,c; c=a(b2); 执行后,C 的值为( )。(分数:2.00)A.6B.7C.8D.9 解析:解析 变量 b的初值等于 2,所以表达式 b2 表示 b的值二进制左移两位,即扩大 4倍,所
39、以变量 b的等于 8。然后与 a的值 1进行异或运算,得 9。32.若有定义:“int a23;“则对 a数组的第 i行第 j列无素的正确引用为( )。(分数:2.00)A.*(*(a+ B.(a+C.*(a+i+D.*(a+j解析:解析 本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有下列 5种: aij; *(ai+j); *(*(a+i)+j); *(ai)j; *( scanf(“%c%c%c%c“, c5=getchar(); c6=getchar(); putchar(c1);putchar(c2); printf(“%c%c/n“,c5,c6); 程序运行后,若
40、从键盘输入(从第 1列开始) 123CR 45678CR 则输出结果是( )。(分数:2.00)A.1267B.1256C.1278D.1245 解析:解析 当用 scanf函数从键盘愉入数据时,每行数据的末尾按下回车键(Enter 键)之前,可以任意修改。但按下回车键 putchar(c1)(Enter键)之后,scanf 函数即接受了这一行数据,不能再回去修改。所以本题中,当输入 123CR时,变量 c1、c2、c3 的值分别为 1、2、 3,当输入 45678CR时,变量 c5、c6 的值 4和 5。所以用输出函数 putchar(c1)输出 1,putchar(c2)输出 2,prin
41、tf(“%c%c/n,c5,c6)输出 45。所以选项 D)为正确答案。34.在 C语言中,下列关于文件操作的叙述正确的是( )。(分数:2.00)A.对文件操作必须先关闭文件B.对文件操作必须先打开文件 C.对文件操作顺序没有统一规定D.以上全错解析:解析 本题考查对文件的操作。文件打开后才可以对文件进行操作,使用结束后要关闭文件。对文件的操作都是顺序读写,即从文件的第一个数据开始,依次进行读写。35.下列特征中不是面向对象方法的主要特征的是( )。(分数:2.00)A.多态性B.继承C.封装性D.模块化 解析:解析 面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界
42、的概念抽象地思考问题从而自然地解决问题其特点包括:分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。36.若 a、b、c、d 都是 int型变量且都已经正确赋初值,则下列不正确的赋值语句是( )(分数:2.00)A.a+d; B.a+;C.a=b=c=d=100;D.a=(b=3)+(d=5);解析:解析 C 语言规定,赋值号的右边可以是一个赋值表达式,因此选项 C)、选项 D)正确;在选项 B)中,a+是一个自加 1的表达式,a 被重新赋值,因此它是一个合法的赋值表达式:选项 A)中,a+d 是一个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因
43、此它不是一条赋值语句。37.下列选项中,当 x为大于 1的奇数时,值为 0的表达式是( )。(分数:2.00)A.x%2=1B.x/2C.x%2!=0D.x%2=0 解析:解析 因为 x的值为大于 1的奇数,所以 x除以 2的余数等于 1。所以选项 D)等于关系表达式的结果为假,即等于 0。38.有以下程序: #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+; case0:m+;break; printf(“%d/n“,m); (分数:2.
44、00)A.1B.2 C.3D.4解析:解析 本题考查 swish语句。第一个 switch语句,因为 a=6,a%2=0,所以执行 case 0,将 m加1,遇到 break语句跳出 switch语句,结束循环。39.下列程序的输出结果是( )。 #includestdio.h int fun(int x) int p; if(x=0x=1) return 3; else p=x-fun(x-2); return p; void main() print f(“/n%d“, fun(5); (分数:2.00)A.5 B.3C.7D.1解析:解析 本题考查函数的递归调用。在函数递归调用时,fun
45、(5):a=5-fun(3)-fun3=a=3-fun(1)-fun(1):a-3,反推回去 fun(3):a=3-3=0-fun(5):a=5-0=5,最后的计算结果为 5。40.下列叙述中不正确的是( )。(分数:2.00)A.在 C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B.在 C的函数中,最好使用全局变量 C.外部变量可以在函数之间传递数据D.自动变量实质上是一个函数内部的局部变量解析:解析 编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其
46、分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。二、B填空题/B(总题数:15,分数:30.00)41.算法的复杂度主要包括时间复杂度和 1 复杂度。(分数:2.00)填空项 1:_ (正确答案:空间)解析:解析 衡量一个算法的复杂度有两个指标:时间复杂度和空间复杂度。前者用来衡量执行算法时所需要的计算工作量,而后者用来衡量执行算法所需要的存储空间。42.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于 1。(分数:2.00)填空项 1:_ (正确答案:线性结构)解析:解析 数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。43.树中度为零的结点称为 1。(分数:2.00)填空项 1:_ (正确答案