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

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

1、二级 C语言笔试-146 及答案解析(总分:109.00,做题时间:90 分钟)一、选择题(总题数:40,分数:79.00)1.运行下列程序,若从键盘输入字母“a”,则输出结果是( )。char c;c=getchar();if(c=a,下列赋值语句中与 n2=n1;语句等价的是 ( )。(分数:2.00)A.*p=*q;B.p=q;C.*p=,其中 buffer代表的是( )。(分数:2.00)A.存放读入数据项的存储区B.一个指向所读文件的文件指针C.一个指针,是指向输入数据存放在内存中的起始地址D.一个整型变量,代表要读入的数据项总数11.按照“先进先出”组织数据的数据结构是( )。(分

2、数:2.00)A.队列B.栈C.双向链表D.二叉树12.下列变量声明合法的是( )。(分数:2.00)A.short a=1.4e-1;B.double b=1+3e2.8;C.long do=OxfdaL;D.float 213.简单的交换排序方法是( )。(分数:2.00)A.快速排序B.选择排序C.堆排序D.冒泡排序14.下列语句段中,正确的是( )。(分数:2.00)_15.在 C语言中,函数调用时( )。(分数:2.00)A.实参和形参各占独立的存储单元B.实参和形参共用存储单元C.由系统自动确定实参和形参是否共用存储单元D.由用户指定实参和形参是否共用存储单元16.对两个数组 a和

3、 b进行下列初始化:char m=“1234567“;char n=1,2,3,4,5,6,7;则下列叙述正确的是( )。(分数:2.00)A.数组 m与数组 n完全相同B.数组 m与数组 n长度相同C.数组 m比数组 n长 1D.数组 m与数组 n中都存放字符串17.已有定义:char a=“xyz“,b=(x,y,z;,下列叙述中正确的是( )。(分数:2.00)A.数组 a和 b的长度相同B.a数组长度小于 b数组长度C.a数组长度大于 b数组长度D.上述说法都不对18.下列程序的输出结果是( )。#includestdio.hmain()char a=a,b,c,d,e,f,/0;in

4、t i,j;i=sizeof((分数:2.00)A.;j=s19.算法的空间复杂度是指( )。(分数:2.00)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间20.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS之间的关系是( )。(分数:2.00)A.DB包括 DBS和 DBMSB.DBMS包括 DB和 DBSC.DBS包括 DB和 DBMSD.没有任何关系21.若有下列定义(设 int类型变量占 2个字节):float x=123.4567;则下列语句:printf(“x=%5.2f“,x);输出的结果是( )。(分数:2.

5、00)A.x=123.46B.123.4567C.x=123.4567D.123.4622.设变量已正确定义,则下列能正确计算 f=n!的程序段是( )。(分数:2.00)A.f=0; for(i=1;i=n;i+)f*=i;B.f=1;for(i=1;in;i+)f*=i;C.f=1;for(i=n;i1;i+)f*=i;D.f=1;for(i=n;i=2;i-)f*=i;23.若有定义 float a=25,b,*p=,则下列对赋值语句*p=a;和 p=的正确解释为( )。(分数:2.00)A.两个语句都是将变量 a的值赋予变量 pB.*p=a是使 p指向变量 a,而 p=i=10;i+)

6、if(i*i=20)a=b;b=t;c+;printf(“%d,%d,%d“,a,b,c);程序的输出结果是( )。(分数:2.00)A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-226.下列程序的输出结果是( )。void f(int*x,int*y)int t;t=*x,*x=*y;*y=t;main()int a8=1,2,3,4,5,6,7,8,i,*p,*q;p=a;q=p+;q-;for(i=0;i8;i+)printf(“%d,“,ai);(分数:2.00)A.8,2,3,4,5,6,7,1B.5,6,7,8,1,2,3,4C.1,2,3,4,5,6,7,8D.8,

7、7,6,5,4,3,2,127.若执行下列的程序时,从键盘上输入 1和 2,则输出结果是( )。#includestdio.hmain()int a,b,s;scanf(“%d%d“,strcpy(a1,“you“);a03=while(!x);(分数:2.00)填空项 1:_50.下列程序段的运行结果是_。int x=0,y=0;while(x15)y+,x+=+y;printf(“%d,%d“,y,x);(分数:2.00)填空项 1:_51.下列程序的运行结果是_。main()int s=0,i=1;while(s=10)s=s+i*i;i+;printf(“%d“,-i);(分数:2.0

8、0)填空项 1:_52.下列程序的输出结果是_。long fun5(int n)long s;if(n=1)(n=2)s=2;elses=n+fun5(n-1);return(s);main()long x;x=fun5(4);printf(“%1d/n“,x);(分数:2.00)填空项 1:_53.下列程序的输出结果是_。main()int a=2,b=4,c=6;int*p1=,下列赋值语句中与 n2=n1;语句等价的是 ( )。(分数:2.00)A.*p=*q; B.p=q;C.*p=,其中 buffer代表的是( )。(分数:2.00)A.存放读入数据项的存储区B.一个指向所读文件的文

9、件指针C.一个指针,是指向输入数据存放在内存中的起始地址 D.一个整型变量,代表要读入的数据项总数解析:解析 数据块读取函数调用形式:fread(buffer,size,count,fp)。fread函数参数说明:“buffer”是一个指针,对 fread来说,它是读入数据的存放地址。对 fwrite来说,是要输出数据的地址。“size”是要读写的字节数;“count”是要进行读写多少个 size字节的数据项;“fp”是指文件型指针。11.按照“先进先出”组织数据的数据结构是( )。(分数:2.00)A.队列 B.栈C.双向链表D.二叉树解析:解析 队列是一种特殊的线性表,只允许在表的一端插入

10、元素,在表的另一端删除元素,插入元素的一端叫“队尾”,删除元素的一端叫“队头”,先插入的元素先被删除,是按“先进先出”的原则组织数据的。12.下列变量声明合法的是( )。(分数:2.00)A.short a=1.4e-1; B.double b=1+3e2.8;C.long do=OxfdaL;D.float 2解析:解析 解答本题需了解 3个知识点:标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线;do 是 C语言中的一个关键字,不能再用做变量名和函数名;C 语言规定,指数形式的实型常量 e或 E后面的指数必须是整数。13.简单的交换排序方法是( )。(分数:2.00

11、)A.快速排序B.选择排序C.堆排序D.冒泡排序 解析:解析 所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。14.下列语句段中,正确的是( )。(分数:2.00)_解析:解析 本题主要考查的知识点是结构类型的概念和定义,结构定义的一般形式:struct结构类型名称 数据类型 成员名 1;数据类型 成员名 2;数据类型 成员名 n;struct为关键字,是结构的标识符;15.在 C语言中,函数调用时( )。(分数:2.00)A.实参和形参各占独立的存储单元 B.实参和形

12、参共用存储单元C.由系统自动确定实参和形参是否共用存储单元D.由用户指定实参和形参是否共用存储单元解析:解析 本题考查函数调用时的参数传递。函数的形参是函数定义时由用户定义的形式上的变量,实参是函数调用时,主调函数为被调函数提供的原始数据。在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之间不影响。16.对两个数组 a和 b进行下列初始化:char m=“1234567“;char n=1,2,3,4,5,6,7;则下列叙述正确的是( )。(分数:2.00)A.数组 m与数组 n完全相同B.数组 m与数组 n长度相同C.数组 m比数组 n长 1 D.数组 m与数组 n中都存放字符

13、串解析:解析 本题考查字符数组和字符串赋值给数组的一些区别。语句“char m=“1234567“;”定义了一个字符型数组并进行了初始化,C 语言规定,在字符串的末尾自动加上串结束标记/0,因此数组 m的长度是 8;而数组 n是按照字符方式对数组进行初始化,系统不会自动加上串结束标记/0,因此数组n的长度是 7。17.已有定义:char a=“xyz“,b=(x,y,z;,下列叙述中正确的是( )。(分数:2.00)A.数组 a和 b的长度相同 B.a数组长度小于 b数组长度C.a数组长度大于 b数组长度D.上述说法都不对解析:解析 字符数组 a中用字符串常量“xyz”进行初始化,字符数组 a

14、的长度为字符的个数,所以其值为 3,并不包括字符串结束标记/0;字符串数组 b用 3个字符x、y、z来初始化,所以其字符串的长度等于 3。18.下列程序的输出结果是( )。#includestdio.hmain()char a=a,b,c,d,e,f,/0;int i,j;i=sizeof((分数:2.00)A.;j=s解析:解析 sizeof()函数的功能是返回字符串所占的字节数,strlen()函数的功能是返回字符串的长度,其中 /0是一个转义字符,它占存储空间,但不计入串的长度。19.算法的空间复杂度是指( )。(分数:2.00)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占

15、的存储空间D.算法执行过程中所需要的存储空间 解析:解析 一个算法的空间复杂度,一般是指执行这个算法所需的存储空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间及算法执行过程中所需要的额外空间。20.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS之间的关系是( )。(分数:2.00)A.DB包括 DBS和 DBMSB.DBMS包括 DB和 DBSC.DBS包括 DB和 DBMS D.没有任何关系解析:解析 数据库系统(DBS)由数据库(DBS)、数据库管理系统(DBMS)、数据库管理员、硬件平台和软件平台 5个部分组成,可见 DB和 DBMS都是

16、 DBS的组成部分。21.若有下列定义(设 int类型变量占 2个字节):float x=123.4567;则下列语句:printf(“x=%5.2f“,x);输出的结果是( )。(分数:2.00)A.x=123.46 B.123.4567C.x=123.4567D.123.46解析:解析 本题考查 printf函数的格式。“%5.2f 格式符中的“f”表示以带小数点的形式输出单精度或者双精度数;“5”表示指定数据输出宽度为 5;“2”表示指定输出数据小数位占两位数,并对截去的第一位小数做四舍五入处理。22.设变量已正确定义,则下列能正确计算 f=n!的程序段是( )。(分数:2.00)A.f

17、=0; for(i=1;i=n;i+)f*=i;B.f=1;for(i=1;in;i+)f*=i;C.f=1;for(i=n;i1;i+)f*=i;D.f=1;for(i=n;i=2;i-)f*=i; 解析:解析 要正确计算函数 f=n!,由 n!的数学定义可知 n!=n*(n-1)*(n-2)*1。在选项 A)中,由于 f的初值为 0,在 for循环语句中,f 依次乘以 1,2,3,n。最后计算 f=n!=0,所以选项 A)不正确。在选项 B)中,f 的初值为 1,在 for循环语句中,f 依次乘以 1,2,3,(n-1)。最后计算得到 f=(n-1)!,所以选项 B)不正确。在选项 C)中

18、,f 的初值为 1,在 for循环语句中,f 依次乘以n,n+1,n+2,所以选项 C)不正确。在选项 D)中,f 的初值为 1,在 for循环语句中,f 依次乘以n,n-1,n-2,2。最后计算 f=n!,所以选项 D)正确。23.若有定义 float a=25,b,*p=,则下列对赋值语句*p=a;和 p=的正确解释为( )。(分数:2.00)A.两个语句都是将变量 a的值赋予变量 pB.*p=a是使 p指向变量 a,而 p=i=10;i+)if(i*i=20)a=b;b=t;c+;printf(“%d,%d,%d“,a,b,c);程序的输出结果是( )。(分数:2.00)A.1,5,0

19、B.1,5,-2C.5,1,-1D.5,1,-2解析:解析 本题考查 while循环。先判断 while循环的控制表达式是否成立,发现 abc 不成立,所以不执行循环。直接输出 a、b、c 的值。26.下列程序的输出结果是( )。void f(int*x,int*y)int t;t=*x,*x=*y;*y=t;main()int a8=1,2,3,4,5,6,7,8,i,*p,*q;p=a;q=p+;q-;for(i=0;i8;i+)printf(“%d,“,ai);(分数:2.00)A.8,2,3,4,5,6,7,1B.5,6,7,8,1,2,3,4C.1,2,3,4,5,6,7,8D.8,

20、7,6,5,4,3,2,1 解析:解析 函数 f()的功能是对两个数据互换。在主函数中指针变量 p和 q分别指向数组 a8)的首和尾,在 while 循环中实现从首尾开始数组元素的互换操作。27.若执行下列的程序时,从键盘上输入 1和 2,则输出结果是( )。#includestdio.hmain()int a,b,s;scanf(“%d%d“,strcpy(a1,“you“);a03=while(!x);(分数:2.00)填空项 1:_ (正确答案:1)解析:解析 dowhile 语句的功能:首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环;do

21、while 语句的特点是先执行后判断,因此循环体至少执行 1次。本程序中 x=2不符合循环条件,所以只循环 1次。50.下列程序段的运行结果是_。int x=0,y=0;while(x15)y+,x+=+y;printf(“%d,%d“,y,x);(分数:2.00)填空项 1:_ (正确答案:8,20)解析:解析 本题考查 while循环和+运算符的运用。x=0 符合条件 x15,则执行 y+,x+=+y 后,y=1, x=0+2=2 后 y=2,符合条件继续循环,y=3,x=x+4=6 后 y=4,再循环 y=5,x=x+6=6+6=12 后,y=6,继续循环 y=7,x=x+8=12+8=

22、20,此时 y=8。51.下列程序的运行结果是_。main()int s=0,i=1;while(s=10)s=s+i*i;i+;printf(“%d“,-i);(分数:2.00)填空项 1:_ (正确答案:3)解析:解析 分析程序运行过程,第 1次循环:s=s+i*i=0+1*1=1,i=2;第 2次循环:s=s+i*i=1+2*2=5,i=3;第 3次循环:s=s+i*i=5+3*3=14,i=4;循环条件不成立输出 i,-i 使 i的值减1,输出结果为 3。52.下列程序的输出结果是_。long fun5(int n)long s;if(n=1)(n=2)s=2;elses=n+fun5

23、(n-1);return(s);main()long x;x=fun5(4);printf(“%1d/n“,x);(分数:2.00)填空项 1:_ (正确答案:9)解析:解析 考查 if else语句,n4 不满足条件,所以 fun5(4)=4+fun5(3),n=3 也不满足条件,fun5(3)=3+ fun5(2),n=2 满足条件 fun5(2)=2,故 x=4+3+2=9。53.下列程序的输出结果是_。main()int a=2,b=4,c=6;int*p1=&a,*p2,&b,*p;*(p=&c)=*p1*(*p2);printf(“%d/n“,c);(分数:2.00)填空项 1:_

24、 (正确答案:8)解析:解析 本程序定义了 3个指针变量 p1、p2、p,并且将 a、b 的地址分别赋给 p1、p2,则*p1=a=2,*p2=b=4,所以表达式*p1*(*p2)的值是 8。在赋值语句的左边是*(p=&c),即使指针 p指向了变量 c,因而*(p)代表了 c的存储单元,赋值语句“*(p=&c)=*p1*(*p2);”是把整数 8赋给了变量 c。54.下列程序运行后的输出结果是_。#includestdio.hmain()char s20;scanf(“%s“,s);printf(“%s“,s);运行程序,输入 HOW ARE YOU。(分数:2.00)填空项 1:_ (正确答案:HOW)解析:解析 在 scanf()函数中,使用空格作为分隔符,如果输入含有空格的字符串,则不能使用 scanf函数,所以本题中输入空格就返回了/0,s 数组也就确定了,后面的输入就不再读入数组 s中。55.下列程序的运行结果是_。#define POW(r)(r)*(r)main()int x=3,y=2,t;t=POW(x+y);printf(“%d/n“,t);(分数:2.00)填空项 1:_ (正确答案:25)解析:解析 本题考查带参数的宏的定义及相关运算。运算过程为:t=POW(x+y)=(2+3)*(2+3)=25。

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

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

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