1、二级 C语言笔试-186 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.有以下程序:int fun(int n)if(n=1)return 1;else return(n+fun(n-1);main()int x;scanf(“%d“, x); x=fun(x); printf(“%d/n“, x);执行程序时,给变量 X输入 10,程序的输出结果是( )。(分数:2.00)A.55B.54C.65D.452.有以下程序:main()int i, n=0;for(i=2; i5; i+)doif(i%3) continue;n+;whil
2、e(! i);n+;printf(“n=%d/n“, n);程序执行后输出结果是( )。(分数:2.00)A.n=5B.n=2C.n=3D.n=43.定义结构体数组:struct stuint num;char name20;X5=1,“LI“, 2, “ZHAO“, 3, “WANG“, 4, “ZHANG“, 5, “LIU“);for(i=1; i5; i+)printf(“%d%c“, xi. num, xi.name2);以上程序段的输出结果为( )。(分数:2.00)A.2A3N4A5UB.112A3H4IC.1A2N3A4UD.2H3A4H5I4.以下程序的输出结果是( )。ma
3、in()int a=3;printf(“%d/n“, (a+a-=a*a);(分数:2.00)A.-6B.12C.0D.-125.有以下程序:main()int x=102, y=012;printf(“%2d, %2d/n“, x, y);执行后输出结果是( )。(分数:2.00)A.10,01B.02,12C.102,10D.02,106.以下程序的输出结果是( )。union myunstructint x, y, z; )u;int k;a;main()a. u. x=4; a.u.y=5; a.u.z=6;a.k=0:printf(%d/n“, a.u.x);(分数:2.00)A.4
4、B.5C.6D.07.若希望下列的程序运行后输出 25,程序空白处的正确选项是( )。main()int id=50,a=7, 4, 10, 5, 8;for( )j+=ai;printf(“%d“, j-40);(分数:2.00)A.i=1; i4; +iB.i=1; i3; +iC.i=4; i2; i=D.i=2; i4; +i8.若二维数组 a有 m列,则在 aij前的元素个数为( )。(分数:2.00)A.i*m+j-1B.i*m+jC.j*m+iD.i*m+j+19.结构化程序设计主要强调的是( )。(分数:2.00)A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易
5、读性10.以下程序的输出结果是( )。main()char wE10=“ABCD“, “EFGH“, “IJKL“, “MNOP“, K;for(k=1; k3; k+)printf(“%s/n“, wk);(分数:2.00)A.ABCDFGHKLB.ABCDEFGIJC.EFGJKOD.EFGHIJKL11.若有以下定义和语句:“double r=99,*p=r; *p=r; ”,则以下正确的叙述是( )。(分数:1.00)A.两个*p 含义相同,都说明给指针变量 p赋值B.在“double r=99,*p=r; ”中,把 r的地址赋值给了 P所指的存储单元C.语句“*p=r;”把变量 r的
6、值赋给指针变量 pD.语句“*p=r;”取变量 r的值放回 r中12.以下程序的输出结果是( )。main()char*s=“12134211“;int v4=0, 0, 0, 0), k, i;for(k=0;sk; k+)switch(sk)case1: i=0;case2: i=1;case3: i=2;case4: i=3; )vi+;for(k=0; k4; k+)printf(“%d“, vk);(分数:1.00)A.4 2 1 1B.0 0 0 8C.4 6 7 8D.8 8 8 813.在面向对象方法中,( )描述的是具有相似属性与操作的一组对象。(分数:1.00)A.属性B.
7、事件C.方法D.类14.有以下程序:void fun(char *a, char*b)a=b; (*a)+; main()char c1=A, c2=a,*p1, *p2;p1=c1; p2=*c2; fun(p1, p2);print(“%c 9/6c/n“, c1, c2);程序运行后的输出结果是( )。(分数:1.00)A.AbB.aaC.AaD.Bb15.下列程序的输出结果是( )。void fun(int*x, int y)printf(“%d%d“, *x, “y); *x=3; *y=4; )main()int x=1, y=2; fun(y, x);printf(“%d%d“,
8、 x, y);(分数:1.00)A.2 1 4 3B.1 2 1 2C.1 2 3 4D.2 1 1 216.下列选项中非法的字符常量是( )。(分数:1.00)A./tB./039C.,D./n17.有以下程序:main()int x=0, y=5, z=3;while(z-O +x5)y=y-1;printf(“%d, %d, %d/n“, x, y, z);程序执行后的输出结果是( )。(分数:1.00)A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-518.在下列给出的表达式中,与 while(E)中的(E)不等价的表达式是( )。(分数:1.00)A.(!E=0)B.(
9、E0|E0)C.(E=0)D.(E!=0)19.常采用的两种存储结构是( )。(分数:1.00)A.顺序存储结构和链式存储结构B.散列方法和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构20.有以下程序段:int x=3;doprintf(“%d“, x-=2); while(!(-x);其输出结果是( )。(分数:1.00)A.1B.3 0C.1 -2D.死循环21.以下有 4组用户标识符,其中合法的一组是( )。(分数:2.00)A.FOrSubCaseB.4dDOSizeC.f2_G3IFabcD.WORDVOiddefine22.用链表表示线性表的优点是( )。(分数:
10、2.00)A.便于随机存取B.花费的存储宅间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序与逻辑顺序相同23.有以下程序:main()char a=a, b;printf(“%c,“, +a);printf(“%c/n“, b=a+);程序运行后的输出结果是( )。(分数:2.00)A.b,bB.b,CC.a,bD.a,c24.当 c的值不为 0时,在下列选项中不能正确将 c的值赋给变量 a、b 的是( )。(分数:2.00)A.c=b=a;B.(a=c)|(b=c);C.(a=c)(b=c);D.a=c=b;25.设 int x=7,则x 的值是( )。(分数:2.00)A.-8B
11、.7C.-1D.126.算法分析的目的是( )。(分数:2.00)A.找出数据结构的合理性B.找出算法中输入和输出之间的关系C.分析算法的易懂性和可靠性D.分析算法的效率以求改进27.C语言的基本单位是( )。(分数:2.00)A.函数B.过程C.子程序D.子函数28.以下程序的输出结果是( )。main()int x=0.5;char z=a;printf(“%d/n“, (x1)(zz); (分数:2.00)A.0B.1C.2D.329.能正确表示“当 x的取值在1,10和100,110范围内为真,否则为假”的表达式是( )。(分数:2.00)A.(x=1)(xB.(x=1)(x=10)(
12、x=100)(x=110)C.(x=1)(x=10)(x=100)(x=110)D.(x=1)(x=10)(x=100)(x=110)30.语句:“printf(“%d“, (a=2)(b=-2);”的输出结果是( )。(分数:2.00)A.无输出B.结果是不确定C.-1D.131.有以下程序:void f(int x, int y)int t;if(xy)t=x; x=Y; y=t; main()int a=4, b=3, c=5;f(a, b); f(a, c); f(b, c);print(“%d, %d, %a/n“, a, b, c);执行后输出结果是( )。(分数:2.00)A.3
13、,4,5B.5,3,4C.5,4,3D.4,3,532.下列程序的输出结果是( )。#includestdio.hint fun(int a)int b=0;static int c=4;a=c+; b+;return(a);main()int a=2, i, c;for(i=0; i2; i+)c=f(a+1);printf(“%d/n“, c);(分数:2.00)A.4B.7C.6D.533.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:2.00)A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXYZD.ABDYECFXZ34.以下能正确定义一维数组的选项是( )。(
14、分数:2.00)A.int a5=0, 1, 2, 3, 4, 5;B.char a=0, 1, 2, 3, 4, 5;C.char a=A, B, C;D.int a5=“0123“;35.函数 ftell(fp)的作用是( )。(分数:2.00)A.得到 fp所指向文件的当前读写位置B.初始化流式文件的位置指针C.移动流式文件的位置指针D.以上答案均正确36.假定所有变量均已正确说明,下列程序段运行后 X的值是( )。a=b=c=0; x=12;if(!a)x-;else x=5;if(c)x=3;else x=4;(分数:2.00)A.11B.4C.12D.337.下面程序的功能是输出以
15、下形式的金字塔图案:main()int i, j; *for(i=1;i=4; i+) *for(j=1; j=4-i; j+) printf(“); *for(j=1; j=_; j+) printf(“*“); *printf(“/n“);在下划线处应填入的是( )。(分数:2.00)A.iB.2*i-1C.n=2*i+1D.i+238.对两个数组 a和 b进行下列初始化:char m=“1234567“;char n=1, 2, 3, 4, 5, 6, 7);则下列叙述正确的是( )。(分数:2.00)A.数组 m与数组 n完全相同B.数组 m与数组 n长度相同C.数组 m比数组 n长
16、1D.数组 m与数组 n中都存放字符串39.有下列程序:main()char s=“abcde“;s+=2;printf(“%d/n“, s0);执行后的结果是( )。(分数:2.00)A.输出字符 a的 ASCII码B.输出字符 c的 ASCII码C.输出字符 cD.程序出错40.以下程序的输出结果是( )。main()char ch34=“123“, “456“, “78“, *p3; int i;for(i=0; i3; i+)pi=chi;for(i=0; i3; i+)printf(“%s“, pi); (分数:2.00)A.123456780B.123 456 780C.12345
17、678D.147二、填空题(总题数:14,分数:30.00)41.在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个 1 实际上对应一个处理模块。(分数:2.00)填空项 1:_42.二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是 1。(分数:2.00)填空项 1:_43.数据库系统中实现各种数据管理功能的核心软件是 1。(分数:2.00)填空项 1:_44.语句:“x+; +x; x=1+x;”执行后都使变量 x中的值增 1,请写出一条同一功能的赋值语句 1。(分数:2.00)填空项 1:_45.数据模型按不同应用层次分成 3种类型,它们是概念数据
18、模型、 1 和物理数据模型。(分数:2.00)填空项 1:_46.在关系运算中, 1 运算是在指定的关系中选取所有满足给定条件的元组,构成一个新的关系,而这个新的关系是原关系的一个子集。(分数:2.00)填空项 1:_47.在以下程序运行时若从键盘输入:10 20 30回车,输出结果是_。#includestdio.hmain()int i=0, j=0, k=0;scanf(“%d%*d%d“, i, j, k);printf(“Gd%d%d/n“, i, j, k);(分数:2.00)填空项 1:_48.以下程序运行后的输出结果是_。main()int i=10, j=0;doj=j+i;
19、 i-; )while(i2);printf(“%d/n“, j);(分数:2.00)填空项 1:_49.以下程序的输出结果是_。#includestdio.hint fun(int x, int y)static int m=0, i=2;i=i+1;m+=i+x+y;return mmain()int j=4, m=1, k;k=fun(j, m);printf(“gd,“ , k);k=fun(j, m); printf(“%d/n“, k)(分数:2.00)填空项 1:_50.执行下列语句段后,X 的值是_。int *p, x;x=100;p=x;x=*p+50;(分数:2.00)填空
20、项 1:_51.设有下列宏定义:#define A 2#define B (A+3)则执行赋值语句“k=B*20;”(k 为 int型变量)后,k 的值是_。(分数:2.00)填空项 1:_52.下列程序运行后的输出结果是_。main()int x, a=1, b=2, c=3, d=4;x=(ab)?a: b; x=(xc)?x: c; x=(dx)?x: d;printf(“%d/n“, x);(分数:2.00)填空项 1:_下列程序中,fun()函数的功能是计算 x2-2x+6,主函数中将调用 fun()函数计算。y1=(x+8)2=2(x+8)+6y2=sin2(x)-2sin(x)+
21、6请填空:#includemath.hdouble fun(double x)return(x*x-2*x+6); main()double x, y1, y2;printf(“enter x: “); scanf(“%1f“, x);y1=fun(_);y2=fun(_);printf(“y1=%1f, y2=%1f/n“, y1, y2);(分数:4.00)填空项 1:_填空项 1:_53.下列程序的功能是:将输入的正整数按逆序输出。例如:若输入 135则输出 531。请填空。#includestdio.hmain()int n, s;printf(“Enter a number: “);
22、scanf(“%d“, n);printf(“Output: “);dos=n%10; printf(“%d“, s);_; )while(n!=0); printf(“/n“);(分数:2.00)填空项 1:_二级 C语言笔试-186 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.有以下程序:int fun(int n)if(n=1)return 1;else return(n+fun(n-1);main()int x;scanf(“%d“, x); x=fun(x); printf(“%d/n“, x);执行程序时,给变量 X输入 10
23、,程序的输出结果是( )。(分数:2.00)A.55 B.54C.65D.45解析:解析 函数 int fun(int n)的功能是求 1+2+n的值并返回。所以执行程序时,给变量 x输入10后,执行语句“x=fun(x);”,x 的值将变为 1到 10中 10个整数的累加和,即 55。2.有以下程序:main()int i, n=0;for(i=2; i5; i+)doif(i%3) continue;n+;while(! i);n+;printf(“n=%d/n“, n);程序执行后输出结果是( )。(分数:2.00)A.n=5B.n=2C.n=3D.n=4 解析:解析 continue
24、语句的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。3.定义结构体数组:struct stuint num;char name20;X5=1,“LI“, 2, “ZHAO“, 3, “WANG“, 4, “ZHANG“, 5, “LIU“);for(i=1; i5; i+)printf(“%d%c“, xi. num, xi.name2);以上程序段的输出结果为( )。(分数:2.00)A.2A3N4A5U B.112A3H4IC.1A2N3A4UD.2H3A4H5I解析:解析 本题主要考查结构体数组的使用。xi.num 为结构体 xi中的 num成员
25、,xi.num2是结构体 xi中 name成员的第 3个元素。程序执行循环过程时:第 1次循环,i=1,输出 xi.num, x1.name2的值;第 2次循环,i=2,输出 x2.num, x2.name2的值,即 3N;第 3次循环,i=3,输出x3. num,x3. nan e2的值,即 4A;第 4次循环,i=4,输出 x4.num,x4. name2的值,即5U。4.以下程序的输出结果是( )。main()int a=3;printf(“%d/n“, (a+a-=a*a);(分数:2.00)A.-6B.12C.0D.-12 解析:解析 本题可以写成:a+a+(a-(a*a)所以*的优
26、先级最高,其次是-=的,+的优先级最低,因此先求 a-=a*a=9,表达式变为 a+a+-=9,a 即 a=a-9=-6,再次变为 a+(-6)=-12,故选择 D选项。5.有以下程序:main()int x=102, y=012;printf(“%2d, %2d/n“, x, y);执行后输出结果是( )。(分数:2.00)A.10,01B.02,12C.102,10 D.02,10解析:解析 x 的值为十进制数 102,而 y的值为八进制数 012,根据题意将 y用十进制表示为10%md,m 为指定输出数据的宽度,若位数小于 m则左端补以空格,若位数大干 m则按实际输出。所以答案是 C。6
27、.以下程序的输出结果是( )。union myunstructint x, y, z; )u;int k;a;main()a. u. x=4; a.u.y=5; a.u.z=6;a.k=0:printf(%d/n“, a.u.x);(分数:2.00)A.4B.5C.6D.0 解析:解析 因为 a是结构体变量,最后一次输入的值为结构体中的值,即 a中的任何一个值都为 0。7.若希望下列的程序运行后输出 25,程序空白处的正确选项是( )。main()int id=50,a=7, 4, 10, 5, 8;for( )j+=ai;printf(“%d“, j-40);(分数:2.00)A.i=1;
28、i4; +iB.i=1; i3; +iC.i=4; i2; i=D.i=2; i4; +i 解析:解析 要想使程序输出 25,则 j-40=25,j=65,而 j初值是 50,所以填入 for循环的语句,使引用的数组元素累加 65-50=15即可,D 选项中,i 下标从 0开始,i=2 指向第 3个数 50+a2=50+10=60,继续循环 60+a3=60+5=65,此时 i=4跳出,循环结束。8.若二维数组 a有 m列,则在 aij前的元素个数为( )。(分数:2.00)A.i*m+j-1B.i*m+j C.j*m+iD.i*m+j+1解析:解析 二维数组的元素可以看成是按矩阵形式存放的,
29、数组第一维的下标是 i,说明它前面还有i行,有 i*m个元素,数组第二维的下标是 j,说明它前面还有 j列,有 j个元素,所以共有 i*m+j个元素。9.结构化程序设计主要强调的是( )。(分数:2.00)A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性 解析:解析 程序不光是编写完就结束了,为了测试和维护程序,往往还有其他人阅读和跟踪程序,因此程序设计的风格应该强调简单和清晰,即程序的易读性,“清晰第一,效率第二”。10.以下程序的输出结果是( )。main()char wE10=“ABCD“, “EFGH“, “IJKL“, “MNOP“, K;for(k=1; k3;
30、 k+)printf(“%s/n“, wk);(分数:2.00)A.ABCDFGHKLB.ABCDEFGIJC.EFGJKOD.EFGHIJKL 解析:解析 当 k=1时,循环成立输出 w1的数组即 EFGH,接着执行 k+后 k为 2;当 k=2时,循环成立,输出 w2的数组即 IJKL,接着执行 k+后,k 为 3;当 k=3时,循环不成立,退出。11.若有以下定义和语句:“double r=99,*p=r; *p=r; ”,则以下正确的叙述是( )。(分数:1.00)A.两个*p 含义相同,都说明给指针变量 p赋值B.在“double r=99,*p=r; ”中,把 r的地址赋值给了 P
31、所指的存储单元 C.语句“*p=r;”把变量 r的值赋给指针变量 pD.语句“*p=r;”取变量 r的值放回 r中解析:解析 在定义*p=r 时,是表示 r的地址赋给了 p所指的存储单元,因此选项 B正确。12.以下程序的输出结果是( )。main()char*s=“12134211“;int v4=0, 0, 0, 0), k, i;for(k=0;sk; k+)switch(sk)case1: i=0;case2: i=1;case3: i=2;case4: i=3; )vi+;for(k=0; k4; k+)printf(“%d“, vk);(分数:1.00)A.4 2 1 1B.0 0
32、 0 8 C.4 6 7 8D.8 8 8 8解析:解析 本题考查 switch,case 语句,当 k=0时,循环体成立,执行 switch后表达式的值为1,执行 case1,i 的值为 0,因为没有 break语句,继续执行其后的语句,到最后一个语句时 i的值为 3,此时 vi+,v3=1,接着执行 k+后,k 的值为 1,当 k=1时,循环成立。执行 switch后的表达式的值为2,执行 case 2,i 的值为 1,因为没有 break语句,继续执行其后的语句,到最后一个语句时,i的值为 3,此时 vi+, v3=2,接着执行 k+后,k 的值为 2,依次下去,case4也会执行,最后
33、 i的值一定为 3,到 v3=8时循环结束,而 v0v2的值一直没有变化,故选择 B选项。13.在面向对象方法中,( )描述的是具有相似属性与操作的一组对象。(分数:1.00)A.属性B.事件C.方法D.类 解析:解析 类(class)描述的是具有相似属性与操作的一组对象,具体对象是类的实例。14.有以下程序:void fun(char *a, char*b)a=b; (*a)+; main()char c1=A, c2=a,*p1, *p2;p1=c1; p2=*c2; fun(p1, p2);print(“%c 9/6c/n“, c1, c2);程序运行后的输出结果是( )。(分数:1.0
34、0)A.Ab B.aaC.AaD.Bb解析:解析 函数 fun的作用是将指针 a指向指针 b的内容,然后将该内容加 1。执行语句“fun(p1,p2);”后,p1 和 p2指向的地址并未改变,只是将 p2指向的存储单元的值增加 1。所以,答案是 A。15.下列程序的输出结果是( )。void fun(int*x, int y)printf(“%d%d“, *x, “y); *x=3; *y=4; )main()int x=1, y=2; fun(y, x);printf(“%d%d“, x, y);(分数:1.00)A.2 1 4 3B.1 2 1 2C.1 2 3 4 D.2 1 1 2解析
35、:解析 当执行 fun函数时因为参数传递时是地址传递,因此形参值的改变会影响实参中的数,在执行 fun函数时先输出 1 2,接着把*x 赋 3,*y 赋 4,此时带回主函数中输出的值为 3 4。16.下列选项中非法的字符常量是( )。(分数:1.00)A./tB./039 C.,D./n解析:解析 水平制表符中,/t表示的是横向跳若干格;选项 B中,/039错误,/039是八进制形式表的字符,最大数为 7但其中出现9中,,是字符逗号;选项 D中,/n表示的是换行。17.有以下程序:main()int x=0, y=5, z=3;while(z-O +x5)y=y-1;printf(“%d, %
36、d, %d/n“, x, y, z);程序执行后的输出结果是( )。(分数:1.00)A.3,2,0B.3,2,-1 C.4,3,-1D.5,-2,-5解析:解析 while 语句执行如下:当 z=3,x=0 时,表达式 z-0+x5 为真,z 的值变为 2,x 的值变为 1,执行语句“y=y-1;”,y的值变为 4;当 z=2,x=1 时,表达式 z-0+x5 为真,z 的值变为 1,x 的值交为 2,执行语句“y=y-1;”,y的值变为 3;当 z=1,x=2 时,表达式 z-0+x5 为真,z 的值变为 0,x 的值变为 3,执行语句“y=y-1;”,y的值变为 2;当 z=0,x=3
37、时,表达式 z-O 为假,表达式(z-0+x5)为假,z 的值为-1,不进行+x5 的判断,不执行语句 y=y-1;所以,x 的值为 3,y 的值为 2,z 的值为-1。答案为 B。18.在下列给出的表达式中,与 while(E)中的(E)不等价的表达式是( )。(分数:1.00)A.(!E=0)B.(E0|E0) C.(E=0)D.(E!=0)解析:解析 在 while(E)中,表达式 E可以是 C语言中任意合法的条件表达武,但不能为空,由它来控制循环体是否执行。在选项 B中表达武 E0|E0 是一个逻辑表达式。19.常采用的两种存储结构是( )。(分数:1.00)A.顺序存储结构和链式存储
38、结构 B.散列方法和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构解析:解析 线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。20.有以下程序段:int x=3;doprintf(“%d“, x-=2); while(!(-x);其输出结果是( )。(分数:1.00)A.1B.3 0C.1 -2 D.死循环解析:解析 本题考查 do-while循环,先执行 do输出的 x的值为 1。接着执行 while语句后,此时-x的值为 0,x 也为 0,而非 0为 1,循环成立,接着执行 do输出 x值为-2,执行-x 后,表达式为-2,而!(-x)为 0,退出循环。21.
39、以下有 4组用户标识符,其中合法的一组是( )。(分数:2.00)A.FOrSubCaseB.4dDOSizeC.f2_G3IFabc D.WORDVOiddefine解析:解析 在 C语言中,标识符是由字母、数字和下划线组成,其中开头必须是字母或下划线,排除选项 A和 B。C 语言中还规定标识符不能为 C语言的关键字,而选项 D中的 void为关键字。22.用链表表示线性表的优点是( )。(分数:2.00)A.便于随机存取B.花费的存储宅间较顺序存储少C.便于插入和删除操作 D.数据元素的物理顺序与逻辑顺序相同解析:解析 数据的存储结构有顺序存储结构和链式存储结构两种。不同存储结构的数据处理
40、效率不同。由于链表采用链武存储结构,元素的物理顺序并不连续,对于插入和删除无需移动元素,很方便,当查找元素时就需要逐个元素查找,因此查找的时间相对更长。23.有以下程序:main()char a=a, b;printf(“%c,“, +a);printf(“%c/n“, b=a+);程序运行后的输出结果是( )。(分数:2.00)A.b,b B.b,CC.a,bD.a,c解析:解析 +a 与 a+的区别是前者先自加再运算,后者是先运算后自加。24.当 c的值不为 0时,在下列选项中不能正确将 c的值赋给变量 a、b 的是( )。(分数:2.00)A.c=b=a;B.(a=c)|(b=c);C.
41、(a=c)(b=c); D.a=c=b;解析:解析 选项 A是先将 a的值赋给变量 b,再将变量 b的值赋给变量 c,不合题意;B 选项中由于 C的值不为 0,在将 C的值赋给变量 a后,表达式 a=c的值为 1,不再对表达式 b=c计算;对于 C选项表达式 a=c的值为 1,再求表达式 b=c的值为 1,后进行逻辑与运算;D 选项将 b的值赋给 c后再赋给 e,故选择 C选项。25.设 int x=7,则x 的值是( )。(分数:2.00)A.-8 B.7C.-1D.1解析:解析 本题主要考查按位求反运算和 C语言正负数的表示,“0”代表正数,“1”代表负数;x=7的二进制为 00111,第
42、一个 0代表正数,x 为 11000,第一个 1代表负数,值为 8。26.算法分析的目的是( )。(分数:2.00)A.找出数据结构的合理性B.找出算法中输入和输出之间的关系C.分析算法的易懂性和可靠性D.分析算法的效率以求改进 解析:解析 算法分析是指对一个算法的运行时间和占用空间做定量的分析,计算相应的数量级,并用时间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率。27.C语言的基本单位是( )。(分数:2.00)A.函数 B.过程C.子程序D.子函数解析:解析 C 语言是函数式的语言。它的基本组成单位是函数,在 C语言中任何程序都是由一个
43、或者多个函数组成的。28.以下程序的输出结果是( )。main()int x=0.5;char z=a;printf(“%d/n“, (x1)(zz); (分数:2.00)A.0B.1 C.2D.3解析:解析 (x1)(zz)=(0.51)(az)=11=1,故选择 B选项。29.能正确表示“当 x的取值在1,10和100,110范围内为真,否则为假”的表达式是( )。(分数:2.00)A.(x=1)(xB.(x=1)(x=10)(x=100)(x=110)C.(x=1)(x=10)(x=100)(x=110) D.(x=1)(x=10)(x=100)(x=110)解析:解析 本题考查逻辑与(
44、)和逻辑或(|)运算符的使用。x 值在1,10之间,C 语言中可以写成 x值在100,110之间,C 语言表达式应写成“(x=100)(x=110)”;1,10和100,110满足任意条件就可以,所以是逻辑或的关系,因此只要将前两个表达武用逻辑或运算符连接起来即可,所以最后的表达式:(x=1)(x=10)(x=110)。30.语句:“printf(“%d“, (a=2)(b=-2);”的输出结果是( )。(分数:2.00)A.无输出B.结果是不确定C.-1D.1 解析:解析 因为在逻辑表达式中,两边的赋值表达式都成立,即值为 1,故选择 D选项。31.有以下程序:void f(int x, i
45、nt y)int t;if(xy)t=x; x=Y; y=t; main()int a=4, b=3, c=5;f(a, b); f(a, c); f(b, c);print(“%d, %d, %a/n“, a, b, c);执行后输出结果是( )。(分数:2.00)A.3,4,5B.5,3,4C.5,4,3D.4,3,5 解析:解析 a、b、c 都是按值传递给函数 f,函数 f不能改变它们的值。所以,a、b、c 的值仍然是4、3、5。32.下列程序的输出结果是( )。#includestdio.hint fun(int a)int b=0;static int c=4;a=c+; b+;re
46、turn(a);main()int a=2, i, c;for(i=0; i2; i+)c=f(a+1);printf(“%d/n“, c);(分数:2.00)A.4B.7C.6D.5 解析:解析 static 变量是局部度量,函数无法修改,所以当 i=1时,第 2次进入 f函数时 c=5,所以最终 main()函数中 c的值为 5。33.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:2.00)A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXYZD.ABDYECFXZ 解析:解析 所谓二叉树的前序遍历是指:先访问根结点,访问左子树,最后访问右子数,本题中予为DYEBEAFCZX,后序为 YDEBFZXCA。34.以下能正确定义一维数组的选项是( )。(分数:2.00)A.int a5=0, 1, 2, 3, 4, 5;B.char a=0, 1, 2, 3, 4, 5; C.char a=A, B, C;D.int a5=“0123“;解析:解析 数组下标从 0开始,A 选项中所赋值的个数超过了数组的长度,C 选项中定义 a为字符型变量,而不是数组,赋值