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

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

1、二级 C 语言笔试-108 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.下面程序:void func (int *a,int b)b0 =*a+6;)main()int a,b5;a=0; b0=3;func(; p+; main()char s50=“abcdeeffgee“,b=e;a(s,b);printf(“%s/n“,s);则程序运行后的输出结果是( )。(分数:1.00)A.AbcdeeffgeeB.ABCDeeFFGeeC.abcdEEffgEED.ABCDEEFFGEE16.下列叙述中正确的是( )。(分数:1.00)A

2、.线性链表中的各元素在存储空间中的位置必须是连续的B.线性链表中的表头元素一定存储在其他元素的前面C.线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的17.设 char 型变量 x 中的值为 10100111,则表达式(2+x)(3)的值是( )。(分数:1.00)A.10101001B.10101000C.11111101D.0101010118.下面概念中,不属于面向对象方法的是( )。(分数:1.00)A.对象B.继承C.类D.过程调用19.以下程序的输出结果为( )

3、。int a,b,C;a=10;b=50;C=30;if(ab) a=b;b=C;c=a;printf(“a=%d,b=%d,c=%d“,a,b,C);(分数:1.00)A.a=50,b=30,c=30B.a=10,b=30,c=10C.a=50,b=30,c=10D.a=50,b=30,c=5020.若有以下说明和语句:int c45,(*p)5;p=c;能够正确引用 c 数组元素的是( )。(分数:1.00)A.p+lB.*(p+3)C.*(p+1)+3D.*(p0+2)21.若指针 p 已正确定义,要使 p 指向两个连续的整型动态存储单元,则正确的语句是( )。(分数:1.00)A.p=

4、2*(int*)malloc (sixeof(int)B.p=(int*)calloc (2*sixeof(int)C.p=(int*)malloc (2*sizeof(int)D.p=2*(int*)calloc (sizeof(int)22.下面程序的输出结果是( )。void prty(int*x)printf(“%din“,+*x);main()int a=25;prty(char ch;float f;a,b,c;则共用体变量 a,b,c 占用内存的字节数为( )。(分数:1.00)A.1B.2C.4D.633. (分数:1.00)A.B.C.D.34.设有语句“char a=72;

5、”则变量 a( )。(分数:1.00)A.包含一个字符B.包含二个字符C.包含三个字符D.说明不合法35.下列选项中不属于 C 语言的数据类型是( )。(分数:1.00)A.复数型B.逻辑型C.双精度型D.集合型36.以下正确的数组定义语句是( )。(分数:1.00)A.int y14=1,2,3,4,5,B.float x3=1,2,3C.long s23=1,1,21,2,3,D.double t3=037.能正确表示逻辑关系“a=10 或 a=0”的 C 语言表达式是( )。(分数:1.00)A.a=10ora=10B.a=0|a=10C.a=10printf(“%d/n“,j);则输出

6、结果是 【6】 。(分数:2.00)填空项 1:_57.若有如下程序:#include “stdio.h“main()char s30;Strcpy(Strcpy(strcpy(;printf(“%S/n“,s);则程序运行后的输出结果是 【7】 。(分数:2.00)填空项 1:_58.以下程序运行后的输出结果是 【8】 。main()int p711,13,14,15,16,17,18;int i=0,j=0;while(i7 printf(“%d/n“,j);(分数:2.00)填空项 1:_59.有以下程序main()int n=0,m+1,X=2;if(!n) X-=l;if(m) X-

7、=2;if(X) X-=3;printf(“%d/n“,x);执行后输出的结果是 【9】 。(分数:2.00)填空项 1:_60.执行以下程序后,输出#号的个数是 【10】 。#include studio.hmain()int i,j;for(i=1;i5;i+)for(j=2;j=i;j+)putchar(#);(分数:2.00)填空项 1:_61.函数 sub 的功能是根据下面近似分式求 的值。(*)/6=1+1/(2*2)+1/(3*3)+1/(n*n)现在请在下面的函数中填空,完成求 值的功能。#include“math.h“double sub(long m)double sum=

8、0.0,t;long n;for(n=1;n=m;n+) sum+= 【11】 ;t=sqrt(6*sum);return(t);(分数:2.00)填空项 1:_62.执行以下程序后 sum 的值是 【12】 。main()int i,sum;for(i=1;i6;i+)sum+=i;printf(“%d/n“,sum);(分数:2.00)填空项 1:_63.下列程序的输出结果是 【13】 。void fun(int*n)while (*n)-);printf(“%d“,+(*n);main()int a=1000;fun((分数:2.00)填空项 1:_64.下面程序用来输出结构体变量 a

9、所占存储单元的字节数,请填空。main()struct stuchar x20;float y; a;printf(“a size:%d/n“,sizeof( 【14】 );(分数:2.00)填空项 1:_65.下面程序的功能是将字符串 a 下标值为偶数的元素由小到大排序,其他元素不变,请填空。#includestdio.hmain()char a=“labchmfye“,t;int i,j;for(i=0;i7;i+=2)for(j=i+2;j9; 【15】 )if( 【16】 )t=ai; ai=aj; aj=t;j+;puts(a);printf(“/n“);(分数:4.00)填空项 1

10、:_66.以下程序中,函数 SumColumMin 的功能是:求出 M 行 N 列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。#define M 2#define N 4void SumColumMin(int aMN,int*Sum)int i,j,k,s=0for(i=0;iN;i+)k=0;for(j=1;jM;j+)if(ak iaj i)k=j;s+= 【17】 ;【18】 =s;main()int xMN=3,2,5,1,4,l,8,3),s;SumColumMin( 【19】 );printf(“%d/n“,s);(分数:6.00)填空项 1

11、:_67.若有如下程序:main()int a2=1,2,6,9,11,(*t)2;t=a;printf(“%d,%d/n“,*(t1+1), (*t) 1);则程序运行后输出的结果是 【20】 。(分数:2.00)填空项 1:_二级 C 语言笔试-108 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.下面程序:void func (int *a,int b)b0 =*a+6;)main()int a,b5;a=0; b0=3;func(=65+53=67,所以输出变量 ch 值的 ASCII 码的十进制表示。格式控制符要求变量 ch2 按

12、字符形式输出,A+6-3=65+6-3=68,字母 D 的 ASCII 码的十进制表示为 68,所以输出 D。10.下列有关格式输入函数 scanf 的叙述中正确的是( )。(分数:1.00)A.输入项可以是 C 语言中规定的任何变量,并且在任何变量前必须加地址符号“; p+; main()char s50=“abcdeeffgee“,b=e;a(s,b);printf(“%s/n“,s);则程序运行后的输出结果是( )。(分数:1.00)A.AbcdeeffgeeB.ABCDeeFFGeeC.abcdEEffgEE D.ABCDEEFFGEE解析:解析 函数 a 的功能是将字符数组 s 中的

13、小写字母 e 变为大写字母,其余字符不变,4 个选项中只有 C 符合题意。16.下列叙述中正确的是( )。(分数:1.00)A.线性链表中的各元素在存储空间中的位置必须是连续的B.线性链表中的表头元素一定存储在其他元素的前面C.线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的 解析:解析 在线性表的链式存储结构中,各数据结点的存储位置不连续,且各结点在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之间的前后关系是由各结点的指针域来指示的。所以,选项 D 正

14、确。17.设 char 型变量 x 中的值为 10100111,则表达式(2+x)(3)的值是( )。(分数:1.00)A.10101001B.10101000C.11111101D.01010101 解析:解析 表达式(2+x)二进制表示为 10101001,“3”即把 3 按位取反得到二进制值为 11111100,再把这两个二进制按位加 (异或),得到结果为 01010101。18.下面概念中,不属于面向对象方法的是( )。(分数:1.00)A.对象B.继承C.类D.过程调用 解析:解析 选项 A、选项 B、选项 C 属于面向对象方法,选项 D 属于面向过程方法。19.以下程序的输出结果为

15、( )。int a,b,C;a=10;b=50;C=30;if(ab) a=b;b=C;c=a;printf(“a=%d,b=%d,c=%d“,a,b,C);(分数:1.00)A.a=50,b=30,c=30B.a=10,b=30,c=10C.a=50,b=30,c=10D.a=50,b=30,c=50 解析:解析 a 的初值为 10,b 的初值为 50,ab 为真,执行 a=b,则 a 的值为 50。继续执行 b=c;和c=a;,则 b=30,c=50。所以选项 D 正确。20.若有以下说明和语句:int c45,(*p)5;p=c;能够正确引用 c 数组元素的是( )。(分数:1.00)A

16、.p+lB.*(p+3)C.*(p+1)+3D.*(p0+2) 解析:解析 本题中定义了一个二维数组 c 和一个指针数组 p,并初始化让 p 指向 c。显然此时 p 中的各元素为地址,选项 A 中 p+1,此时其中的 1 代表的长度是整个二维数组 c 的长度,故 p+l 将让 p 指向 c 数组后面的元素,不能引用 c 数组中的成员,故选项 A 错误;同理选项 B 和选项 C 都不正确,选项 D 中 p0指的是指针数组中的第一个元素的地址即 c 的首地址,此时的 1 的长度代表的是数组 C 中一行的长度,故p0+2 代表的是第 3 行的首地址,而*(p0+2)将代表第 3 行的第一个元素的地址

17、,所以,4 个选项中选项 D 符合题意。21.若指针 p 已正确定义,要使 p 指向两个连续的整型动态存储单元,则正确的语句是( )。(分数:1.00)A.p=2*(int*)malloc (sixeof(int)B.p=(int*)calloc (2*sixeof(int)C.p=(int*)malloc (2*sizeof(int) D.p=2*(int*)calloc (sizeof(int)解析:解析 malloc 函数的调用形式:malloc(size)。malloc 函数用来分配 size 个字节的存储区,返回一个指向存储区首地址基类型为 void 的地址,可以利用强制类型转换将其

18、换成所需的类型,这里需转换为整型(int*)。若不能确定数据类型所占的字节数,可使用 sizeof 运算符来求得,这里要求两个连续的整型动态存储单元即 2*sizeof(int)。4 个选项中只有 C 符合题意。22.下面程序的输出结果是( )。void prty(int*x)printf(“%din“,+*x);main()int a=25;prty(”此时 n 的值为 0,所以执行结果为:输出一个0,n 的值变为-1。此时循环条件!(-n)=!(-2)为假,程序结束。故程序运行后的输出结果是 20,应该选择 D。26.有以下程序:main()int i;for(i=0;i3;i+)swit

19、ch(i)case1:printf(“%d“,i);case2:printf(“%d“,i);default:printf(“%d“,i);执行后输出结果是( )。(分数:1.00)A.011122 B.012C.012020D.120解析:解析 for 循环执行了 3 次,第一次时 i 的值为 0,执行其后的 switch 语句,没有匹配的分支,执行 default 语句后的 printf 语句,输出为 0;第二次循环时 i 的值为 1,执行其后的 switch 语句,与第一个分支匹配,执行其后的 primf 语句,输出 1,由于没有遇到 break 语句,所以一直向下执行,又输出了两个 1

20、,第三次循环时 i 值为 2,执行其后的 switch 语句,同理输出两个 2。所以, A 选项是正确的。27.C 语言规定如果调用 fputc 函数输出成功,则返回值是( )。(分数:1.00)A.1B.输出的字符 C.0D.true解析:解析 调用 fputc 函数输出成功,则返回值是输出的字符。28.以下程序中函数 f 的功能是将 n 个字符串按由大到小的顺序进行排序:#include string.hvoid f(char p10,int n)char t20; int i,j;for(i=0;in-1;i+)for(j=i+1;jn;j+if(strcmp(pi,pj)0)strcp

21、y(t,pi);strcpy(pi,pj);strcpy(pj,t); main()char p10:“abc“,“aabdfg“,“abbd“,“dcdbe“,“cd“,);int i;f(p,5);printf(“%d/n“,strlen(p0);程序运行后的输出结果是( )。(分数:1.00)A.6B.4C.5 D.3解析:解析 函数 strcmp(字符串 1,字符串 2)作用是将“字符串 1”和“字符串 2”进行比较,如果“字符串 1”“字符串 2”,返回一个人于 0 的整数值;如果“字符串 1”“字符串 2”,返回一个小于 0 的整数值;如果“字符串 1”“字符串 2”,返回 0。函

22、数 strcpy(字符串数组名,字符串,整型表达式)的作用是将“字符串”的前“整型表达式”个字符存入到指定的“字符数组”中,若省略“整型表达式”,则将整个“字符串”存入“字符数组”中。函数 f()的功能是利用选择法把一个具有 n 行的二维数组中按行存放的 n 个字符串由大到小排序。在主函数中定义了一个二维字符数组 p 并给它按行赋初值,然后调用 f()函数,把它按行从大到小排列。字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符大,该字符所在的字符串就是较大的字符串。由此可知最大的字符串为“dcdbe”,排序后存放在第一行,其首地址为 p0,在输出语句输出的 p0指向的字符串长

23、度是 5。29.执行以下程序后,x 的值为( )。unsigned int x=65535;printf(“%d/n“,x);(分数:1.00)A.65535B.1C.有错误D.-1 解析:解析 x 变量定义为无符号整型。格式控制符 d 是输出带符号的十进制整数,即输出-1。65535 在内存中各位都为 1,作为带符号数输出时最高位为 1 即数值为负。在内存中数据都以其补码形式保存,11111111 变为原码为 10000001 即-1。30.若有说明:int n=2,*p=char ch;float f;a,b,c;则共用体变量 a,b,c 占用内存的字节数为( )。(分数:1.00)A.1

24、B.2C.4 D.6解析:解析 共用体变量中的所有成员占有同一个存储空间,其字节数与成员中占字节数最多的那个成员相等。char 占 1 个字节, int 占 2 个字节,float 占 4 个字节,因此本题中的共用体变量 a,b,c 占用内存的字节数为 4。33. (分数:1.00)A.B. C.D.解析:解析 由于 1 和 2 都是整型,选项 B 中 1/2 的运算结果为 0,故整个表达式的值为 0,所以它的结果和题目中要求的代数式的计算结果不相符。34.设有语句“char a=72;”则变量 a( )。(分数:1.00)A.包含一个字符B.包含二个字符C.包含三个字符D.说明不合法 解析:

25、解析 字符变量的值为单个字符,并用单引号包含,而本题中的单引号中是两个字符,不是合法说明。35.下列选项中不属于 C 语言的数据类型是( )。(分数:1.00)A.复数型 B.逻辑型C.双精度型D.集合型解析:解析 在 C 语言中,数据类型可分为基本数据类型、构造数据类型、指针类型、空类型 4 大类,其中基本类型;字符型、整型、实型(单精度型和双精度型)、枚举类型。构造类型:数组、结构体、公用体。选项 B 中的逻辑型和 C 中双精度类型都属于基本数据类型,选项 D 集合类型属于构造类型;而选项 A复数型不是 C 语言的数据类型。36.以下正确的数组定义语句是( )。(分数:1.00)A.int

26、 y14=1,2,3,4,5,B.float x3=1,2,3C.long s23=1,1,21,2,3,D.double t3=0 解析:解析 选项 A 二维数组行下标为 1,即数组有一行元素,列下标为 4 表示一行中包含 4 个元素,而初值列表中有 5 个元素,故 A 错。选项 B 省略了列下标故错误。选项 C 二维数组行下标为 2,数组有 2行元素,而初值列表中有 3 行元素,故 C 错误。故 D 为所选。37.能正确表示逻辑关系“a=10 或 a=0”的 C 语言表达式是( )。(分数:1.00)A.a=10ora=10B.a=0|a=10C.a=10”结束,故选项 A 和选项 C 都

27、不是正确的赋值语句;选项 B中强制转换类型符 int 应用括号括起来,故选项 B 不正确,只有选项 D 是合法的 C 语言赋值语句。48.若变量已正确说明为 float 类型,要通过语句 scanf(“%f%f%f“,&a,&b,&c);给 a 赋予 10.0,b 赋予220,c 赋予 33.0,不正确的输入形式是( )。(分数:2.00)A.10回车B.10.0,22.0,33.0回车22回车33回车 C.10.0回车D.10 22回车22.0 33.0回车 33回车解析:解析 本题 scanf()函数中输入格式串为“%f%f%f”,要求输入变量 a、b 和 c 时用空格隔开,也可以用回车分

28、隔。选项 A 中从键盘输入 3 个变量的值时用回车符隔开,满足输入格式串的要求,故选项 A 的输入方式能达到题意的要求。选项 B 中从键盘输入 3 个变量的值时中间用了“,”隔开,而在输入格式串中没有要求用“,”隔开,故选项 B 的输入方式不能达到题意的要求;选项 C 和 D 中分别都用了回车和空格宋分隔,满足输入格式串的要求,故选项 C 和 D 的输入方式也能达到题意的要求。所以,4 个选项中选项 B 符合题意。49.下列关于栈的叙述正确的是( )。(分数:2.00)A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表 解析:解析 栈是一种特殊的线性表

29、,其插入与删除运算都只在线性表的一端进行。在这种线性表的结构中,一端封闭,不允许插入与删除元素:另一端开口,允许插入与删除元素。在栈中不仅能插入数据,也能删除数据,选项 A 与选项 B 都错。栈是后进先出的线性表,而不是先进先出的线性表,选项 C 的说法错误,选项 D 正确。50.下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。(分数:2.00)A.内模式 B.外模式C.概念模式D.逻辑模式解析:解析 内模式能够给出数据库物理存储结构与物理存取方法;外模式是用户的数据视图:概念模式是全体用户公共数据视图;没有逻辑模式。二、填空题(总题数:17,分数:40.00)51.算法的复杂度主要包括 【1】 复杂度和空间复杂度。(分数:2.00)填空项 1:_ (正确答案:时间)解析:解析 算法的复杂度主要指时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量;算法的空间复杂度,一般是指执行这个算法所需要的内存空间规模。52.在面向对象方法中,允许作用于某个对象上的操作称为 【2】 。(分数:2.00)填空项 1:_ (正确答案:方法)解析:解析 在面向对象方法中,方法是指允许作用于某个对象上的各种操作。

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

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

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