【计算机类职业资格】二级C语言笔试-434及答案解析.doc

上传人:fuellot230 文档编号:1326244 上传时间:2019-10-17 格式:DOC 页数:31 大小:91.50KB
下载 相关 举报
【计算机类职业资格】二级C语言笔试-434及答案解析.doc_第1页
第1页 / 共31页
【计算机类职业资格】二级C语言笔试-434及答案解析.doc_第2页
第2页 / 共31页
【计算机类职业资格】二级C语言笔试-434及答案解析.doc_第3页
第3页 / 共31页
【计算机类职业资格】二级C语言笔试-434及答案解析.doc_第4页
第4页 / 共31页
【计算机类职业资格】二级C语言笔试-434及答案解析.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、二级 C 语言笔试-434 及答案解析(总分:94.00,做题时间:90 分钟)一、选择题(总题数:40,分数:62.00)1.下列描述中正确的是( )。A) 软件工程只是解决软件项目的管理问题B) 软件工程主要解决软件产品的生产率问题C) 软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D) 软件工程只是解决软件开发中的技术问题(分数:1.00)A.B.C.D.2.下列选项中,不是一个算法的基本特征的是( )。A) 完整性 B) 可行性 C) 有穷性 D) 拥有足够的情报(分数:2.00)A.B.C.D.3.从工程管理角度,软件设计一般分为两步完成,它们是_。(A) 概要设计与详细

2、设计(B) 数据设计与接口设计(C) 软件结构设计与数据设计(D) 过程设计与数据设计(分数:2.00)A.B.C.D.4.下列叙述中正确的是( )。A程序执行的效率与数据的存储结构密切相关 B程序执行的效率只取决于程序的控制结构C程序执行的效率只取决于所处理的数据量 D以上三种说法都不对(分数:1.00)A.B.C.D.5.下列选择项中不属于结构化程序设计原则的是A) 可封装 B) 自顶向下 C) 模块化 D) 逐步求精(分数:2.00)A.B.C.D.6.已知数据表 A 中每个元素距其最终位置不远,为节省时间,应采用的算法是A) 堆排序 B) 直接插入排序 C) 快速排序 D) )和)(分

3、数:2.00)A.B.C.D.7.对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n-1)/2 的排序方法是A) 快速排序 B) 冒泡排序 C) 直接插入排序 D) 堆排序(分数:2.00)A.B.C.D.8.关系数据库管理系统能实现的专门关系运算包括( )A) 排序、索引、统计 B) 选择、投影、连接C) 关联、更新、排序 D) 显示、打印、制表(分数:2.00)A.B.C.D.9.数据库管理系统中用来定义模式、内模式和外模式的语言为( )。A) C B) Basic C) DDL D) DML(分数:1.00)A.B.C.D.10.有下列二叉树,对此二叉树前序遍历的结果为( )

4、。(分数:2.00)A.B.C.D.11.能正确表“当 x 的取值在1,10和100,110范围内为真,否则为假”的表达式是( )。A) (x=1)float x=3.4,y=2.1;,则下列表达式的值为( )。(float)(a+B) /2+(int)x%(int)yA) 5.5 B) 55C) 5.500000 D) 55.00000(分数:2.00)A.B.C.D.13.设变量已正确定义并赋值,以下正确的表达式是A) x=y*5=x+Z B) int(15.8%5) C) x=y+z+5,+y D) x=25%5.0(分数:1.00)A.B.C.D.14.若 w、x、y、z、m 均为 i

5、nt 型变量,则执行下列的语句后 m 的值是( )。w=2, x=3, y=4, z=5;m=(wx)?w:x;m=(mz)?m:z;m=(my)?m:y;A) 2 B) 3 C) 5 D) 4(分数:1.00)A.B.C.D.15.有以下程序段:main()int a=5,*b,*c;c=b=程序在执行了 c=b=语句后,表达式*c 的值是( )。A) 变量 a 的地址 B) 变量 b 中的值 C) 变量 a 中的值 D) 变量 b 的地址(分数:1.00)A.B.C.D.16.执行下列程序中的输出语句后,a 的值是( )。main()int a;printf(“%d/n“,(a=2*3,a

6、*5,a+7) );A) 17 B) 37 C) 6 D) 13(分数:2.00)A.B.C.D.17.有以下程序 #includestdio.h main() int b33=0,1,2,0,1,2,0,1,2,i,j,t=0; for(i=0;i3;i+) for(j=2;j=i;j-)t+=bij; printf(“%d/n“,t); 程序运行后的输出结果是( )。 A) 4 B) 3 C) 8 D) 9(分数:1.00)A.B.C.D.18.下列程序的输出结果是( )。main()int a,b,d=25;a=d/10%9;b=aA) 6,1 B) 2,1 C) 6,0 D) 2,0(

7、分数:2.00)A.B.C.D.19.两次运行下列的程序,如果从键盘上分别输入 3 和 1,则输出结果是( )。main()int x;scanf(“%d“,doprintf(“%d“,x-=4);while(!(-x);程序的输出结果是( )。A) 1 B) 20 C) 1 4 D) 死循环(分数:1.00)A.B.C.D.22.有以下程序:#include stdio.hmain ( )int a3 3 , *p,i;p= i+)pi=i:for(i=0; i3;i+)Printf(“%d“,a1i);程序运行后的输出结果是( )。A) 012 B) 123 C) 234 D) 345(分

8、数:1.00)A.B.C.D.23.若有下列定义,则对 a 数组无素地址的正确引用是( )。int a5,*p=a;A) p+5 B) *a+1C) int func(int*A) b+=*a;retum b;main()int a=1,t=2;t+=func(printf(“%d/n“,t);A) 4 B) 5 C) 6 D) 8(分数:2.00)A.B.C.D.25.下面程序main()int x=100,a=10,b=20,okl=5,ok2=0;if(aB) if(b!=15)if(!ik1) x=1; else if(ok2)x=10;x=-1;printf(“%d/n“,x);的输

9、出是_。A) -1 B) 0 C) 1 D) 不确定的值(分数:2.00)A.B.C.D.26.下列程序段的运行结果是( )。#includestdio.hvoid main()char str=“ABC“,*p=str;printf(“%d/n“,*(p+3);A) 67 B) 0 C) 字符C的地址 D) 字符C(分数:2.00)A.B.C.D.27.对以下程序段的描述,正确的是( )。x= -1;dox=x*x;while(!x);A) 是死循环 B) 循环执行两次 C) 循环执行一次 D) 有语法错误(分数:1.00)A.B.C.D.28.以下程序的输出结果是( )。main()int

10、 x=0.5;char z=a;printf(“%d/n“,(xprintf( % d, % d/n“, strlen(s),sizeof(s);执行后的输出结果是 _。A) 赋初值的字符串有错 B) 6,7C) 5,6 D) 6,6(分数:2.00)A.B.C.D.30.设 q1 和 q2 是指向一个 float 型一维数组的指针变量,k 为 float 型变量,则不能正确执行的语句是( )。A) k=*q1+*q2; B) q1=k; C) q1=q2; D) k=*q1*(*q2);(分数:2.00)A.B.C.D.31.若有说明语句:double *p,a;则能通过 scanf 语句正

11、确给输入项读入数据的程序段是 ( )。A) *p=scanf(“%1f“,p); B) *p=scanf(“%f“,p);C) p=scanf(“%1f“,*p);D) p=scanf(“%1f“,p);(分数:2.00)A.B.C.D.32.下列程序的输出结果是( )。#inCludestdio.hmain()charch25=“1234“,“5678“,*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=pij-0;printf(“%d“,s);A) 6357 B) 6135 C) 1357 D)

12、 691357(分数:1.00)A.B.C.D.33.以下能正确定义二维数组的是 _。A) int a3; B) int a3=2*3;C) int a3=; D) int a23=1,2,3,4;(分数:2.00)_34.下列叙述中不正确的是( )。A) 在 C 语言中调用函数时,只能把实参的值任送给形参,形参的值不能传送给实参B) 在 C 的函数中,最好使用全局变量C) 外部变量可以在函数之间传递数据D) 自动变量实质上是一个函数内部的局部变量(分数:2.00)A.B.C.D.35.有以下程序:main()int a=1,b=3,c=5,*p;int *p1=float y;int a2;

13、unsigned b3;char name10;B) structstuunsigneda3;unsigned b4;x;int*p=C) struc tsuint a;float x4;y=1,1.0;floatdat a=y.x;D) stmct ndint a,b;unsigned c2=5;(分数:1.00)A.B.C.D.38.以下选项中可作为 C 语言合法常量的是( )。A) -80 B) -080 C) -8e1.0 D) -80.0e(分数:1.00)A.B.C.D.39.有以下函数fun(char *a,char *b)while(*a!=/0) b+; return(*a-

14、*b);该函数的功能是_。A) 计算 a 和 b 所指字符串的长度之差 B) 将 b 所指字符串连接到 a 所指字符串中C) 将 b 所指字符串连接到 a 所指字符串后面 D) 比较 a 和 b 所指字符串的大小(分数:1.00)A.B.C.D.40.以下程序的输出结果是( )。#includestdiohstruct stint x; int *y; *p;int dt4 = 10,20,30,40 ;struct st aa4= 50,a=getchar(); scanf(“% d“, a=a-A+0; b=b*2;printf(“% c % c/n“, a, b);(分数:2.00)填空

15、项 1:_47.若有定义语句“int a=5;”则表达式 a+的值是 1。(分数:4.00)填空项 1:_48.若 x 为 int 类型,请写出与!x 等价的 C 语言表达式 1。(分数:2.00)填空项 1:_49.以下程序将数组 a 的 4 个元素和数组 b 的 6 个元素写到名为 lett.dat 的二进制文件中,请填空。#include stdioh#include stdlibhmain()FILE *fp;char a5=“1234“,b7=“abcedf“;if(fp=fopen(“U /U“,“wb“)=NULL) exit(0);fwrite(a,sizeof(char),4

16、,fp);fwrite(b,U /U,1,fp);fclose(fp);(分数:2.00)填空项 1:_50.以下程序用于判断 a、b、c 能否构成三角形,若能,输出 YES,否则输出 NO。当给 a、b、c 输入三角形三条边长时,确定 a、b、c 能构成三角形的条件是需同时满足三个条件:a+bc,a+cb,b+ca。请填空。main()float a,b,c;scanf(“%f%f%f“,(y!=19)x+);(分数:2.00)填空项 1:_52.有以下程序:# includestdio.hmain()int a=1,2,3,4,5,6,7,8,9,10,11,12, *p=a+5, *q=

17、NULL;*q=*(p+5);printf(“%d%d/n“,*p,*q);程序运行后的输出结果是U /U。(分数:2.00)填空项 1:_53.有以下程序,请在_处填写正确语句,使程序可正常编译运行。#includestdio.h_;main()(double x, y, (*p)();scanf(“%1f%1f“, x, y);p=avg;printf(“%f/n“, (*p)(x, y);double avg(double a, double b)return(a+b)/2);(分数:2.00)填空项 1:_54.以下程序的输出结果是_。#includestring.hmain()cha

18、r a=/1,/2,/3,/4,/0;printf(“% d % d/n“,sizeof(a),strlen(a);(分数:2.00)填空项 1:_55.以下程序中函数 fun 的功能是:统计 person 所指结构体数组中所有性别(sex)为 M 的记录的个数,存入变量 n 中,并作为函数值返回。请填空:#includestdio.h#define N 3typedef structint mum,char name10;char sex;SS;int fun(SS person)int i,n=0;for(i=0;iN;i+)if(_=M)n+;return n;main()SS WN=1

19、,AA,F,2,BB,M,3,CC,M;int n;n=fun(W);printf(“n=%d/n“,n);(分数:2.00)填空项 1:_二级 C 语言笔试-434 答案解析(总分:94.00,做题时间:90 分钟)一、选择题(总题数:40,分数:62.00)1.下列描述中正确的是( )。A) 软件工程只是解决软件项目的管理问题B) 软件工程主要解决软件产品的生产率问题C) 软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D) 软件工程只是解决软件开发中的技术问题(分数:1.00)A.B.C. D.解析:解析 软件工程是计算机软件开发和维护的工程学科,它采用工程的概念、原理、技术和

20、方法来开发和维护软件,它把经过时间考验而证明正确的管理技术和当前能够得到的最好技术结合起来。2.下列选项中,不是一个算法的基本特征的是( )。A) 完整性 B) 可行性 C) 有穷性 D) 拥有足够的情报(分数:2.00)A. B.C.D.解析:解析 作为一个算法,一般应该具有下列 4 个特征:可行性,即考虑到实际的条件能够达到一个满意的结果:确定性,算法中的第一个步骤都必须是有明确定义的:有穷性,一个算法必须在有限的时间内做完;拥有足够的情报。3.从工程管理角度,软件设计一般分为两步完成,它们是_。(A) 概要设计与详细设计(B) 数据设计与接口设计(C) 软件结构设计与数据设计(D) 过程

21、设计与数据设计(分数:2.00)A. B.C.D.解析:4.下列叙述中正确的是( )。A程序执行的效率与数据的存储结构密切相关 B程序执行的效率只取决于程序的控制结构C程序执行的效率只取决于所处理的数据量 D以上三种说法都不对(分数:1.00)A. B.C.D.解析:解析 数据的存储结构、程序处理的数据量、程序的算法等都会影响程序执行效率。5.下列选择项中不属于结构化程序设计原则的是A) 可封装 B) 自顶向下 C) 模块化 D) 逐步求精(分数:2.00)A. B.C.D.解析:解析 模块化、自顶向下、逐步求精都是结构化程序设计的原则;可封装是面向对象程序设计原则。6.已知数据表 A 中每个

22、元素距其最终位置不远,为节省时间,应采用的算法是A) 堆排序 B) 直接插入排序 C) 快速排序 D) )和)(分数:2.00)A.B. C.D.解析:解析 堆排序的比较次数为 nlog2n;直接插入排序的比较次数为 n(n-1)/2;快速排序的比较次数为 nlog2n。7.对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n-1)/2 的排序方法是A) 快速排序 B) 冒泡排序 C) 直接插入排序 D) 堆排序(分数:2.00)A.B.C.D. 解析:解析 在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都为 n(n-1)/2,堆排序需要的比较次数为 nlog2n。8.

23、关系数据库管理系统能实现的专门关系运算包括( )A) 排序、索引、统计 B) 选择、投影、连接C) 关联、更新、排序 D) 显示、打印、制表(分数:2.00)A.B. C.D.解析:解析 关系数据库管理系统的专门关系运算包括选择运算、投影运算和连接运算。9.数据库管理系统中用来定义模式、内模式和外模式的语言为( )。A) C B) Basic C) DDL D) DML(分数:1.00)A.B.C. D.解析:解析 数据定义语言(Data Definition Language,简称 DDL)负责数据的模式定义与数据的物理存取构建;数据操作语言(Data Manipulation Langua

24、ge,简称 DML)负责数据的操作,包括查询及增、删、改等操作。10.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:2.00)A.B.C.D. 解析:解析 对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。记住 3 种遍历的顺序:前序,访问根一按前序遍历左子树一按前序遍历右子树;中序,按中序遍历左子树一访问根一按中序遍历右子树;后序,按后序遍历左子树一按后序遍历右子树一访问根。11.能正确表“当 x 的取值在1,10和100,110范围内为真,否则为假”的表达式是( )。A) (x=1)float x

25、=3.4,y=2.1;,则下列表达式的值为( )。(float)(a+B) /2+(int)x%(int)yA) 5.5 B) 55C) 5.500000 D) 55.00000(分数:2.00)A.B.C. D.解析:解析 在计算(float)(a+B) /2 时,由于通过强制类型转换将(a+B) 转换成了 float 型,所以应先将 2 转换成 float 型,再进行计算,得 4.500000。在计算(int)x%(int)y 时,先将 x 和 y 通过强制类型转换成 int 型,再进行求余运算,得 1。又因为 4.500000 是 float 型,所以将 1 和它相加时,先将 1 换成

26、float 型,再计算,得到 5.500000。知识扩展类型转换的一般规则是;低级类型服从高级类型,并进行相应的转换数据类型的级别由低到高的排序表示为:charintunsignedlongfloatdouble。13.设变量已正确定义并赋值,以下正确的表达式是A) x=y*5=x+Z B) int(15.8%5) C) x=y+z+5,+y D) x=25%5.0(分数:1.00)A.B.C. D.解析:解析 求余运算符“%“两边的运算对象必须是整型,而选项 B)和 D)中“%“两边的运算对象有浮点整数据,所以选项 B)和 D)是错误的表达式。在选项 A)中赋值表达式的两边出现相同的变量 x

27、,也是错误的。选项 C)是一个逗号表达式,所以正确答案为 C)。14.若 w、x、y、z、m 均为 int 型变量,则执行下列的语句后 m 的值是( )。w=2, x=3, y=4, z=5;m=(wx)?w:x;m=(mz)?m:z;m=(my)?m:y;A) 2 B) 3 C) 5 D) 4(分数:1.00)A. B.C.D.解析:解析 条件表达式“a?b:c”的含义是:当 a 为真时,其值等于表达式 b 的值,当 a 为假时,其值等于表达式 c 的值。表达式运算过程:第 1 个表达式:w=2x=3 为真,所以返回 w 的值,即 m=w=2;第 2 个表达式:m=2z=5为真,所以返回 m

28、 的值,即 m=2;第个表达式:w=2y=4 为真,所以返回 m 的值,即 m=2。15.有以下程序段:main()int a=5,*b,*c;c=b=程序在执行了 c=b=语句后,表达式*c 的值是( )。A) 变量 a 的地址 B) 变量 b 中的值 C) 变量 a 中的值 D) 变量 b 的地址(分数:1.00)A.B.C. D.解析:解析 本题考查指向指针的指针。*c 表示 c 间接指向的对象的地址,而*c 是 c 间接指向的对象的值。在 c*printf(“%d/n“,(a=2*3,a*5,a+7) );A) 17 B) 37 C) 6 D) 13(分数:2.00)A.B.C. D.

29、解析:解析 本题考查逗号表达式。本题的返回值是 a+7, a=2.3=6,a+7=13(注意:本题问的是 a 的值,而不是程序的输出值)。17.有以下程序 #includestdio.h main() int b33=0,1,2,0,1,2,0,1,2,i,j,t=0; for(i=0;i3;i+) for(j=2;j=i;j-)t+=bij; printf(“%d/n“,t); 程序运行后的输出结果是( )。 A) 4 B) 3 C) 8 D) 9(分数:1.00)A.B.C. D.解析:解析 这道题主要考查的是二维数组的有关知识。在两层 for 循环语句中,累加上三角元素,所以程序执行的过

30、程为 t=b00+b01+b02+b1+b12+b22=8。18.下列程序的输出结果是( )。main()int a,b,d=25;a=d/10%9;b=aA) 6,1 B) 2,1 C) 6,0 D) 2,0(分数:2.00)A.B. C.D.解析:解析 算术运行符“/”“%”的优先级处于同一级,并且两者的结合性都是从左到右。所以算术表达式运算过程为:a=25/10%9=2%9=2:当逻辑运算符“doprintf(“%d“,x-=4);while(!(-x);程序的输出结果是( )。A) 1 B) 20 C) 1 4 D) 死循环(分数:1.00)A.B.C. D.解析:解析 本题考查 do

31、while 循环。执行 printf 语句,x=x-4 1,输出 1,判断 while 循环的控制条件,-x=0,则(!(-x)非零,循环条件成立,执行下一次循环;执行 printf 语句,x=x-4=-4,输出-4,判断 while 循环的控制条件,-x=-5,则(!(-x)为零,循环条件不成立,结束循环。22.有以下程序:#include stdio.hmain ( )int a3 3 , *p,i;p= i+)pi=i:for(i=0; i3;i+)Printf(“%d“,a1i);程序运行后的输出结果是( )。A) 012 B) 123 C) 234 D) 345(分数:1.00)A.

32、B.C.D. 解析:解析 程序通过 for(i=0;i9;i+) pi=i 语句对二维数组 a 的元素依次赋值,使 a00=0,a01=1,a02=2,a10=3,a11=4,a12=5,a20 =6,a21=7,a22=8,程序运行的结果为 345。23.若有下列定义,则对 a 数组无素地址的正确引用是( )。int a5,*p=a;A) p+5 B) *a+1C) int func(int*A) b+=*a;retum b;main()int a=1,t=2;t+=func(printf(“%d/n“,t);A) 4 B) 5 C) 6 D) 8(分数:2.00)A.B. C.D.解析:解

33、析 本题考查函数调用时的参数传递。在执行函数 func 时,由于全局定义了一个变量 b,所以在函数体中执行时 b=2+1=3,最终 t=2+3=5。25.下面程序main()int x=100,a=10,b=20,okl=5,ok2=0;if(aB) if(b!=15)if(!ik1) x=1; else if(ok2)x=10;x=-1;printf(“%d/n“,x);的输出是_。A) -1 B) 0 C) 1 D) 不确定的值(分数:2.00)A. B.C.D.解析:评析 第判断值为真,过渡到下一个判断,第二个判断为真,过渡到第三个判断如此循环,在打印输出语句的前行,程序绐变量 x 赋了

34、值,为-1,所以,无论前期如何变化,最后的 x 值依然为-126.下列程序段的运行结果是( )。#includestdio.hvoid main()char str=“ABC“,*p=str;printf(“%d/n“,*(p+3);A) 67 B) 0 C) 字符C的地址 D) 字符C(分数:2.00)A.B. C.D.解析:解析 先定义了一个指向字符型数组 str 的指针 p,指针 p 指向数组 str 的首地址,p+3 将指针指向 str3,又因为字符型数组在存放字符串时会自动在末尾加上/0,所以*(p+3)=0。27.对以下程序段的描述,正确的是( )。x= -1;dox=x*x;wh

35、ile(!x);A) 是死循环 B) 循环执行两次 C) 循环执行一次 D) 有语法错误(分数:1.00)A.B.C. D.解析:解析 do-while 语句的执行过程是:首先执行循环体语句,再判断表达式值的真假。在本题中,表达式的值为假,因此循环体只执行一次。28.以下程序的输出结果是( )。main()int x=0.5;char z=a;printf(“%d/n“,(xprintf( % d, % d/n“, strlen(s),sizeof(s);执行后的输出结果是 _。A) 赋初值的字符串有错 B) 6,7C) 5,6 D) 6,6(分数:2.00)A.B.C. D.解析:解析 本题

36、中定义字符数组 s 时没有指定数组长度,s 初始化后存放的内容为“/n123/0“,其中/n和/是转义字符,所以 strlen(s)=5,sizeof(s)=6。30.设 q1 和 q2 是指向一个 float 型一维数组的指针变量,k 为 float 型变量,则不能正确执行的语句是( )。A) k=*q1+*q2; B) q1=k; C) q1=q2; D) k=*q1*(*q2);(分数:2.00)A.B. C.D.解析:解析 选项 A)是将指针 q1 和 q2 所指向的变量值相加,然后赋给 k;选项 B)中,float 型数据和指针型数据之间不能进行赋值运算:选项 C)中,是两个指针变量

37、之间的赋值;选项 D)中,是两个指针型变量所指向的两个 float 型数据相乘。31.若有说明语句:double *p,a;则能通过 scanf 语句正确给输入项读入数据的程序段是 ( )。A) *p=scanf(“%1f“,p); B) *p=scanf(“%f“,p);C) p=scanf(“%1f“,*p);D) p=scanf(“%1f“,p);(分数:2.00)A.B.C.D. 解析:解析 double*p,a;语句表示定义了一个指向双精度型的指针变量 p 和双精度型变量 a,而语句p=int i,j,s=0;for(i=0;i2;i+)pi=chi;for(i=0;i2;i+)fo

38、r(j=0;pij/0;j+=2) s=pij-0;printf(“%d“,s);A) 6357 B) 6135 C) 1357 D) 691357(分数:1.00)A.B.C. D.解析:解析 本题先将指针 p 指向二维数组 ch25,相当于 p0=“1234“,p1=“5678“,通过双重for 循环,是要将 p 中的字符隔一个输出一个,通过 s=pij-0这条语句是将所要输出的字符转换成相应的+进制数。33.以下能正确定义二维数组的是 _。A) int a3; B) int a3=2*3;C) int a3=; D) int a23=1,2,3,4;(分数:2.00)_解析:解析 (1)

39、二维数组的定义二维数组的定义方式为:类型说明符数组名常量表达式常量表达式。二维数组在内存中是按行优先的顺序存放的,即先存放第一行的元素,再存放第二行的元素,依次类推。(2)二维数组元素的引用二维数组元素的表示形式为:数组名下标下标,下标可以是整型常量或整型表达式其范围为:0(常量表达式 -1)。(3)二维数组的初始化可以用以下方法对二维数组元素初始化:分行给二维数组赋初值例如:int a22=1,234.下列叙述中不正确的是( )。A) 在 C 语言中调用函数时,只能把实参的值任送给形参,形参的值不能传送给实参B) 在 C 的函数中,最好使用全局变量C) 外部变量可以在函数之间传递数据D) 自

40、动变量实质上是一个函数内部的局部变量(分数:2.00)A.B. C.D.解析:解析 编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元在内存不确定的情况下,最好使用全局变量。35.有以下程序:main()int a=1,b=3,c=5,*p;int *p1=float y;int a2;unsigned b3;char name10;B) structstuunsigneda3;unsigned b4;x;int*p=C

41、) struc tsuint a;float x4;y=1,1.0;floatdat a=y.x;D) stmct ndint a,b;unsigned c2=5;(分数:1.00)A. B.C.D.解析:解析 本题主要考查的知识点是结构类型的概念和定义,结构定义的一般形式是:struct 结构类型名称 数据类型 成员名 1;数据类型 成员名 2;数据类型 成员名 n;struct 为关键字,是结构的标识符;中包围的是组成该结构的成员项;每个成员的数据类型既可以是简单的数据类型,也可以是复杂的数据类型。整个定义作为一个完整的语句,用分号结束。结构类型名称是可以省略的,此时定义的结构称为无名结构

42、。38.以下选项中可作为 C 语言合法常量的是( )。A) -80 B) -080 C) -8e1.0 D) -80.0e(分数:1.00)A. B.C.D.解析:解析 C 语言的常量分为整型常量、实型常量和字符型常量。本题中包含整型常量和实型常量。选项 B)以 0 打头,应该属于八进制整数,而八进制整数只能用数字 07 表示,所以选项 B)不合法;选项C)和 D)从形式上看属于实型常量,但对于指数形式的实型常量,e(或 E)之前必须有数字,且 e 后面的指数必须为整数,所以选项 C)和 D)都不合法;选项 A)属于实型常量中正确的十进制小数形式。39.有以下函数fun(char *a,cha

43、r *b)while(*a!=/0) b+; return(*a-*b);该函数的功能是_。A) 计算 a 和 b 所指字符串的长度之差 B) 将 b 所指字符串连接到 a 所指字符串中C) 将 b 所指字符串连接到 a 所指字符串后面 D) 比较 a 和 b 所指字符串的大小(分数:1.00)A.B.C.D. 解析:解析 本题函数有两个字符指针的参数,且没有定义返回类型,C 语言规定函数的返回类型为 int时可以省略,所以本题函数返回的是 int 型。该函数中先是一个 while 循环,循环条件是(*a!=/0)b+;,即 a、b 各向后移一位。当 a 或 b 中有一个结束或者所指的内容不一

44、样时,就退出循环,执行返回语句,返回 a 所指内容减去 b 所指内容的差。若两个字符串相同,则最后返回/0-/0=0,否则返回这两个字符串的第一对不同的字符之差。由此可以看出,该函数实现的是对两个字符串的比较。所以选项 D 正确。40.以下程序的输出结果是( )。#includestdiohstruct stint x; int *y; *p;int dt4 = 10,20,30,40 ;struct st aa4= 50,a=getchar(); scanf(“% d“, a=a-A+0; b=b*2;printf(“% c % c/n“, a, b);(分数:2.00)填空项 1:_ (正

45、确答案:1B)解析:解析 从键盘输入后,有 a=B,b=33。a=a-A+0=B-A+0=1,b=b*2=66,在输出时均需要把 a,b 转化为字符型,因此输出为 1B。47.若有定义语句“int a=5;”则表达式 a+的值是 1。(分数:4.00)填空项 1:_ (正确答案:5)解析:解析 本题考查+后缀的用法。a+的功能是先取 a 的值,再将 a 加 1,a=5,a+的值还是 5,在下次使用前 a 的值先自加 1。所以本题答案为 5。48.若 x 为 int 类型,请写出与!x 等价的 C 语言表达式 1。(分数:2.00)填空项 1:_ (正确答案:x=0)解析:解析 !x 的逻辑意思

46、就是 X 为非,即 x=0。49.以下程序将数组 a 的 4 个元素和数组 b 的 6 个元素写到名为 lett.dat 的二进制文件中,请填空。#include stdioh#include stdlibhmain()FILE *fp;char a5=“1234“,b7=“abcedf“;if(fp=fopen(“U /U“,“wb“)=NULL) exit(0);fwrite(a,sizeof(char),4,fp);fwrite(b,U /U,1,fp);fclose(fp);(分数:2.00)填空项 1:_ (正确答案:lett.dat 6*sizeof(char))解析:解析 本题主要考查函数 fwrite(char *pt,unsigned size,unsigned n,FILE *fp),把 pt 所

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

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

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