【计算机类职业资格】全国计算机等级考试二级C语言真题2009年9月及答案解析.doc

上传人:周芸 文档编号:1329721 上传时间:2019-10-17 格式:DOC 页数:15 大小:87.50KB
下载 相关 举报
【计算机类职业资格】全国计算机等级考试二级C语言真题2009年9月及答案解析.doc_第1页
第1页 / 共15页
【计算机类职业资格】全国计算机等级考试二级C语言真题2009年9月及答案解析.doc_第2页
第2页 / 共15页
【计算机类职业资格】全国计算机等级考试二级C语言真题2009年9月及答案解析.doc_第3页
第3页 / 共15页
【计算机类职业资格】全国计算机等级考试二级C语言真题2009年9月及答案解析.doc_第4页
第4页 / 共15页
【计算机类职业资格】全国计算机等级考试二级C语言真题2009年9月及答案解析.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、全国计算机等级考试二级 C语言真题 2009年 9月及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.下列数据结构中,属于非线性结构的是( )。(分数:2.00)A.循环队列B.带链队列C.二叉树D.带链栈2.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。(分数:2.00)A.循环队列B.栈C.队列D.二叉树3.对于循环队列,下列叙述中正确的是( )。(分数:2.00)A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针一定小于队尾指针D.队头指针可以大于队尾指针,也可以小于队尾指针4.算法的空间复杂度是指(

2、)。(分数:2.00)A.算法在执行过程中所需要的计算机存储空间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数5.软件设计中划分模块的一个准则是( )。(分数:2.00)A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合6.下列选项中不属于结构化程序设计原则的是( )。(分数:2.00)A.可封装B.自顶向下C.模块化D.逐步求精7.软件详细设计产生的图如下: (分数:2.00)A.N-S图B.PAD图C.程序流程图D.E-R图8.数据库管理系统是( )。(分数:2.00)A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编

3、译系统D.一种操作系统9.在 E-R图中,用采表示实体联系的图形是( )。(分数:2.00)A.椭圆形B.矩形C.菱形D.三角形10.有如下三个关系 R、S 和 T: (分数:2.00)A.选择B.投影C.交D.并11.下列叙述中正确的是( )。(分数:2.00)A.程序设计的任务就是编写程序代码并上机调试B.程序设计的任务就是确定所用数据结构C.程序设计的任务就是确定所用算法D.以上三种说法都不完整12.下列选项中,能用作用户标识符的是( )。(分数:2.00)A.voidB.8 8C._0_D.unsigned13.阅读下列程序: #includestdio.h main() int ca

4、se;float printF; printf(“请输入 2个数:“);scanf(“%d%f“, printf(“%d%f/n“,case,printF); 该程序在编译时产生错误,其出错原因是( )。(分数:2.00)A.定义语句出错,case 是关键字,不能用作用户自定义标识符B.定义语句出错,printF 不能用作用户自定义标识符C.定义语句无错,scanf 不能作为输入函数使用D.定义语句无错,printf 不能输出 case的值14.表达式:(int)(double)9/2)-(9)%2 的值是( )。(分数:2.00)A.0B.3C.4D.515.若有定义语句:int x=10;

5、则表达式 X-=x+x的值为( )。(分数:2.00)A.-20B.-10C.0D.1016.有下列程序: #includestdio.h main() int a=1,b=0; printf(“%d,“,b=a+B); printf(“%d/n“,a=2*B); 程序运行后的输出结果是( )。(分数:2.00)A.0,0B.1,0C.3,2D.1,217. 设有定义: int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是 (分数:2.00)A.if(ab)c=a,a=b,b=c;B.if(ab)c=a,a=b,b=c;C.if(ab)c=a;a=b;b=c;D.if(ab)

6、c=a;a=b;b=c;18.有下列程序: #includestdio.h main() int c=0,k, for(k-1;k3;k+) switch(k) default:c+=k; case 2:C+;break; case 4:c+=2;break; printf(“%d/n“,C) ; 程序运行后的输出结果是( )。(分数:2.00)A.3B.5C.7D.919.以下程序中,与语句:k=ab?(bc?1:0):0;功能相同的是(分数:2.00)A.if(ab) else k=0;B.if(ab)|(bc)k=1; else k=0;C.if(ab) k=1; else if(bc)

7、 k=1;20.有下列程序: #includestdio.h main() char s=“012xy“;int i,n=0; for(i=0;si!=0;i+) if(Si=a printf(“%d/n“,n); 程序运行后的输出结果是( )。(分数:2.00)A.0B.2C.3D.521.有下列程序: #includestdio.h main() int n=2,k=0; while(k+ printf(“%d%d/n“,k,n); 程序运行后的输出结果是( )。(分数:2.00)A.0 2B.1 3C.5 7D.1 222.有下列定义语句,编译时会出现编译错误的是( )。(分数:2.00

8、)A.Char a=a;B.Char a=/n;C.Char a=aa;D.Char a=/x2d;23.有下列程序: #includestdio.h main() char c1,c2; c1=A+8-4; c2=A+8-5; printf(“%c,%d/n“,c1,c2) ; 已知字母 A的 ASCII码为 65,程序运行后的输出结果是( )。(分数:2.00)A.E,68B.D,69C.E,DD.输出无定值24.有下列程序: #includestdio.h void fun(int p) int d=2; p=d+;printf(“%d“,p); main() int a=1; fun(

9、A) ;printf(“%d/n“,A) ; 程序运行后的输出结果是( )。(分数:2.00)A.32B.12C.21D.2225.下列函数 findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。 #define MIN-2147483647 int findmax(int x,int n) int i,max; for(i=0;in;i+) max=MIN; if(maxxi) max=xi; return max; 造成错误的原因是( )。(分数:2.00)A.定义语句 int i,max;中 max未赋初值B.在赋值语句 max=MIN;中,不应给 m

10、ax赋 MIN值C.语句 id(maxXmax=X 中判断条件设置错误D.赋值语句 max=M1N;放错了位置26.有下列程序: #includestdio.h main() int m=1,n=2,*p= r=p;p=q;q=r; printf(“%d,%d,%d,%d/n“,m,n,*p,*q); 程序运行后的输出结果是( )。(分数:2.00)A.1,2,1,2B.1,2,2,1C.2,1,2,1D.2,1,1,227.若有定义语句:int a410,*p,*q4;且 0i4,则错误的赋值是( )。(分数:2.00)A.p=aB.q=aC.p=aD.p= printf(“%d,“,str

11、len(p);printf(“%s/n“,p); 程序运行后的输出结果是( )。(分数:2.00)A.9,One*WorldB.9,One*Dream!C.10,One*Dream!D.10,One*World29.有下列程序: #includestdio.h main() int a=2,3,5,4,i; for(i=0;i4;i+) switch(i%2) case 0:switch(ai%2) case 0:ai+;break; case 1:ai-; )break; case 1:ai=0; for(i=0;i4;i+)primf(“%d“,ai);printf(“/n“); 程序运行

12、后的输出结果是( )。(分数:2.00)A.3 3 4 4B.2 0 5 0C.3 0 4 0D.0 3 0 430.有下列程序: #inicludestdio.h #includestring.h main() char a10=“abcd“; printf(“%d,%d/n“,strlen(A) ,sizeof(A) ); 程序运行后的输出结果是( )。(分数:2.00)A.7,4B.4,10C.8,8D.10,1031.下列是有关 C语言字符数组的描述,其中错误的是( )。(分数:1.00)A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组中

13、的内容不一定是字符串D.字符数组只能存放字符串32.下列函数的功能是( )。 fun(char*a,char*B) while(*b=*A) !=/0) a+;b+;(分数:1.00)A.将 a所指字符串赋给 b所指空间B.使指针 b指向 a所指字符串C.将 a所指字符串和 b所指字符串进行比较D.检查 a和 b所指字符串中是否有/033.设有下列函数: void fun(int n,char*S) 则下面对函数指针的定义和赋值均正确的是( )。(分数:1.00)A.void(*p();pf=fun;B.void*pf();pr=fun;C.void*pr();*pf=fun;D.void(*

14、p(int,cha;pf=34.有下列程序: #includeStdio.h int f(int n); main() int a=3,s; s=f(A) ;s=s+f(A) ;printf(“%d/n“,s); int f(int n) static int a=1; n+=a+; return n; 程序运行后的输出结果是( )。(分数:1.00)A.7B.8C.9D.1035.有下列程序: #includestdio.h #define f(x)x*x*X main() int a=3,s,t; s=f(a+1) ;t=f(a+1) ); printf(“%d,%d/n“,s,t); 程

15、序运行后的输出结果是( )。(分数:1.00)A.10,64B.10,10C.64,10D.64,6436.下列结构体的定义语句中,错误的是( )。(分数:1.00)A.struct ord int x;int y;int z;struct ord a;B.struct ord int x;int y;int z;stmct ord a;C.stmct ord int x;int y;int z;a;D.structint x;int y;int z;a;37.设有定义:char*c;,下列选项中能够使字符型指针 c正确指向一个字符串的是( )。(分数:1.00)A.char str=“str

16、ing“;c=str;B.scanf(“%s“, ;C.c=getchar();D.*c=*string“;38.有下列程序: #includestdio.h #includestring.h Stmct A int a;char b10;double c;struct A f(struct A t); main() struct A a=1001,“ZhangDa“,1098.0; a=f(A) ;printf(“%d,%s,%6.1f/n“,a.a,a.b,a.C) ; struct A f(Struct A t) t.a=1002;strcpy(t.b,“ChangRong“);t.c=

17、1202.0;return t; 程序运行后的输出结果是( )。(分数:1.00)A.1001,ZhangDa,1098.0B.1002,ZhangDa,1202.0C.1001,ChangRong,1098.0D.1002,ChangRong,1202.039.若有下列程序段: int r=8; printf(“%d/n“,r1) ; 输出结果是( )。(分数:1.00)A.16B.8C.4D.240.下列关于 C语言文件的叙述中正确的是( )。(分数:1.00)A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可

18、以构成二进制文件或文本文件D.文件由字符序列组成,其类型只能是文本文件二、B填空题/B(总题数:15,分数:30.00)41.某二叉树有 5个度为 2的结点以及 3个度为 1的结点,则该二叉树中共有 1 个结点。(分数:2.00)填空项 1:_42.程序流程图中的菱形框表示的是 1。(分数:2.00)填空项 1:_43.软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中 1 阶段产生“软件需求规格说明书”。(分数:2.00)填空项 1:_44.在数据库技术中,实体集之间的联系可以是一对一、一对多或多对多的,那么“学生”和“可选课程”的联系为 1。(分数:2.00)填空项 1:_45.

19、人员基本信息一般包括身份证号、姓名、性别、年龄等。其中可以作为主关键字的是 1。(分数:2.00)填空项 1:_46.若有定义语句:int a=5;,则表达式:a+的值是 1。(分数:2.00)填空项 1:_47.若有语句 double x=17;int y;,当执行 y=(int)(x/5) %2;之后 y的值为 1。(分数:2.00)填空项 1:_48.下列程序运行后的输出结果是_。 #includestdio.h main() int x=20; printf(“%d“,0x20) ; printf(“%dkn“,0x(分数:2.00)填空项 1:_49.下列程序运行后的输出结果是_。

20、#includestdio.h main() int a=1,b=7; do b=b/2;a+=b; while(b1; printf(“%d/n“,A) ;(分数:2.00)填空项 1:_50.有下列程序: #includestdio.h main() int f,f1,f2,i; f1=0;f2=1; printf(“%d%d“,f1,f2) ; for(i:3;i=5;i+) f=f1+f2;printf(“%d“,f); f1=f2;f2=f; printf(“/n“); 程序运行后的输出结果是_。(分数:2.00)填空项 1:_51.有下列程序: #includestdio.h in

21、t a=5; void fun(int B) int a=10; a+2b;printf(“%d“,A) ; main() int c=20; fun(C) ;a+=c;printf(“%d/n“,A) ; 程序运行后的输出结果是_。(分数:2.00)填空项 1:_52.设有定义: struct person int ID;char name12;p; 请将 scanf(“%d“,_);语句补充完整,使其能够为结构体变量 p的成员 ID正确读入数据。(分数:2.00)填空项 1:_53.有下列程序: #includestdio.h main() char a20=“How are you?“,

22、b20; scanf(“%s“,B) ;printf(“%s%s/n“,a,B) ; 程序运行时从键盘输入:How are you?回车 则输出结果为_。(分数:2.00)填空项 1:_54.有以下程序 #includestdio.h typedef struct int num;double s;REC; void funl(REC x)x.num=23;x.s=88.5; main() REC a=16,90.0; funl (A) ; printf(“%d/n“,a.mum); 程序运行后的输出结果是_。(分数:2.00)填空项 1:_55.有下列程序: #includestdio.h

23、fun(int x) if(x/20) fun(x/2) : printf(“%d“,x); main() fun(6) ;printf(“/n“); 程序运行后的输出结果是_。(分数:2.00)填空项 1:_全国计算机等级考试二级 C语言真题 2009年 9月答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.下列数据结构中,属于非线性结构的是( )。(分数:2.00)A.循环队列B.带链队列C.二叉树D.带链栈 解析:解析 一个算法的空间复杂度,一般是指执行这个算法所需的存储空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的

24、初始数据所占用的存储空间及算法执行过程中所需要的额外空间。2.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。(分数:2.00)A.循环队列B.栈 C.队列D.二叉树解析:解析 数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。3.对于循环队列,下列叙述中正确的是( )。(分数:2.00)A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针一定小于队尾指针 D.队头指针可以大于队尾指针,也可以小于队尾指针解析:解析 对二叉树的前序遍历是指先访问根结点,然后访问左子树,最后访问右子树,并且

25、,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。4.算法的空间复杂度是指( )。(分数:2.00)A.算法在执行过程中所需要的计算机存储空间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数 解析:解析 软件是运行在计算机硬件之上的逻辑实体,包括程序、数据和相关的文档,软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制。5.软件设计中划分模块的一个准则是( )。(分数:2.00)A.低内聚低耦合 B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合解析:解析 耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用

26、方式以及哪些信息通过接口。6.下列选项中不属于结构化程序设计原则的是( )。(分数:2.00)A.可封装B.自顶向下 C.模块化D.逐步求精解析:解析 在数据库系统中,需要对数据进行集中、统一的管理,以达到被多个应用程序共享的目标。7.软件详细设计产生的图如下: (分数:2.00)A.N-S图B.PAD图C.程序流程图D.E-R图 解析:解析 软件工程包括 3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段:工具支持软件的开发、管理和文档生成;过程支持对软件开发各个环节的控制和管理。8.数据库管理系统是( )。(分数:2.00)A.操作系统的一部分B.在操作系统支持下的系统软件 C

27、.一种编译系统D.一种操作系统解析:解析 关系数据库管理系统的专门关系运算包括选择运算、投影运算和连接运算。9.在 E-R图中,用采表示实体联系的图形是( )。(分数:2.00)A.椭圆形B.矩形 C.菱形D.三角形解析:解析 将 E-R图转换成指定 RDBMS中的关系模式是数据库逻辑设计的主要工作。从 E-R图到关系模式的转换是比较直接的,实体和联系都可以表示成关系。10.有如下三个关系 R、S 和 T: (分数:2.00)A.选择B.投影C.交D.并 解析:解析 物理设计阶段主要解决选择文件存储结构和确定文件存取方法的问题,包括选择存储结构、确定存取方法、选择存取路径和确定数据的存放位置。

28、11.下列叙述中正确的是( )。(分数:2.00)A.程序设计的任务就是编写程序代码并上机调试B.程序设计的任务就是确定所用数据结构C.程序设计的任务就是确定所用算法D.以上三种说法都不完整 解析:解析 所谓程序设计就是把解题步骤用程序设计语言描述出来的工作过程。简单的程序设计一般包含以下 4个部分:确定数据结构、确定算法、编写源代码程序、调试和运行程序。12.下列选项中,能用作用户标识符的是( )。(分数:2.00)A.voidB.8 8C._0_ D.unsigned解析:解析 在程序中使用的变量名、函数名、标号等统称为标识符。除库函数的函数名由系统定义外,其余都由用户自定义。C 语言规定

29、,标识符只能是字母(AZ,az)、数字(09)、下画线组成的字符串,并且其第一个字符必须是字母或下画线。用户定义的标识符不应与关键字相同。void 和 unsigned类型声明关键字,不能作为标识符。13.阅读下列程序: #includestdio.h main() int case;float printF; printf(“请输入 2个数:“);scanf(“%d%f“, printf(“%d%f/n“,case,printF); 该程序在编译时产生错误,其出错原因是( )。(分数:2.00)A.定义语句出错,case 是关键字,不能用作用户自定义标识符 B.定义语句出错,printF 不

30、能用作用户自定义标识符C.定义语句无错,scanf 不能作为输入函数使用D.定义语句无错,printf 不能输出 case的值解析:解析 在程序中使用的变量名、函数名、标号等统称为标识符。除库函数的函数名由系统定义外,其余都由用户自定义。C 语言规定,标识符只能是字母(AZ,az)、数字(09)、下画线组成的字符串,并且其第一个字符必须是字母或下画线。用户定义的标识符不应与关键字相同。void 和 unsigned类型声明关键字,不能作为标识符。14.表达式:(int)(double)9/2)-(9)%2 的值是( )。(分数:2.00)A.0B.3 C.4D.5解析:解析 (double)9

31、/2 的计算结果被转换为血型,所以截取后的运算结果为 4,所以(int)(double)9/2)-(9)%2 =3。15.若有定义语句:int x=10;则表达式 X-=x+x的值为( )。(分数:2.00)A.-20B.-10 C.0D.10解析:解析 x-=x+x 为 x=x-(x+x),即运算后结果为-10。16.有下列程序: #includestdio.h main() int a=1,b=0; printf(“%d,“,b=a+B); printf(“%d/n“,a=2*B); 程序运行后的输出结果是( )。(分数:2.00)A.0,0B.1,0C.3,2D.1,2 解析:解析 第一

32、个 printf语句 a+b,b=1;第二个 printf语句 a=2xb=2。17. 设有定义: int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是 (分数:2.00)A.if(ab)c=a,a=b,b=c;B.if(ab)c=a,a=b,b=c;C.if(ab)c=a;a=b;b=c; D.if(ab)c=a;a=b;b=c;解析:解析 选项 A)和选项 B)中运用了逗号表达式。逗号表达式的运算过程为:从左往右逐个计算表达式。逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式 n)的值。所以选项 A)和选项 B)程序执行后 a、 b、c 的值都分为 1、2、3,

33、而选项 C)因为对应的 if语句没有用将交换语句括起来,所以第一句 c=a不执行,执行后为:2、3、3。18.有下列程序: #includestdio.h main() int c=0,k, for(k-1;k3;k+) switch(k) default:c+=k; case 2:C+;break; case 4:c+=2;break; printf(“%d/n“,C) ; 程序运行后的输出结果是( )。(分数:2.00)A.3 B.5C.7D.9解析:解析 case 语句中 default为必执行语句,所以第一次循环执行后 c=1,k=1:第二次 k=2,执行case 2条件后 k=2,c

34、=3,所以 c=3。19.以下程序中,与语句:k=ab?(bc?1:0):0;功能相同的是(分数:2.00)A.if(ab) else k=0; B.if(ab)|(bc)k=1; else k=0;C.if(ab) k=1; else if(bc) k=1;解析:解析 e1?7e2:e3 首先对 e1求值结果不为 0(也就是 e1表达式关系成立),就对 e2求值,并将其结果作为整个表达式的值(e3 不起作用)。否则(也就是 e1表达式不成立),就对 e3求值,并将其结果作为整个表达式的值(e2 不起作用)。所以,当 ab 为真,执行(bc?1:0), bc 为真,则为 1,其他为0。20.有

35、下列程序: #includestdio.h main() char s=“012xy“;int i,n=0; for(i=0;si!=0;i+) if(Si=a printf(“%d/n“,n); 程序运行后的输出结果是( )。(分数:2.00)A.0B.2 C.3D.5解析:解析 本程序为判断字符串中 a到 z中的字符个数,所以数组 s中的符合条件的字符为 x和 y,即 n=2。21.有下列程序: #includestdio.h main() int n=2,k=0; while(k+ printf(“%d%d/n“,k,n); 程序运行后的输出结果是( )。(分数:2.00)A.0 2B.

36、1 3C.5 7D.1 2 解析:解析 while 判断中 k+执行后,取 n=2没有执行加加运算,先取值判断,所以 n仍然为 2。22.有下列定义语句,编译时会出现编译错误的是( )。(分数:2.00)A.Char a=a;B.Char a=/n;C.Char a=aa; D.Char a=/x2d;解析:解析 因为 char是 1字节,所以 char a=aa;aa两个字节赋值错误。23.有下列程序: #includestdio.h main() char c1,c2; c1=A+8-4; c2=A+8-5; printf(“%c,%d/n“,c1,c2) ; 已知字母 A的 ASCII码

37、为 65,程序运行后的输出结果是( )。(分数:2.00)A.E,68 B.D,69C.E,DD.输出无定值解析:解析 c1 执行A+8后,c1=y,然后加8后 c1=E,同理,c2 执行A+8后等于y,然后减去5后等于 68。24.有下列程序: #includestdio.h void fun(int p) int d=2; p=d+;printf(“%d“,p); main() int a=1; fun(A) ;printf(“%d/n“,A) ; 程序运行后的输出结果是( )。(分数:2.00)A.32B.12C.21 D.22解析:解析 fun 函数中为传值调用,则在形参的改变并不改变

38、实参,所以在主函数中 a的值为 1。函数p=d+;语句中先执行赋值,然后进行 d加 1的操作,所以 p的值为 2。25.下列函数 findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。 #define MIN-2147483647 int findmax(int x,int n) int i,max; for(i=0;in;i+) max=MIN; if(maxxi) max=xi; return max; 造成错误的原因是( )。(分数:2.00)A.定义语句 int i,max;中 max未赋初值B.在赋值语句 max=MIN;中,不应给 max赋 MI

39、N值C.语句 id(maxXmax=X 中判断条件设置错误D.赋值语句 max=M1N;放错了位置 解析:解析 循环语句应该是对每一个数组中的元素与 max 值作比较,如果大于 max,则将该值赋值给max,这样就会输出最大值。而本题中每次循环中 max的值都被赋值为 MIN,所以都是 MIN与数组中值的比较,最后只是输出比 MIN大的一个值,而不是所有值中的最大值,所以 max=MIN赋值语句应放在 for循环之前。26.有下列程序: #includestdio.h main() int m=1,n=2,*p= r=p;p=q;q=r; printf(“%d,%d,%d,%d/n“,m,n,

40、*p,*q); 程序运行后的输出结果是( )。(分数:2.00)A.1,2,1,2B.1,2,2,1 C.2,1,2,1D.2,1,1,2解析:解析 *p=p=q;q=r;是将 p和 q进行交换。27.若有定义语句:int a410,*p,*q4;且 0i4,则错误的赋值是( )。(分数:2.00)A.p=a B.q=aC.p=aD.p= printf(“%d,“,strlen(p);printf(“%s/n“,p); 程序运行后的输出结果是( )。(分数:2.00)A.9,One*WorldB.9,One*Dream!C.10,One*Dream! D.10,One*World解析:解析 *

41、p=str1指向第二个字符串,所以 p的长度是字符串 One*Dream中字符!的个数。29.有下列程序: #includestdio.h main() int a=2,3,5,4,i; for(i=0;i4;i+) switch(i%2) case 0:switch(ai%2) case 0:ai+;break; case 1:ai-; )break; case 1:ai=0; for(i=0;i4;i+)primf(“%d“,ai);printf(“/n“); 程序运行后的输出结果是( )。(分数:2.00)A.3 3 4 4B.2 0 5 0C.3 0 4 0 D.0 3 0 4解析:解

42、析 进入程序中第一个 for循环,当 i=0,符合 i%2 中 case=0的条件,因此执行 switch(ai%2),取数组 a 中的第一个数,执行 case 0:ai+;break;,然后跳出第一次循环,90=3,第二次循环switch(i%2)后执行 case 1:ai=0;,所以 a1=0第三次循环同第一次,执行 case 1:ai-;,所以a2=4,第四次同第二次,所以 a3=0。30.有下列程序: #inicludestdio.h #includestring.h main() char a10=“abcd“; printf(“%d,%d/n“,strlen(A) ,sizeof(

43、A) ); 程序运行后的输出结果是( )。(分数:2.00)A.7,4B.4,10 C.8,8D.10,10解析:解析 strlen 用来求字符串的长度,而 sizeof用来求指定变量或者变量类型等所占内存大小。31.下列是有关 C语言字符数组的描述,其中错误的是( )。(分数:1.00)A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组中的内容不一定是字符串D.字符数组只能存放字符串 解析:解析 字符数组用于存储字符串,例如:char str=“Hello“;。同时,字符数组也用于存储字符或字符变量,例如:char Chars=H e,1,1,o

44、;。32.下列函数的功能是( )。 fun(char*a,char*B) while(*b=*A) !=/0) a+;b+;(分数:1.00)A.将 a所指字符串赋给 b所指空间 B.使指针 b指向 a所指字符串C.将 a所指字符串和 b所指字符串进行比较D.检查 a和 b所指字符串中是否有/0解析:解析 while(*b=*a)!=10)语句将 a字符串中的值赋值给 b,a+;b+;将 a和 b的指针向后移动一位。33.设有下列函数: void fun(int n,char*S) 则下面对函数指针的定义和赋值均正确的是( )。(分数:1.00)A.void(*p();pf=fun; B.vo

45、id*pf();pr=fun;C.void*pr();*pf=fun;D.void(*p(int,cha;pf=解析:解析 声明函数指针必须加括号,因为括号优先级高于*号。另外,函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名即可, fun 代表首地址,所以不能加 main() int a=3,s; s=f(A) ;s=s+f(A) ;printf(“%d/n“,s); int f(int n) static int a=1; n+=a+; return n; 程序运行后的输出结果是( )。(分数:1.00)A.7B.8C.9 D.10解析:解析 f 函数中 s

46、tatic int a=1;的 a是静态局部变量,不像自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。s=f(a);,n+=a+;返回 n=4,s=f(a);的 s值为 4,然后执行 s=s+f(a);f(a)返回 5,即 s=s+f(a);执行后 s=9。35.有下列程序: #includestdio.h #define f(x)x*x*X main() int a=3,s,t; s=f(a+1) ;t=f(a+1) ); printf(“%d,%d/n“,s,t); 程序运行后的输出结果是( )。(分数:1.00)A.10,64 B.10,10C.64,10D.64,64解析:解析 f(a+1)替换后为 a*a*a+1,所以为 10,f(a+1)替换后为(a+1)*(a+1)*(a+1),所以为64。36.下列结构体的定义语句中,错误的是( )。(分数:1.00)A.struct ord int x;int y;int z;struct ord a;B.struct ord int x

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1