1、二级 C 语言笔试 15 及答案解析(总分:88.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.已定义以下函数: fun(char *p2,char *p1) while (*p2=*p1)!=/0)p1+;p2+; 函数的功能是( )。(分数:1.00)A.将 p1 所指字符串复制到 p2 所指内存空间B.将 p1 所指字符串的地址赋给指针 p2C.对 p1 和 p2 两个指针所指字符串进行比较D.检查 p1 和 p2 两个指针所指字符串中是否有/02.有以下程序: main() char s=“ABCD“, *p; for( p=s+1;ps+4;p+)
2、 printf(“%s/n“,p); 程序运行后的输出结果是( )。(分数:1.00)A.ABCD BCD CD DB.A B C DC.B C DD.BCD CD D3.在深度为 6 的满二叉树中,结点的个数为( )。(分数:1.00)A.32B.31C.16D.154.有以下程序: main() int x=3,y=2,z=1; printf(“%d/n“,x/y 程序运行后的输出结果是( )。(分数:1.00)A.3B.2C.1D.05.以下选项中能正确把 c1 定义成结构体变量的是( )。(分数:1.00)A.typedef struct int red; int red; int g
3、reen; int blue; COLOR; COLOR c1;B.struct color c1 int red int red; int green int blue; ;C.stmctcolor int red, int green; int blue; c1;D.struct int red; int green; int blue; c1;6.有以下程序: int f(int n) if(n=1) return 1; else return f(n-1)+1; main() int i,j=0; for(i=1; i3; i+) j+=f(i); printf(“%d/n“,j);
4、程序运行后的输出结果是( )。(分数:1.00)A.4B.3C.2D.17.设有以下定义和语句: int a32=1,2,3,4,5,6,), *p3; p0=a1; 则*(p0+1)所代表的数组元素是( )。(分数:1.00)A.a01B.a10C.a11D.a128.有以下程序: main() char a=a,b; printf(“%c,“,+a); printf(%c/n“,b=a+); 程序运行后的输出结果是( )。(分数:1.00)A.b,bB.b,cC.a,bD.a,c9.结构化程序由 3 种基本结构组成,3 种基本结构组成的算法( )。(分数:1.00)A.可以完成任何复杂的任
5、务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务10.以下定义语句中正确的是( )。(分数:1.00)A.char a=Ab=B;B.float a=b=l0.0;C.int a=l0,*b= printf(“%d/n“,strlen(p+20); 程序运行后的输出结果是( )。(分数:1.00)A.0B.5C.7D.20A.*sB.SC.*s+D.(*+13.模块化程序设计主要强调的是( )。(分数:1.00)A.程序的规模要大B.对程序进行分解C.程序的执行效率D.程序的可移植性14.有以下程序: #include stdio.h #define F(X,
6、Y)(X)*(Y) main() int a=3,b=4; printf(“%d/n“,F(a+,b+); 程序运行后的输出结果是( )。(分数:1.00)A.12B.15C.16D.2015.有以下程序段: main() int a=5, *b, *c; c= b= 程序在执行了“c=b=”语句后,表达式*c 的值是( )。(分数:1.00)A.变量 a 的地址B.变量 b 中的值C.变量 a 中的值D.变量 b 的地址16.有以下程序: main() int i=10,j=1; printf(“%d,%d/n“,i-,+j); 执行后输出结果是( )。(分数:1.00)A.9,2B.10,
7、2C.9,1D.10,117.有以下程序段: int m=0,n=0; char c=a; scanf(“%d%c%d“, printf(“%d,%c,%d/n“,m,c,n); 若从键盘上输入 10A10回车,则输出结果是( )。(分数:1.00)A.10,A,10B.10,a,10C.10,a,0D.10,A,018.有以下程序: main() char k; int i; for(i=1;i3;i+) scanf(“%c“, switch(k) case 0: printf(“another/n“); case 1: printf(“number/n“); 程序运行时,从键盘输入 01回
8、车,程序执行后的输出结果是( )。(分数:1.00)A.another numberB.another number anotherC.another number numberD.number number19.下图所示的二叉树的先序遍历序列是( )。 (分数:1.00)A.ABDGCEHIFB.DGBAHEICFC.GDBHIEFCAD.ABCDEFGHlA.p-nextB.pC.sD.s-next21.有以下程序: main() int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf(“%d %d %3.1f
9、%3.1f/n“,a,c,f,x); 程序运行后的输出结果是( )。(分数:1.00)A.1 65 1 6.5B.1 65 1.5 6.5C.1 65 1.0 6.5D.2 65 1.5 6.522.下列叙述中正确的是( )。(分数:1.00)A.数据库设计是指设计数据库系统B.数据库设计是指设计数据库管理系统C.数据库设计是指在已有数据库管理系统的基础上建立数据库D.以上三种说法都不对23.关系数据库管理系统能实现的专门关系运算包括( )。(分数:1.00)A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表24.有以下程序: main() char a,b,c,
10、*d; a=/;b=/xbc; c=/0xab;d=“/017“; printf(“%c%c%c/n“,a,b,c,*d); 编译时出现错误,以下叙述中正确的是( )。(分数:1.00)A.程序中只有“a=/;”语句不正确B.“b=/xbc;”语句不正确C.“d=“/0127“;”语句不正确D.“a=/;”和“c=/0xab;”语句都不正确25.下列数据结构中,不是线性结构的是( )。(分数:1.00)A.线性链表B.带链的队列C.带链的栈D.二叉链表27.结构化程序设计的主要特点是( )。(分数:1.00)A.每个控制结构要模块化B.每个控制结构具有封装性C.每个控制结构具有独立性D.每个控
11、制结构只有一个入口和一个出口28.下列叙述中错误的是( )。(分数:1.00)A.测试是程序执行的过程,目的在于发现错误B.一个好的测试在于能发现至今未发现的错误C.一个成功的测试是发现了至今未发现的错误D.上述说法都不对29.有以下程序: main() int x=102, y=012; printf(“%2d,%2d/n“,x,y); 执行后输出结果是( )。(分数:1.00)A.10,01B.02,12C.102,10D.02,1030.有以下程序: struct STU char name10; int num; ; void f1(struct STU c) struct STU b
12、=“LiSiGuo“,2042); c=b; void f2(struct STU *c) struct STU b=“SunDan“,2044); *c=b; main() struct STU a=“YangSan“,2041,b=“WangYin“,2043); f1(a);f2( printf(“%d %d/n“,a.num,b.num); 执行后输出结果是( )。(分数:1.00)A.2041 2044B.2041 2043C.2042 2044D.2042 204331.有以下程序: main() int m=3,n=4,x; x;-m+; x=x+8/+n; printf(“%d
13、/n“,x); 程序运行后的输出结果是( )。(分数:1.00)A.3B.5C.-1D.-232.有以下程序: main() char str10=“China“,“Beijing“),*p=str; printf(“%s/n“,p+10); 程序运行后的输出结果是( )。(分数:1.00)A.ChinaB.BeijngC.ngD.ing33.下列关于 C 语言用户标识符的叙述中正确的是( )。(分数:1.00)A.用户标识符中可以出现下划线和中划线(减号)B.用户标识符中不可以出现中划线,但可以出现下划线C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头D.用户标识符中可以出现下划
14、线和数字,它们都可以放在用户标识符的开头34.有以下程序: main() int s=0,a=1,n; scanf(“%d“, do s+=1; a=a-2; while (a!=n); printf(“%d/n“,s); 若要使程序的输出值为 2,则应该从键盘给 n 输入的值是( )。(分数:1.00)A.-1B.-3C.-5D.035.以下叙述中正确的是( )。(分数:1.00)A.C 程序中注释部分可以出现在程序中任意合适的地方B.花括号和只能作为函数体的定界符C.构成 C 程序的基本单位是函数,所有函数名都可以由用户命名D.分号是 C 语句之间的分隔符,不是语句的一部分36.有以下程序
15、: int *f(int *x, int *y) if (*x*y) return x; else return y; main() int a=7,b=8,*p,*q,*r; p= q= r=f(p,q); printf (“%d,%d,%d/n“,*p,*q,*r); 执行后输出结果是( )。(分数:1.00)A.7,8,8B.7,8,7C.8,7,7D.8,7,837.有以下程序: main() char *S=“one“,“two“,“three“,*p; p=s1; printf(“%c,%s/n“, *(p+1),s0); 执行后输出结果是( )。(分数:1.00)A.n,twoB
16、.t,oneC.w,oneD.o,two38.对于白箱(盒)测试用例的各设计准则,下列叙述中正确的是( )。(分数:1.00)A.分支覆盖准则比语句覆盖准则严密B.条件覆盖要比分支覆盖优越。因此,条件覆盖能完全满足分支覆盖C.组合条件覆盖准则既能满足分支覆盖准则,也能满足条件覆盖准则。因此,组合条件覆盖准则是一种完全测试D.上述说法都不对39.有如下程序: #include stdio.h main() FILE *fp1; fp1=fopen(“f1.txt“,“w“); fprintf(fp1, “abc“); fclose(fp1); 若文本文件 f1.txt 中原有内容为 good,则
17、运行以上程序后文件f1.txt 中的内容为( )。(分数:1.00)A.goodabcB.abcdC.abcD.abcgood40.有以下程序: main() int x8=8,7,6,5,0,0,*s; s=x+3; printf(“%d/n“,s2); 执行后输出结果是( )。(分数:1.00)A.随机值B.0C.5D.641.若有以下定义和语句: #includestdio.h int a=4,b=3,*p,*q,*w; p= q= w=q; q=NULL; 则以下选项中错误的语句是( )。(分数:1.00)A.*q=0;B.w=p;C.*p=a;D.*p=*w;42.下面程序段的执行结
18、果是( )。 int x=10; for(;x;x-) if(x%3) continue; printf(“%d“,x); (分数:1.00)A.875421B.963C.741D.85243.下列数据模型中,具有坚实理论基础的是( )。(分数:1.00)A.关系模型B.网状模型C.层次模型D.以上三个都是44.设有以下语句: typedef struct S int g; char h; T; 则下面叙述中正确的是( )。(分数:1.00)A.可以用 S 定义结构体变量B.可以用 T 定义结构体变量C.S 是 struct 类型的变量D.T 是 stnictS 类型的变量45.有以下程序:
19、int f(int a) return a%2; main() int s8=1,3,5,2,4,6,i,d=0; for (i=0; f(si); i+) d+=si; printf(“%d/n“,d); 程序运行后的输出结果是( )。(分数:1.00)A.9B.11C.19D.2146.以下能正确定义二维数组的是( )。(分数:1.00)A.int a3;B.int a3=2*3;C.int a3=;D.int a23=1,2,3,4;47.设有如下程序: #includestring.h“ main() static char s120,s220; scanf(“%s“,s1);scan
20、f(“%s“,s2); if(strcmp(s1,s2) printf(“); else printf(“$“); printf(“%d/n“,strlen(strcat(s1,s2); 如果从键盘上输入 name1回车name2回车,则程序运行后的输出结果是( )。(分数:1.00)A.$9B.11C.$10D.1048.若变量已正确定义,要求程序段完成求 5!的计算,不能完成此操作的程序段是( )。(分数:1.00)A.for(i=1,p=1;i=5;i+) p*=i;B.for(i=1;i=5;i+)p=1; p*=i;C.i=1;p=1;while(i=5)p*=i; i+;D.i=1
21、;p=1;dop*=i;i+;while(i=5)49.(48)(50)以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转存到链表的各个结点中,请从与下划线处号码对应的一组选项中选择出正确的选项。 #include stdlib.h struct node char data; struct node *next; (48) CreatList(char *s) struct node *h,*p,*q; h=(struct node *)malloc(sizeof(Struct node); p=q=h; while(*s!=/0) p=(struct node *
22、)malloc(sizeof(struct node); p-data=(49); q-next=p; q=(50); s+; p-next=0; return h; main() char str=“link list“; struct node *head; head=CreatList(str); (分数:1.00)A.char*B.stmct nodeC.strumnode*D.char50.有定义语句:“int a=1,b=2,c=3,x;”,则以下选项中各程序段执行后,x 的值不为 3 的是( )。(分数:1.00)A.if(cx=1; elseif(bx=2; elsex=3;B
23、.if(a3)x=3; elseif(a2)x=2; elsex=1;C.if(a3)x=3; if(a2)x=2; if(a1)x=1;D.if(ax=b; if(bX=c; if(cx=a;二、B填空题/B(总题数:19,分数:38.00)51.在最坏情况下,冒泡排序所需要的比较次数为U 【1】 /U。(分数:2.00)填空项 1:_52.在面向对象方法中,信息隐蔽是通过对象的U 【2】 /U性来实现的。(分数:2.00)填空项 1:_53.软件生命周期包括 8 个阶段。为使各时期的任务更明确,又可以分为以下 3 个时期:软件定义期、软件开发期、软件维护期。编码和测试属于U 【3】 /U期
24、。(分数:2.00)填空项 1:_54.数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为U 【4】 /U。(分数:2.00)填空项 1:_55.在关系运算中,U 【5】 /U运算是在指定的关系中选取所有满足给定条件的元组,构成一个新的关系,而这个新的关系是原关系的一个子集。(分数:2.00)填空项 1:_56.下面程序执行后 k 的值为U 【6】 /U。 int a=1,b=2,c=3,d=4,k; k=ab? a: cd? c: d(分数:2.00)填空项 1:_57.下面程序的功能是输出数组中最大的数,由 a 指针
25、指向该元素。请填空。 main() int s=6,7,2,13,9,1,12,10,5,8,4,3,11),*a,*b; for(U 【7】 /U) if(*a*b) a=b; printf(“%d“,*a); (分数:2.00)填空项 1:_58.下面程序段的输出结果是U 【8】 /U。 int x=5; doprintf(“%d “,x-=4); while (!(-x);(分数:2.00)填空项 1:_59.用下面语句调用库函数 malloc,使单精度型指针 p 指向具有 40 个字节的动态存储空间,请填空。 p=(float*)U 【9】 /U;(分数:2.00)填空项 1:_60.
26、在对文件进行操作的过程中,若要求指针的位置回到文件的开头,应当调用的函数是U 【10】 /U。(分数:2.00)填空项 1:_61.以下程序的功能是调用函数 fun 计算:m=1-2+3-4+9-10,并输出结果。请填空。 int fun(int n) int m=0,f=1,i; for(i=1;i=n;i+) m+=i*f; f=U 【11】 /U; return m; main() printf(“m=%d/n“,U 【12】 /U);(分数:2.00)填空项 1:_62.以下程序运行后的输出结果是U 【13】 /U。 main() int i,n=0,0,0,0,0; for(i=1;
27、i=4;i+) ni=ni-1*2+1; printf(“%d “,ni); (分数:2.00)填空项 1:_63.以下程序运行后的输出结果是U 【14】 /U。 main() int i,j,a 3=1,2,3,4,5,6,7,8,9); for(i=0;i3;i+) for(j=i+1;j3;j+) aj i=0; for(i=0;i3;i+) for(j=0;j3;j+) printf(“%d “,aij); printf(“/n“); (分数:2.00)填空项 1:_64.以下程序运行后的输出结果是U 【15】 /U。 int a=5; fun (int b) static int a
28、=10; a+=b+; printf(“%d “,a); main() int c=20; fun(c); a+=c+; Printf(“%d/n“,a); (分数:2.00)填空项 1:_65.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。 U【16】 /U(double,double); main() double x,y; scanf(“%1f%1f“, printf(“%1f/n“,max(x,y); double max(double a,double b) return(ab ? a:b);(分数:2.00)填空项 1:_66.下面程序的运行结果是U 【17】 /U。
29、 typedef union student char name10; long sno; char sex; float score4; STU; main() STU a5; printf(“%d/n“,sizeof(a); (分数:2.00)填空项 1:_67.以下程序运行后的输出结果是U 【18】 /U。 fun(int x) if(x/20)fun(x/2); printf(“%d “,x); main() fun(6); (分数:2.00)填空项 1:_68.已有定义如下: struct node int data; struct node *next; *p; 以下语句调用 ma
30、lloc 函数,使指针 p 指向一个具有 struct node 类型的动态存储空间。请填空。 p=(struct node *)malloc(U 【19】 /U);(分数:2.00)填空项 1:_69.以下程序的功能是将字符串 s 中的数字字符放入 d 数组中,最后输出 d 中的字符串。例如,输入字符串:abcl23edf456gh,执行程序后输出:123456。请填空。 #include stdioo.h #include ctype.h main() char s80,d80; int i,j; gets(s); for(i=j=0;si!=/0;i+) if(U 【20】 /U)dj=
31、si;j+; dj=/0; puts(d);(分数:2.00)填空项 1:_二级 C 语言笔试 15 答案解析(总分:88.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.已定义以下函数: fun(char *p2,char *p1) while (*p2=*p1)!=/0)p1+;p2+; 函数的功能是( )。(分数:1.00)A.将 p1 所指字符串复制到 p2 所指内存空间 B.将 p1 所指字符串的地址赋给指针 p2C.对 p1 和 p2 两个指针所指字符串进行比较D.检查 p1 和 p2 两个指针所指字符串中是否有/0解析:解析 函数 funO 中只
32、有一条 while 循环语句,其循环条件为:当表达式(*p2=*p1)!=/0的值为真时则循环,即先将 p1 所指内容赋给 p2 所指地址,然后判断该内容是否为字符串结束符/0,是则循环结束,否则执行循环体,让 p1 和 p2 同时后移一位。所以该函数实现的是“将 p1 所指字符串复制到 p2 所指内存空间”,故应该选择 A。2.有以下程序: main() char s=“ABCD“, *p; for( p=s+1;ps+4;p+) printf(“%s/n“,p); 程序运行后的输出结果是( )。(分数:1.00)A.ABCD BCD CD DB.A B C DC.B C DD.BCD CD
33、 D 解析:解析 本题中首先定义一个字符数组 s,并将字符串“ABCD“存到数组 s 中,定义了一个字符指针变量 p,在接下来 for 循环中,循环体共执行了三次,第一次 p 指向 s1,所以此时输出的 p 所指字符串的值为 BCD,第二次循环 p 指向 s2,此时输出 p 所指的字符串的值为 CD,第三次循环 p 指向 s3,此时输出的 p 所指的字符串的值为 D。所以,4 个选项中选项 D 符合题意。3.在深度为 6 的满二叉树中,结点的个数为( )。(分数:1.00)A.32 B.31C.16D.15解析:解析 深度为 m 的二叉树最多有 2m-1 个结点,满二叉树中叶子结点的个数为 2
34、m-1 个。本题中,2 6-1=25=32。4.有以下程序: main() int x=3,y=2,z=1; printf(“%d/n“,x/y 程序运行后的输出结果是( )。(分数:1.00)A.3B.2C.1D.0 解析:解析 在表达式 x/y else return f(n-1)+1; main() int i,j=0; for(i=1; i3; i+) j+=f(i); printf(“%d/n“,j); 程序运行后的输出结果是( )。(分数:1.00)A.4B.3 C.2D.1解析:解析 主函数中 for 循环执行两次,i=1 和 i=2。调用函数 f(1),返回值为 1,j=1;调
35、用函数f(2),计算表达式 f(n-1)+1 的值时递归调用 f(1),返回值为 2,j=3。所以 B 为所选。7.设有以下定义和语句: int a32=1,2,3,4,5,6,), *p3; p0=a1; 则*(p0+1)所代表的数组元素是( )。(分数:1.00)A.a01B.a10C.a11 D.a12解析:解析 本题中首先定义了一个 3 行 2 列的数组 a,一个长度为 3 的指针数组 p,接着把地址 a1赋给 p0,此时 p0为 a10的地址,p0+1 为 a11的地址,故*(p0+1 代表的元素为 a11。所以,4 个选项中选项 C 符合题意。8.有以下程序: main() cha
36、r a=a,b; printf(“%c,“,+a); printf(%c/n“,b=a+); 程序运行后的输出结果是( )。(分数:1.00)A.b,b B.b,cC.a,bD.a,c解析:解析 程序中的第一条输出语句输出表达式+a 的值,即输出 a+1 的值,而此时 a 的值为a,所以第一条输出语句输出的值为b;第二条输出语句中输出表达式 b=a+的值,即输出 a 的值,而此时 a的值为b,所以第二条输出语句输出的值也为b。故选项 A 符合题意。9.结构化程序由 3 种基本结构组成,3 种基本结构组成的算法( )。(分数:1.00)A.可以完成任何复杂的任务 B.只能完成部分复杂的任务C.只
37、能完成符合结构化的任务D.只能完成一些简单的任务解析:解析 C 程序由 3 种基本的结构组成,分别为顺序结构、选择结构和循环结构,这 3 种结构可以组成任何复杂的 C 程序,即可以完成任何复杂的任务,故选项 B、选项 C 和选项 D 都不正确。所以,4 个选项中选项 A 符合题意。10.以下定义语句中正确的是( )。(分数:1.00)A.char a=Ab=B;B.float a=b=l0.0;C.int a=l0,*b= printf(“%d/n“,strlen(p+20); 程序运行后的输出结果是( )。(分数:1.00)A.0B.5C.7 D.20解析:解析 主函数中定义了一个二维字符数
38、组并初始化,初始化后的结果为 str0=“Hello“、str1=“Beijng“,然后定义一个字符指针变量 p 并让它指向 str0,即指向数组的首地址,而在 C 语言中无论是一维还是多维数组,其元素在内存中都是顺序存放的,故 p+20 后指针指向 str1,所以 strlen(p+20);返回的是 str1中字符串的长度,即“Beijng“的长度 7,故 4 个选项中选项 C 符合题意。A.*s B.SC.*s+D.(*+解析:13.模块化程序设计主要强调的是( )。(分数:1.00)A.程序的规模要大B.对程序进行分解 C.程序的执行效率D.程序的可移植性解析:解析 模块化设计是指把一个
39、大程序按人们能理解的大小规模进行分解。14.有以下程序: #include stdio.h #define F(X,Y)(X)*(Y) main() int a=3,b=4; printf(“%d/n“,F(a+,b+); 程序运行后的输出结果是( )。(分数:1.00)A.12 B.15C.16D.20解析:解析 在程序中先将表达式中的宏替换掉,则输出语句中的表达式为(a+)*(b+),而 a+的值为3,b+的值为 4。因此最后的值为 3*4=12。所以,4 个选项中选项 A 符合题意。15.有以下程序段: main() int a=5, *b, *c; c= b= 程序在执行了“c=b=”
40、语句后,表达式*c 的值是( )。(分数:1.00)A.变量 a 的地址B.变量 b 中的值C.变量 a 中的值 D.变量 b 的地址解析:解析 主函数中定义了一个整型变量 a,一个整型指针变量 b 和一个二级指针变量 c,并让 c 指向指针变量 b,让指针 b 指向整型变量 a,所以*c 为变量 a 的值,故 4 个选项中选项 C 符合题意。16.有以下程序: main() int i=10,j=1; printf(“%d,%d/n“,i-,+j); 执行后输出结果是( )。(分数:1.00)A.9,2B.10,2 C.9,1D.10,1解析:解析 +、-运算符在变量之前是先使变量的值加 1
41、 或减 1,然后再使用变量的值;如果在变量之后则先使用变量之前的值,再把变量的值加 1 或减 1。显然,程序中表达式 i-的值为 10,+j 的值为2,所以最后输出的值为 10 和 2,故 B 选项为所选。17.有以下程序段: int m=0,n=0; char c=a; scanf(“%d%c%d“, printf(“%d,%c,%d/n“,m,c,n); 若从键盘上输入 10A10回车,则输出结果是( )。(分数:1.00)A.10,A,10 B.10,a,10C.10,a,0D.10,A,0解析:解析 格式字符%d 用于输入整数,%c 用于输入字符。在输入时,系统把第一个 10 作为整数
42、 10 赋给 m,把随后的 A 作为字符赋值给 c,后面的 10 作为整数赋给 n,最后输出的结果为 10,A,10 所以,A选项为所选。18.有以下程序: main() char k; int i; for(i=1;i3;i+) scanf(“%c“, switch(k) case 0: printf(“another/n“); case 1: printf(“number/n“); 程序运行时,从键盘输入 01回车,程序执行后的输出结果是( )。(分数:1.00)A.another numberB.another number anotherC.another number number
43、D.number number解析:解析 本题在 for 循环中嵌套了 switch 语句,每循环一次通过 scanf()函数从键盘上输入一个 k值,然后执行 switch 语句。for 循环共循环了两次,当 i=1 时,从键盘上读入0,使得 k 的值为0,执行 switch 语句中 case0:后面的语句,输出“another“,接着执行 case0:下面的语句输出“number“,退出 switch 语句,当 i=2 时,从键盘上读入1,使得 k 的值为1,执行 switch 语句中case1后面的语句,输出“number“,退出 switch 语句。当 i=3 时退出循环。故最后的输出为
44、“another“、“number“和“number“,所以,4 个选项中选项 C 符合题意。19.下图所示的二叉树的先序遍历序列是( )。 (分数:1.00)A.ABDGCEHIF B.DGBAHEICFC.GDBHIEFCAD.ABCDEFGHl解析:解析 先序遍历顺序应该为:访问根结点先序遍历左子树先序遍历右子树。按照定义,先序遍历序列是 ABDGCEHIF。A.p-nextB.p C.sD.s-next解析:解析 在主函数中,定义了一个结构体型指针变量 head,然后将函数 CreatList()的返回值赋给指针变量 head,从这里可知函数 CreatList()的返回值为 stru
45、ct node*类型,所以第 48 处的空白应该填struct node*,故 48 题选项 C 正确;在函数 Creat List()中首先定义 3 个结构体型指针变量 h,p 和 q。然后调用 malloc()函数分配了一个结点空间,并让指针 h 指向它,开始指针 p、q 和 h 都指向它,然后调用一个 while 循环语句,当到达字符串数组 s 的末尾结束循环,在每次循环中,分配一个结点空间,并让p 指向它,然后让该结点的 data 域的值等于字符串指针 s 所指的值,因此第 49 题的正确答案为选项 A:接下来让指针 q 所指结点的 next 指针指向结点 p,然后让指针 q 指向该指针的所指结点的下一个结点即p,所以第 50 个空白处应该填 p,选择 B。故第 48 题 4 个选项中选项 C 符合题意;第 49 题 4 个选项中选项 A 符合题意;第 50 题 4 个选项中选项 B 符合题意。21.有以下程序: main() int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf(“%