1、二级 C语言笔试-382 及答案解析(总分:98.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.若变量均已正确定义并赋值,以下合法的 C语言赋值语句是(分数:2.00)A.x=y=5;B.x=n%2.5;C.x+n=i;D.x=5-4+1;2.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的(分数:2.00)A.正当性B.可行性C.确定性D.有穷性3.以下程序的功能是进行位运算 main() unsigned char a,b; a=73;b=4&3; pfintf(“%d%d/n“,a,b); 程序运行后的输出结果是(分数:2.00)
2、A.4 3B.7 3C.7 0D.4 04.结构化程序设计主要强调的是(分数:2.00)A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性5.软件开发离不开系统环境资源的支持,其中必要的测试数据属于(分数:2.00)A.硬件资源B.通信资源C.支持软件D.辅助资源6.以下程序的运行结果是 #define MAX(A,B) (A)(B)?(A):(B) #define PRINT(Y) printf(:Y=%d/t“,Y) main() int a=1,b=2,c=3,d=4,t; t:MAX(a+b,c+d); PRINT(t);(分数:2.00)A.Y=3B.存在语法错误C.
3、Y=7D.Y=07.算法的空间复杂度是指(分数:2.00)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间8.以下程序的输出结果是 #includestdio.h main() int a=15,b=21,m+0; switch(a%3) case0:m+;bteak; case 1:m+; switch(b%2) default:m+; case 0:m+;break; printf(“%d/n“,m);(分数:2.00)A.1B.2C.3D.49.以下程序执行后 x的值是 main() int x,y=252,i=386,*m=&y,*
4、z=&i; x=(z=y); printf(“%d“,x);(分数:2.00)A.252B.1C.0D.运行时出错,x 无定值10.若有下面的程序片段: int12=0,*p3,*pp,i; for(i=0;i3;i) pi=&ai*4; pp=p; 则对数组元素的错误引用是(分数:2.00)A.pp01B.a10C.p31D.*(*(p+2)+2)11.fwrite函数的一般调用形式是(分数:1.00)A.fwrite(buffer,count,size,f;B.fwrite(fp,size,count,buffe;C.fwrite(fp,count,size,buffe;D.fwrite(
5、buffer,size,count,f;12.如下程序的输出结果是 #includestdio.h main() chsr ch25=“6937“,“8254“,*p2; int i,j,s=0; for(i=0;i2;i+) pi=chi; for(i=0;i2;i+) for(j=0;pij/0;j+=2) s=10*s+pij-0 printf(“%d/n“,s);(分数:1.00)A.69825B.63825C.6385D.69382513.设有下面的程序段: char s=“china“; char*p;p=S; 则下列叙述正确的是(分数:1.00)A.s和 p完全相同B.数组 s中
6、的内容和指针变量 p中的内容相同C.s数组长度和 p所指向的字符串长度相等D.*p与 s0相等14.若有函数 max(a,b),为了让函数指针变量 p指向函数 max,当调用该函数时,正确的赋值方法是(分数:1.00)A.(*max(a,B.*pmax(a,C.p=max(a,D.*p=max(a,15.有以下程序 main() int i,s=0,t=1,2,3,4,5,6,7,8,9; for(i=0;i9;i+=2)s+=*(t+i);printf(“%d/n“,s); 程序执行后的输出结果是(分数:1.00)A.45B.20C.25D.3616.下列二维数组初始化语句中,正确且与语句
7、floata3=0,3,8,0,9;等价的是(分数:1.00)A.floata2=0,3,8,0,9;B.float a3=0,3,8,0,9,0;C.float a3=0,3,8,0,9,0;D.float a2=0,3,8,0,9,0;17.设有下列二叉树: (分数:1.00)A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY18.下面能正确进行字符串赋值操作的是(分数:1.00)A.chars5=“ABCDE“;B.char s5=A,b,C,D,E;C.char*s;s=“ABCDE“;D.char*s;scanf(“%s“,;19.有如下程序 main(
8、) float x=2.0,y; if(x0.0)y=0.0; else if(x10.0)y=1.0/x; else y=1.0; printf(“%f/n“,y); 该程序的输出结果是(分数:1.00)A.0.000000B.0.250000C.0.500000D.1.00000020.以下程序的输出结果是 #includestdio.h void prt(int *x,int *y,int*z) printf(“%d,%d,%d/n“,+*x,+*y,*(z+); main() int a=10,b=40,c=20; prt(&a,&b,&c);prr(&a,&b,&c);(分数:1.0
9、0)A.11,42,31 12,22,41B.11,41,20 12,42,20C.11,21,40 11,21,21D.11,41,21 12,42,2221.判断 char型变量 c1是否为大写字母的正确表达式是(分数:2.00)A.=c1=ZB.(c1=)&(c1=)C.(=c1)(=c1)D.(c1=)&(c1=)22.下列程序的输出结果是 main() double d=3.2;int x,y; x=1.2;y=(x+3.8)/5.0; printf(“%d/n“,d*y);(分数:2.00)A.3B.3.2C.0D.3.0723.栈和队列的共同特点是(分数:2.00)A.都是先进先
10、出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点24.以下程序中调用 scanf函数给变量 a输入数值的方法是错误的,其错误原因是 main() int*p,*q,a,b; p=&a; printf(“input a:“); scanf(“%d“,*p);(分数:2.00)A.*p表示的是指针变量 p的地址B.*p表示的是变量 a的值,而不是变量 a的地址C.*p表示的是指针变量 p的值D.*p只能用来说明 p是一个指针变量25.下列不属于软件工程的 3个要素的是(分数:2.00)A.工具B.过程C.方法D.环境26.阅读下列程序,则在执行后,程序的运行结果为 #include
11、“stdio.h“ #include“string.h“ main() chara30=“nice to meet you!“; strcpy(a+strlen(a)/2,“you“); printf(“%s/n“,a);(分数:2.00)A.nice to meet you youB.nice toC.meet you youD.nice to you27.以下 scanf函数调用语句中对结构体变量成员的引用不正确的是 char name20; pup5,*p;(分数:2.00)A.scanf(“%s“,pup0.nam;B.scanf(“%d“,&pup0.ag;C.scanf(“%dT“
12、,&(p-se);D.scanf(“%d“,p-ag;28.设有以下程序段 int x=0,s=0; while(!x!=0)s+=+x; printf(“%d“,s); 则(分数:2.00)A.运行程序段后输出 0B.运行程序段后输出 1C.程序段中的控制表达式是非法的D.程序段执行无限次29.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和(分数:2.00)A.可重用性差B.安全性差C.非持久性D.冗余性30.下列程序执行后的输出结果是 void funcl(int i); void func2(int i); char st=“hello,friend!“; void f
13、uncl(int i) printf(“%c“,sti); if(i3)i+=2;func2(i); void func2(int i) printf(“%c“,sti); if(i3)i+=2;func1(i); main() int i=0;func1(i);printf(“/n“);(分数:2.00)A.helloB.helC.hloD.hlm31.请选出以下程序的输出结果 #includestdio.h main() int a=1,2,3,4,i; int x=0; for(i=0;i4;i+) sub(a,x);Printf(“%d“,x); printf(“/n“); sub(S
14、,y) int *s,y; static int t=3; y=st;t-;(分数:2.00)A.1 2 3 4B.4 3 2 1C.0 0 0 0D.4 4 4 432.下列关于标识符的说法中错误的是(分数:2.00)A.合法的标识符是由字母、数字和下划线组成B.C语言的标识符中,大写字母和小写字母被认为是两个不同的字符C.C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符D.用户标识符与关键字不同时,程序在执行时将给出出错信息33.以下程序的输出结果是 #includestdio.h struct st i int x;int *y;*p; int dt4=10,20,30,4
15、0; struct st aa4=50,&dt0,60,&dt0,60,&it0,60,&dt0,; main() p=aa; printf(“%d/n“,+(p-x);(分数:2.00)A.10B.11C.51D.6034.有以下程序 int add(int a,int b)return(a+b); main() int k,(*f)(),a=5,b=10; f=add; 则以下函数调用语句错误的是(分数:2.00)A.k=(*(a,;B.k=add(a,;C.k=*f(a,;D.k=f(a,;35.下列叙述中正确的是(分数:2.00)A.一个算法的空间复杂度大,则其时间复杂度也必定大B.一
16、个算法的空间复杂度大,则其时间复杂度必定小C.一个算法的时间复杂度大,则其空间复杂度必定小D.上述三种说法都不对36.下面程序的运行结果是 #includestdio.h main() int a=28,b; char s10,*p; p=s; dob=a%16; if(b10) *p=b+48; else*p=b+55; p+;a=a/5;while(a0); *p=/0;puts(s);(分数:2.00)A.10B.C2C.C51D./037.下述关于数据库系统的叙述中正确的是(分数:2.00)A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型
17、一致D.数据库系统比文件系统能管理更多的数据38.以下程序输出的结果是 #includestdio.h #includestring.h main() charw10=“ABCD“,“EFGH“,“IJKL“,“MNOP“1,k; for(k=1;k3;k+) printf(“%s/n“,&wkk);(分数:2.00)A.ABCD FGH KLB.ABC EFG U MC.EFG JK 0D.FGH KL39.下列数据模型中,具有坚实理论基础的是(分数:2.00)A.层次模型B.网状模型C.关系模型D.以上 3个都是40.函数 rewind的作用是(分数:2.00)A.使文件位置指针重新返回文
18、件的开始位置B.将文件位置指针指向文件中所要求的特定位置C.使文件位置指针指向文件的末尾D.使文件位置指针自动移至下一个字符位置二、B填空题/B(总题数:12,分数:28.00)41.长度为 n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为_。(分数:2.00)填空项 1:_42.数据结构分为线性结构和非线性结构,带链的队列属于_。(分数:2.00)填空项 1:_43.软件工程研究的内容主要包括:_技术和软件工程管理。(分数:2.00)填空项 1:_44.常用的黑箱测试有等价分类法、_、因果图法和错误推测法 4种。(分数:2.00)填空项 1:
19、_45.数据库保护分为安全性、控制性、_、并发性控制和数据恢复。(分数:2.00)填空项 1:_46.以下程序中,函数 fun的功能是计算 x2-2x+6,主函数中将调用 fun函数计算:y1=(x+8)2-2(x+8)+6y2=sin2(x)-2sin(x)+6请填空。double fun(double x)return(x*x-2*x+6);double x,y1,y2;printf(“Enter x:“);scanf(“%lf“,&x);y1=fun(U 6 /U);y2=fun(U 7 /U);printf(“y1=%lf,y2=%lf/n“,y1,y2);(分数:4.00)填空项 1
20、:_47.以下 isprime函数的功能是判断形参 a是否为素数,是素数,函数返回 1, 否则返回 0。请填空。 int isprime(int a) for(i=2;i=a/2;i+) if(a%i=0)U 8 /U; U 9 /U;(分数:4.00)填空项 1:_48.下面程序的运行结果是_。 main() int i=0,j=10,k=2,s=0; i+=k; if(ij) printf(“%d/n“,s); break; s+=i;(分数:2.00)填空项 1:_49.以下程序的输出结果是_。 main() char*p=“BOOL“,“OPK“,“H“,“SP:,; for(i=3;
21、i0;i-,i-)printf(“%c“,*pi); printf(“/n“);(分数:2.00)填空项 1:_50.以下程序用来输出结构体变量 ex所占存储单元的字节数,请填空。 struct st char name20;double score; main() struct st ex; pfintf(“exsize:%d/n“,sizeof(_);(分数:2.00)填空项 1:_51.以下程序的功能是:利用指针向三个整型变量,并通过指针运算找出三个数中最大值,输出到屏幕上。请填空 main() int x,y,z,max,*px,*py,*pz,*pmax; scanf(“%d%d%d
22、“,&x,&y,&z); px=&x;py=&y;pz=&z;pmax=&max; _; if(*pmax*py)*pmax=*py; if(*pmax*pz)*pmax 二*pz; printf(“max=%d/n“,max);(分数:2.00)填空项 1:_52.以下程序中函数 fun的功能是:构成一个如图所示的带头结点的单词链表,在结点的数据域中放入了具有两个字符的字符串。函数 disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。 (分数:2.00)填空项 1:_二级 C语言笔试-382 答案解析(总分:98.00,做题时间:90 分钟)一、B选择题/B(总题数
23、:40,分数:70.00)1.若变量均已正确定义并赋值,以下合法的 C语言赋值语句是(分数:2.00)A.x=y=5; B.x=n%2.5;C.x+n=i;D.x=5-4+1;解析:命题目的 赋值运算符及赋值表达式。 解题要点 赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,选项 C)和 D)错误。“%”运算符两侧都应当是整型数据,选项 B)错误。 考点链接 赋值运算符的区别。2.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的(分数:2.00)A.正当性B.可行性C.确定性 D.有穷性解析:解题要点 一个算法应当具有 5个特性,即有穷性、确定性、可行性、有
24、零个或多个输入以及有一个或多个输出。算法的确定性是指:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。并且在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的执行结果。3.以下程序的功能是进行位运算 main() unsigned char a,b; a=73;b=4&3; pfintf(“%d%d/n“,a,b); 程序运行后的输出结果是(分数:2.00)A.4 3 B.7 3C.7 0D.4 0解析:命题目的 考查位运算的运算原理。 解题要点 a=73=11111=100=4(十进制),b=4& 3=100&11=11&11=11=3(十进制),所以,答案为
25、选项 A)。 考点链接 位运算的优先级及其所构成的表达式。4.结构化程序设计主要强调的是(分数:2.00)A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性 解析:命题目的 本题考查考生的结构化程序设计的思想。 解题要点 结构化程序设计强调的是程序的易读性。 考点链接 结构化程序设计的目的。5.软件开发离不开系统环境资源的支持,其中必要的测试数据属于(分数:2.00)A.硬件资源B.通信资源C.支持软件D.辅助资源 解析:命题目的 本题考查了软件测试。 解题要点 软件测试过程中,辅助资源包括测试用例(测试数据)、测试计划、出错统计和最终分析报告等。 考点链接 白箱和黑箱测试。6
26、.以下程序的运行结果是 #define MAX(A,B) (A)(B)?(A):(B) #define PRINT(Y) printf(:Y=%d/t“,Y) main() int a=1,b=2,c=3,d=4,t; t:MAX(a+b,c+d); PRINT(t);(分数:2.00)A.Y=3B.存在语法错误C.Y=7 D.Y=0解析:命题目的 考查带参数的宏替换。 解题要点 宏替换不像函数调用要进行参数值的计算、传递等,而只是简单按照原格式进行字符串的替换。 考点链接 宏定义的命令格式。7.算法的空间复杂度是指(分数:2.00)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的
27、存储空间D.算法执行过程中所需要的存储空间 解析:命题目的 考查考生对算法空间复杂度的掌握。 解题要点 算法空间复杂度是指执行这个算法所需要的内存空间。 考点链接 算法时间复杂度。8.以下程序的输出结果是 #includestdio.h main() int a=15,b=21,m+0; switch(a%3) case0:m+;bteak; case 1:m+; switch(b%2) default:m+; case 0:m+;break; printf(“%d/n“,m);(分数:2.00)A.1 B.2C.3D.4解析:命题目的 考查 switch语句的使用。 解题要点 switch
28、语句的条件是“a%3=15%3=0”,所以执行 case 0后面的语句,m+;m=1,然后就执行 break,跳出 switch语句,所以最后输出 m的值为 1。 考点链接 switch 嵌套语句的使用。9.以下程序执行后 x的值是 main() int x,y=252,i=386,*m=&y,*z=&i; x=(z=y); printf(“%d“,x);(分数:2.00)A.252B.1C.0 D.运行时出错,x 无定值解析:命题目的 考查复合的赋值表达式。 解题要点 指针变量 m和 z分别指向整型变量 y和 i,所以这两个指针变量中存储的地址是不同的。变量 x接受的是一个关系运算的结果,因
29、为两个地址是不同的,所以“z=y”的判断结果为 0。 考点链接 C 语言中,逻辑值的表示方法。10.若有下面的程序片段: int12=0,*p3,*pp,i; for(i=0;i3;i) pi=&ai*4; pp=p; 则对数组元素的错误引用是(分数:2.00)A.pp01B.a10C.p31 D.*(*(p+2)+2)解析:命题目的 考查指向数组的指针。 解题要点 本题综合考查一维数组和多维数组指针变量的表示方法。在 C语言中,引用数组元素的方法有两种,即下标法和指针法。下标法如 ai形式;指针法如*(a+i)或*(p+1)。其中,a 是数组名,p 是指向数组的指针变量,其初值 p=a。再如
30、*(*(p+2)+2)是 a22的值,注意语句中指针型数组的书写格式,不能写成“(*数组名)长度”,因为这是定义指向含有“长度”个元素的一维数组的指针变量。例如有定义语句“int a,b,c,c,*p3=&a,&b,&c;”,它定义了一个名为 p的指针型数组,其 3个元素 p0,p1,p2分别指向 f3个整型变量 a,b,c。 考点链接 数组元素的引用方法。11.fwrite函数的一般调用形式是(分数:1.00)A.fwrite(buffer,count,size,f;B.fwrite(fp,size,count,buffe;C.fwrite(fp,count,size,buffe;D.fwr
31、ite(buffer,size,count,f; 解析:解题要点 fwrite 的形式是 fwrite(buffer,size,count,fP), buffer 表示准备输出的数据块的起始地址,size 表示每个数据块的字节数,count 用来指定每写一次或输出的数据块,fp 为文件指针。12.如下程序的输出结果是 #includestdio.h main() chsr ch25=“6937“,“8254“,*p2; int i,j,s=0; for(i=0;i2;i+) pi=chi; for(i=0;i2;i+) for(j=0;pij/0;j+=2) s=10*s+pij-0 prin
32、tf(“%d/n“,s);(分数:1.00)A.69825B.63825C.6385 D.693825解析:命题目的 考查通过指针引用字符串数组中的元素。 解题要点 通过行指针 p来实现数组元素的引用。 考点链接 用格式说明符%s 进行整串输入与输出。13.设有下面的程序段: char s=“china“; char*p;p=S; 则下列叙述正确的是(分数:1.00)A.s和 p完全相同B.数组 s中的内容和指针变量 p中的内容相同C.s数组长度和 p所指向的字符串长度相等D.*p与 s0相等 解析:命题目的 考查的是字符指针和字符数组的区别。 解题要点 选项 A)中,s 为数组名,是一个常量
33、地址,而指针 p为一个字符变量,不能说两者完全相同,所以选项 A)错误。选项 B)和 C)的说法都不严谨,只有选项 D)的说法正确。 考点链接 用于字符串处理的函数。14.若有函数 max(a,b),为了让函数指针变量 p指向函数 max,当调用该函数时,正确的赋值方法是(分数:1.00)A.(*max(a,B.*pmax(a,C.p=max(a, D.*p=max(a,解析:命题目的 考查指向函数的指针变量的使用。 解题要点 在本题中,将函数的入口地址赋给指针后就可以用该指针调用函数了。 考点链接 函数的指针形参。15.有以下程序 main() int i,s=0,t=1,2,3,4,5,6
34、,7,8,9; for(i=0;i9;i+=2)s+=*(t+i);printf(“%d/n“,s); 程序执行后的输出结果是(分数:1.00)A.45B.20C.25 D.36解析:解题要点 统计 19 九个数中的奇数和,此题考查指向数组的指针。C 语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i 代表数组的第 i+1个元素。程序运行的结果是1+2+3+4+5+6+7+8+9=25。16.下列二维数组初始化语句中,正确且与语句 floata3=0,3,8,0,9;等价的是(分数:1.00)A.floata2=0,3,8,0,9;B.float a3=0,3,8,0,9,
35、0; C.float a3=0,3,8,0,9,0;D.float a2=0,3,8,0,9,0;解析:命题目的 考查二维数组的定义和初始化。 解题要点 在选项 B)中,因为数组第一维的数目不明确,所以理解会有歧义,可以理解为 1行 3列,或者 2行 3列等。 考点链接 数组中元素的引用。17.设有下列二叉树: (分数:1.00)A.ZBTYCPXAB.ATBZXCYP C.ZBTACYXPD.ATBZXCPY解析:命题目的 本题考查二叉树的遍历。 解题要点 所谓二叉树的前序遍历(DLR)是指在访问根结点、遍历左子树与遍历右子树这 3者中,首先访问根结点,然后遍历左子树,最后遍历右子树,并且,
36、在遍历左右子树时,上述规则同样适用,即“根-左-右”,故该二叉树的前序遍历结果为“ATBZXCYP”。 考点链接 对于本题,若使用后序遍历和中序遍历的结果分别为“ZBTYCPXA”和“TZBACYXP”。18.下面能正确进行字符串赋值操作的是(分数:1.00)A.chars5=“ABCDE“;B.char s5=A,b,C,D,E;C.char*s;s=“ABCDE“; D.char*s;scanf(“%s“,;解析:命题目的 考查了一维字符数组的定义和初始化。 解题要点 选项 A)和 B)定义的数组空间太小,至少应该为 6个字符的长度才可以。选项 D)中的指针 s未赋初值,所以指向一个不确定
37、的地址,因而不能用 scanf输入数据到这一指针所指向的地址中。 考点链接 通过赋初值的方式给一维字符数组赋字符串。19.有如下程序 main() float x=2.0,y; if(x0.0)y=0.0; else if(x10.0)y=1.0/x; else y=1.0; printf(“%f/n“,y); 该程序的输出结果是(分数:1.00)A.0.000000B.0.250000C.0.500000D.1.000000 解析:命题目的 if 语句的嵌套。 解题要点 本题考查 if语句中的一种表达方式,即:if else if。 该表达式的语句是: if 表达式 1) 语句 1 else
38、 if(表达式 2) 语句 2 else if(表达式 3) 语句 3 else 语句 4 本题执行 else y=1.0,并且以“%f”输出。 考点链接 条件表达式在 if语句中的使用。20.以下程序的输出结果是 #includestdio.h void prt(int *x,int *y,int*z) printf(“%d,%d,%d/n“,+*x,+*y,*(z+); main() int a=10,b=40,c=20; prt(&a,&b,&c);prr(&a,&b,&c);(分数:1.00)A.11,42,31 12,22,41B.11,41,20 12,42,20 C.11,21,
39、40 11,21,21D.11,41,21 12,42,22解析:命题目的 考查指针作为参数的函数调用。 解题要点 尽管 C语言以传值方式进行函数调用,但也可以通过传递指针的值(变量的地址)来达到修改实参变量值的目的,这是此题主要说明的问题。另外,应注意表达式*(2+)的值是*z,其后的 z+在程序中无实际作用。函数调用时,由于 x,y 和 z分指向a,b 和 c,因此,*x,*y 和,z 就是 a,b 和 c。第一次调用函数时,*x=a=10,*y=b=40,*z=c=20 输出结果为 11,41,10,至此,已经可以肯定选项 B)是正确的。 在第一次输出后,a=11,b=41,c=20,第
40、二次输出为:12, 42,20。 考点链接 指针作为参数的函数调用的执行过程。21.判断 char型变量 c1是否为大写字母的正确表达式是(分数:2.00)A.=c1=ZB.(c1=)&(c1=)C.(=c1)(=c1)D.(c1=)&(c1=) 解析:命题目的 字母大小写的判断。 解题要点 字符型数据在计算机内部是以 ASCII码存储的,英文大写字母和小写字母在 ASCII码表中都是连续的。大写字母 A到 Z是从 65到 90,所以只要变量 c1大于 A并且小于 Z就能保证其为大写字母。 考点链接 逻辑运算符的功能与作用。22.下列程序的输出结果是 main() double d=3.2;i
41、nt x,y; x=1.2;y=(x+3.8)/5.0; printf(“%d/n“,d*y);(分数:2.00)A.3B.3.2C.0 D.3.07解析:命题目的 考查复合的赋值表达式。 解题要点 本题中,程序先执行语句 x=1.2;,根据赋值运算的类型转换规则,先将 double型的常量 1.2转换为 int型,即取整为 1,然后将 1赋值给变量 x。接下来执行语句 y=(x+3.8)/5.0;根据运算符的优先级,先计算小括号内,再计算除法,最后执行赋值运算。小括号内的运算过程:先将整型变量 x 的值 1转换为 double型 1.0,然后与 3.8进行加法运算,得到中间结果 4.8。接着
42、进行除法运算 4.8/5.0,其结果小于 1.0,这里没有必要计算出精确值,因为接着进行赋值运算,赋值号左边变量 y的类型为整型,于是对这个小于 1.0的中间结果进行取整,结果为 0,于是变量 y的值为 0,d*y 的值也为 0。 考点链接 格式输出语句 printf的使用。23.栈和队列的共同特点是(分数:2.00)A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素 D.没有共同点解析:命题目的 考查栈和队列概念的掌握。 解题要点 栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表
43、;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表。 考点链接 评价模块独立性的主要标准,以及对它们的定义和分类。24.以下程序中调用 scanf函数给变量 a输入数值的方法是错误的,其错误原因是 main() int*p,*q,a,b; p=&a; printf(“input a:“); scanf(“%d“,*p);(分数:2.00)A.*p表示的是指针变量 p的地址B.*p表示的是变量 a的值,而不是变量 a的地址 C.*p表示的是指针变量 p的值D.*p只能用来说明 p是一个指针变量解析:命题目的 考查格式输入语句 scanf的使用。 解题要点 本题
44、经过定义语句和赋值后,p 表示的是变量 a的地址,*P 表示的是变量 a的值。 考点链接 变量地址的表示方法。25.下列不属于软件工程的 3个要素的是(分数:2.00)A.工具B.过程C.方法D.环境 解析:命题目的 本题考查了软件工程的基本概念。 解题要点 软件工程包括 3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制和管理。 考点链接 软件生命周期。26.阅读下列程序,则在执行后,程序的运行结果为 #include“stdio.h“ #include“string.h“ main() chara30=“ni
45、ce to meet you!“; strcpy(a+strlen(a)/2,“you“); printf(“%s/n“,a);(分数:2.00)A.nice to meet you youB.nice toC.meet you youD.nice to you 解析:命题目的 考查通过赋值的方式给一维数组赋初值。 解题要点 字符串复制函数 strcpy调用形式为:strcpy (s1,s2),此函数用来把 s2所指字符串的内容复制到 s1所指存储空间中,函数返回 s1的值,即目的串的首地址;求字符串长度函数 strlen的调用形式如下:strlen(s),此函数计算出以 s为起始地址的字符串
46、长度,并作为函数值返回。注意这一长度不包括串的结束标志。 考点链接 用于字符串处理的函数。27.以下 scanf函数调用语句中对结构体变量成员的引用不正确的是 char name20; pup5,*p;(分数:2.00)A.scanf(“%s“,pup0.nam;B.scanf(“%d“,&pup0.ag;C.scanf(“%dT“,&(p-se);D.scanf(“%d“,p-ag; 解析:命题目的 考查结构体成员变量的引用方法。 解题要点 可用结构体变量名,数据成员名或者结构体指针-数据成员名两种方法采引用。 考点链接 结构体类型的变量、数组和指针变量的定义。28.设有以下程序段 int x=0,s=0; while(!x!=0)s+=+x; printf(“%d“,s); 则(分数:2.00)A.运行程序段后输出 0B.运行程序段后输出 1 C.程序段中的控制表达式是非法的D.