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

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

1、二级 C 语言-37 及答案解析(总分:57.99,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:48.00)1.有以下程序:#includestdio.hmain() int c;while(c=getchar()!=/n)switch(c-2)case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+4);case 4:putchar(c+4);break;printf(“/n“);输入以下数据,CR代表一个回车符,2743CR程序的输出结果是( )。 A. 877 B. 966 C. 778 D. 766(

2、分数:1.00)A.B.C.D.2.下列不属于软件工程的 3 个要素的是U /U。 A. 工具 B. 过程 C. 方法 D. 环境(分数:2.00)A.B.C.D.3.若有代数式 (分数:1.00)A.B.C.D.4.以下 if 语句书写正确的是 U /U A. if(x=0;) printf(“%f“,x); elseprintf(“%f“,-x); B. if(x0) x=x+1;printf(“%f“,x); else printf(“%f“,-x); C. if(x0); xx+1;printf(“%f“,x); else printf(“%f“,-x); D. if(x0) x=x+

3、1;printf(“%f“,x) else printf(“%f“,-x);(分数:1.00)A.B.C.D.5.数据库系统的核心是 A. 数据库 B. 数据库管理系统 C. 模拟模型 D. 软件工程(分数:1.00)A.B.C.D.6.有以下程序:#includestdio.hmain() char c25=“6934“,“8254“,*p2;int i,j,s=0;for(i=0;i2;i+)pi=ci;for(i=0;i2;i+)for(j=0;pij0pij=9;j+=2)s=10*s+pij-0;printf(“%d/n“,s);程序运行后的输出结果是_。 A.693825 B.69

4、825 C.63825 D.6385(分数:1.00)A.B.C.D.7.有以下程序#includestdio.hmain() FILE*fp;int a10=1,2,3,0,0,i;fp=fopen(“d2.dat“,“wb“);fwrite(a,sizeof(int),5,fp);fwrite(a,sizeof(int),5,fp);fclose(fp);tp=fopen(“d2.dat“,“rb“);fread(a,sizeof(int),10,fp);fclose(fp);for(i=0;i10;i+)printf(“%d,“,ai);程序的运行结果是_。 A.1,2,3,0,0,1,

5、2,3,0,0, B.1,2,3,1,2,3,0,0,0,0, C.123,0,0,0,0,123,0,0,0,0, D.1,2,3,0,0,0,0,0,0,0,(分数:1.00)A.B.C.D.8.以下程序的输出结果是U /U。 #includestdio.h #define F(x)2.84+x #define w(y)printf(“%d“,(int)(y) #define P(y)w(y) main() int x=2; P(F(5)*x); A. 12 B. 13 C. 14 D. 16(分数:2.00)A.B.C.D.9.下列程序段的输出结果是( )。void fun(int *x

6、,int *y) printf(“%d%d“,*x,*y);*x=3;*y=4; main()int x=2,y=1;fun(printf(“%d%d“,X,y); A. 1243 B. 1212 C. 1234 D. 2112(分数:1.00)A.B.C.D.10.C 语言运算对象必须是整型的运算符是_。 A. %= B. / C. = D. =(分数:2.00)A.B.C.D.11.有以下程序main()int i,t3=9,8,7,6,5,4,3,2,1;for(i-0;i3;i) printf(“%d“,t2-ii);程序执行后的输出结果是_。 A. 753 B. 357 C. 369

7、 D. 751(分数:1.00)A.B.C.D.12.以下不合法的用户标识符是U /U。 A. 804zhang B. _hh C. yy614 D. If(分数:1.00)A.B.C.D.13.函数 rewind 的作用是 A. 使文件位置指针重新返回文件的开始位置 B. 将文件位置指针指向文件中所要求的特定位置 C. 使文件位置指针指向文件的末尾 D. 使文件位置指针自动移至下一个字符位置(分数:2.00)A.B.C.D.14.在 C 语言中,函数返回值的类型最终取决于U /U。 A. 函数定义时在函数首部所说明的函数类型 B. return 语句中表达式值的类型 C. 调用函数时主调函数

8、所传递的实参类型 D. 函数定义时形参的类型(分数:2.00)A.B.C.D.15.下列程序段的输出结果是 _。void fun(int * x,int * y)pnntf(“%d%d“,* x,* y);* x=3;*y=4;main()int x=1,y=2;fun( B.int fun(double,int); C.int fun(double*x,int n); D.int fun(double x,int*n);(分数:2.00)A.B.C.D.17.执行下列程序段后,变量 a,b,c 的值分别是U /U。int x=5,y=4;int a,b,c;a=(-x=y+)?x:+y;b=

9、+x;c=y; A. a=5, b=5, c=5 B. a=4, b=5, c=5 C. a=5, b=6, c=5 D. a=1, b=5, c=6(分数:1.00)A.B.C.D.18.设有以下定义:typedef union longi; int k5;char c;DATE;srtuct date int cat;DATEcow;double dog; too;DATE max;则下语句的执行结果是 ( )printf(“%d,“sizeof(struct date)+size of(max); A.25 B.30 C.18 D.8 (分数:1.00)A.B.C.D.19.在执行以下程

10、序时,为了使输出结果为 t=4,给 a 和 b 输入的值应该满足的条件是_。main()int s,t,a,b;scanf(“%d%d“,while(i+7)if(pi%2) j+=pi;printf(“%d/n“,j);程序运行后的输出结果是_。 A. 42 B. 45 C. 56 D. 60(分数:1.00)A.B.C.D.32.在下列选项中,没有构成死循环的程序段是_。 A.int i=100; while(1) i=i%100+1; if(i100)break; B.for(;); C.int k=1000; do+k;while(k=1000); D.int s=36: while(

11、s);-s;(分数:2.00)A.B.C.D.33.已有定义:char a=“xyz“,b=(x,y,z;,下列叙述中正确的是U /U。 A. 数组 a 和 b 的长度相同 B. a 数组长度小于 b 数组长度 C. a 数组长度大于 b 数组长度 D. 上述说法都不对(分数:2.00)A.B.C.D.34.下面描述中,符合结构化程序设计风格的是_。 A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用 goto 语句(分数:1.00)A.B.C.D.35.以下选项中,与 k=n+完全等价的表达

12、式是U /U。 A. k=n,n=n+1 B. n=n+1,k=n C. k= +n D. k+=n+1(分数:1.00)A.B.C.D.二、B填空题/B(总题数:1,分数:10.00)以下程序的功能是:输出 100 以内(不含 100)能被 3 整除且个位数为 6 的所有整数,请填空。main() int i,j:for(i=0;U U 13 /U /U;i+)j=i*10+6;ifU U 14 /U /Ulconfinue;prinf(“%d“,j);(分数:9.99)填空项 1:_填空项 1:_(3).下面程序的运行结果是_。 #includestdio.h main() char a8

13、0,*p=“AbabCDcd“; int i=0,j=0; while(*(p+)!=/0) if(*p=a else printf(“%f“,-x); C. if(x0); xx+1;printf(“%f“,x); else printf(“%f“,-x); D. if(x0) x=x+1;printf(“%f“,x) else printf(“%f“,-x);(分数:1.00)A.B. C.D.解析:5.数据库系统的核心是 A. 数据库 B. 数据库管理系统 C. 模拟模型 D. 软件工程(分数:1.00)A.B. C.D.解析:解析 数据库管理系统(Database Management

14、 System,简称 DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。6.有以下程序:#includestdio.hmain() char c25=“6934“,“8254“,*p2;int i,j,s=0;for(i=0;i2;i+)pi=ci;for(i=0;i2;i+)for(j=0;pij0pij=9;j+=2)s=10*s+pij-0;printf(“%d/n“,s);程序运行后的输出结果是_。 A.693825 B.69825 C.63825 D.6385(分数:1.00)A.B.C.

15、D. 解析:解析 本题的意图在于将 c 中两个字符串的偶数位置的数字组成一个新数,找到的四个数字分别为 6、3、8、5,组成的数为 6385,所以答案为 D 选项。7.有以下程序#includestdio.hmain() FILE*fp;int a10=1,2,3,0,0,i;fp=fopen(“d2.dat“,“wb“);fwrite(a,sizeof(int),5,fp);fwrite(a,sizeof(int),5,fp);fclose(fp);tp=fopen(“d2.dat“,“rb“);fread(a,sizeof(int),10,fp);fclose(fp);for(i=0;i1

16、0;i+)printf(“%d,“,ai);程序的运行结果是_。 A.1,2,3,0,0,1,2,3,0,0, B.1,2,3,1,2,3,0,0,0,0, C.123,0,0,0,0,123,0,0,0,0, D.1,2,3,0,0,0,0,0,0,0,(分数:1.00)A. B.C.D.解析:解析 fwrite 函数将数组 a 写入文件,写入两遍,读出后为选项 A 的值,所以选择 A。8.以下程序的输出结果是U /U。 #includestdio.h #define F(x)2.84+x #define w(y)printf(“%d“,(int)(y) #define P(y)w(y) m

17、ain() int x=2; P(F(5)*x); A. 12 B. 13 C. 14 D. 16(分数:2.00)A. B.C.D.解析:解析 本题考查带参数的宏定义及相关运算。P(F(5)*x)=P(2.84+5*2)=P(12.84),调用 w(12.84),输出(int)(12.84)=12。9.下列程序段的输出结果是( )。void fun(int *x,int *y) printf(“%d%d“,*x,*y);*x=3;*y=4; main()int x=2,y=1;fun(printf(“%d%d“,X,y); A. 1243 B. 1212 C. 1234 D. 2112(分数

18、:1.00)A. B.C.D.解析:解析 本题主函数中首先定义了两个变量 x 和 y,并初始化为 2 和 1,然后将 y 和 x 的地址值,传入函数 fun(),函数 fun()中的形参 x 和 y 分别指向主函数中的变量 y 和 x,所以 fun()函数输出的值为 1和 2,fun()函数在结束之前把形参 x 所指内容赋为 3,把形参 y 所指内容赋为 4,所以返回主函数后,主函数中的 x 和 y 已被改写为 4 和 3。故程序输出结果为 1243。选项 A 正确。10.C 语言运算对象必须是整型的运算符是_。 A. %= B. / C. = D. =(分数:2.00)A. B.C.D.解析

19、:解析 在 C 语言中,模运算(即取余运算)的运算对象必须是整型数据(常量、变量或表达式)。11.有以下程序main()int i,t3=9,8,7,6,5,4,3,2,1;for(i-0;i3;i) printf(“%d“,t2-ii);程序执行后的输出结果是_。 A. 753 B. 357 C. 369 D. 751(分数:1.00)A.B. C.D.解析:评析:此题考核的是二维数组的应用,将初始值放在对大括号内,按数组元素排列的顺序对各元素赋值,二维数组中行下标可以省略,但列下标必须要指定,由此题可以看出数组 t 是一个三行三列的二维数组,执行 for 循环语句 t2-ii分别为 t20

20、,t11,t02,得出输出结果为 357。12.以下不合法的用户标识符是U /U。 A. 804zhang B. _hh C. yy614 D. If(分数:1.00)A. B.C.D.解析:解析 C 语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线。13.函数 rewind 的作用是 A. 使文件位置指针重新返回文件的开始位置 B. 将文件位置指针指向文件中所要求的特定位置 C. 使文件位置指针指向文件的末尾 D. 使文件位置指针自动移至下一个字符位置(分数:2.00)A. B.C.D.解析:解析 函数 rewind 的功能是将文件指针重新指向一个流的开头。用

21、法如下: int rewind(FILE *stream);并且无返值。14.在 C 语言中,函数返回值的类型最终取决于U /U。 A. 函数定义时在函数首部所说明的函数类型 B. return 语句中表达式值的类型 C. 调用函数时主调函数所传递的实参类型 D. 函数定义时形参的类型(分数:2.00)A. B.C.D.解析:解析 在 C 语言中,应当在定义函数时指定函数值的类型。凡不加类型说明的函数,默认按整型处理。在定义函数时对函数值说明的类型一般应该和 return 语句中的表达式类型一致。如果函数值的类型和 return 语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转

22、换,即函数类型决定返回值的类型。15.下列程序段的输出结果是 _。void fun(int * x,int * y)pnntf(“%d%d“,* x,* y);* x=3;*y=4;main()int x=1,y=2;fun( B.int fun(double,int); C.int fun(double*x,int n); D.int fun(double x,int*n);(分数:2.00)A. B.C.D.解析:解析 本题考查的是函数的声明。函数声明的一般形式为: 函数类型 函数名(参数类型 1 ,参数名 1 ,参数类型 2,参数名 2); 其中,参数名可以省略。本题中的 fun 函数有

23、两个参数,一个类型是 double 型的一维数组,另一个是 int 型的指针。而在 C 语言中,一维数组用作函数参数和该数组元素的指针类型是等价的。所以本题的正确答案是选项 A。17.执行下列程序段后,变量 a,b,c 的值分别是U /U。int x=5,y=4;int a,b,c;a=(-x=y+)?x:+y;b=+x;c=y; A. a=5, b=5, c=5 B. a=4, b=5, c=5 C. a=5, b=6, c=5 D. a=1, b=5, c=6(分数:1.00)A.B. C.D.解析:解析 本题考查自加(+)、自减(-)运算符的使用。“+i,-i”,在使用 i 之前,先使

24、i 的值加1 或者减 1,再使用此时的表达式的值参与运算:“i+,i-”,先使用此时的 i 的值参与运算,在使用i 之后,再使 i 的值加 1 或者减 1。 对于第 1 个表达式-x=4,y+=4。两者相等,-x=y+为真,所以a=x=4,执行完此语句后 y 的值是 5。 第 2 个表达式 b=+x,x 的值先加 1,然后赋给 b,即 b=x+1=5;第一个表达式 c=y=5。18.设有以下定义:typedef union longi; int k5;char c;DATE;srtuct date int cat;DATEcow;double dog; too;DATE max;则下语句的执行

25、结果是 ( )printf(“%d,“sizeof(struct date)+size of(max); A.25 B.30 C.18 D.8 (分数:1.00)A.B. C.D.解析:19.在执行以下程序时,为了使输出结果为 t=4,给 a 和 b 输入的值应该满足的条件是_。main()int s,t,a,b;scanf(“%d%d“,while(i+7)if(pi%2) j+=pi;printf(“%d/n“,j);程序运行后的输出结果是_。 A. 42 B. 45 C. 56 D. 60(分数:1.00)A.B. C.D.解析:解析 本题程序中 while 循环的条件是 i+7,由于在

26、循环体中没有改变 i 的值,所以循环过程是 i 从初始值 0 开始,每次自加 1,当 i 为 7 再次进行循环条件判断时退出循环。而在循环体中,i 从 1到 7 变化。循环体是一个 if 语句,当 pi%2 为真,即 pi为奇数时执行 j+=pi。所以该段程序的实际效果是将 p1p7中的奇数累加到变量 j 中。所以 j=13+15+17=45,选 B。32.在下列选项中,没有构成死循环的程序段是_。 A.int i=100; while(1) i=i%100+1; if(i100)break; B.for(;); C.int k=1000; do+k;while(k=1000); D.int

27、s=36: while(s);-s;(分数:2.00)A.B.C. D.解析:33.已有定义:char a=“xyz“,b=(x,y,z;,下列叙述中正确的是U /U。 A. 数组 a 和 b 的长度相同 B. a 数组长度小于 b 数组长度 C. a 数组长度大于 b 数组长度 D. 上述说法都不对(分数:2.00)A. B.C.D.解析:解析 字符数组 a中用字符串常量“xyz”进行初始化,字符数组 a的长度为字符的个数,所以其值为 3,并不包括字符串结束标记/0;字符串数组 b用 3 个字符x、y、z来初始化,所以其字符串的长度等于 3。34.下面描述中,符合结构化程序设计风格的是_。

28、A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用 goto 语句(分数:1.00)A. B.C.D.解析:35.以下选项中,与 k=n+完全等价的表达式是U /U。 A. k=n,n=n+1 B. n=n+1,k=n C. k= +n D. k+=n+1(分数:1.00)A. B.C.D.解析:解析 k=n+的意思是先将 n 的值赋给 k,然后 n 的值再加 1,选项 A)符合题意;选项 B)和 C)是先使 n 的值加 1,然后再赋值给 k;选项 D)等价于 k=k+(n+1)。二、B填空题

29、/B(总题数:1,分数:10.00)以下程序的功能是:输出 100 以内(不含 100)能被 3 整除且个位数为 6 的所有整数,请填空。main() int i,j:for(i=0;U U 13 /U /U;i+)j=i*10+6;ifU U 14 /U /Ulconfinue;prinf(“%d“,j);(分数:9.99)填空项 1:_ (正确答案:i10 或 i=9)解析:填空项 1:_ (正确答案:j%3 或 j%3!=0 或!(j%3=0))解析:解析 从 for 循环中的第 1 条语句 j=1*10+6;中可以看出,循环变量 i 代表的是要找的整数的十位数字。因为 i 从 O 开始

30、循环递增,那么 j 的值依次会为 6、16、26、,满足个位数为 6 的条件,而这样的整数要不超过 100,最大的应该是 96,故第 11 空应该填 i10 或 1=9。既然 j 已经满足“个位数为 6”的条件,只要 j“能被 3 整除”的话,此时的 j 应该就是我们要输出的整数了。注意循环体中的 if语句,第 12 空的表达式若为“真”的话会执行 continue;语句而跳过下面的输出语句了。故第 12 空要填的表达式应该要在 j 能被 3 整除时返回。(3).下面程序的运行结果是_。 #includestdio.h main() char a80,*p=“AbabCDcd“; int i=0,j=0; while(*(p+)!=/0) if(*p=a&*p=z)ai=*p;i+; ai=/0; puts(a);(分数:3.33)填空项 1:_ (正确答案:babcd)解析:解析 C 语言中“/0”表示字符串的结束。程序将 p 指针指向字符串“AbabCDcd”的首地址,循环开始后若指针不是指向当前字符串的结束标志位,则进入循环体。循环中每次检验字符串中字母是否在a与z之间,若满足则将当前值赋值给数组 a,最后给数组添加字符结束标志。此程序可以筛选出字符串中的小写字母。

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

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

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