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

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

1、二级 C 语言笔试 22 及答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.下列程序执行后的输出结果是 void func1(int i); void func2(int i); char st=“hello,friend!”; void func1(int i) printf(“%c“,sti); if(i3)i+=2;func2(i); void func2(int i) printf(“%c“,sti); if(i3)i+=2;func1(i); int i=0;func1(i);printf(“/n“);(分数:1.00)A.he

2、lloB.helC.hloD.hlm2.下列选项中,不属于模块间耦合的是(分数:1.00)A.数据耦合B.标记耦合C.异构耦合D.公共耦合3.下列程序的输出结果是 main() double d=3.2;int x,y; x=1.2;y=(x+3.8)/5.0; printf(“%d/n“,d*y);(分数:1.00)A.3B.3.2C.0D.3.074.以下程序的功能是进行位运算 main() unsigned char a,b; a=73;b=4i4;i+) sub(a,x);printf(“%d“,x); printf(“/n“); sub(s,y) int*s,y; static in

3、t t=3; y=st;t-; (分数:1.00)A.1 2 3 4B.4 3 2 1C.0000D.444411.下面能正确进行字符串赋值操作的是(分数:1.00)A.char s5=“ABCDE“;B.char s5=A,B,C,D,E;C.char*s;s=“ABCDE“;D.char*s;scanf(“%s“,;12.以下程序的输出结果是 #includestdio.h struct st int x;int *y;*p; int dt4=10,20,30,40; struct st aa4=50, for(i=0;i3;i) pi=i9;i+)gethchar(st;C.gets(s

4、t;D.for(i=0;i9;i+)scanf(“%s“, t=MAX(a+b,c+d); PRINT(t);(分数:1.00)A.Y=3B.存在语法错误C.Y=7D.Y=044.一个关系中属性个数为 1 时,称此关系为(分数:1.00)A.对应关系B.单一关系C.一元关系D.二元关系45.设有下面的程序段: char s=“china“; char*p;p=s; 则下列叙述正确的是(分数:1.00)A.s 和 p 完全相同B.数组 s 中的内容和指针变量 p 中的内容相同C.s 数组长度和 p 所指向的字符串长度相等D.*p 与 s0相等46.最简单的交换排序方法是(分数:1.00)A.快速

5、排序B.选择排序C.堆排序D.冒泡排序47.以下程序执行后 x 的值是 main() int x,y=252,i=386,*m= 则表达式 a*b+d-c 值的类型为U 【7】 /U。(分数:2.00)填空项 1:_58.下面程序的输出结果是U 【8】 /U。 unsigned fun6(unsigned num) unsigned k=1; do k*=hum%10; num/=10;while(num); return(k); main() unsigned n=26; printf(“%d/n“,fun6(n);(分数:2.00)填空项 1:_59.设 x 和 y 均为 int 型变量,

6、且 x=1,y=2,则表达式 double(1+x/y)的值为U 【9】 /U。(分数:2.00)填空项 1:_60.下面程序的运行结果是U 【10】 /U。 main() int i=0,j=10,k=2,s=0; for(;) i+=k; if(ij) printf(“%d/n“,s); break; s+=i; (分数:2.00)填空项 1:_61.在内存中,存储字符x要占用 1 个字节,存储字符串“x“要占用U 【11】 /U个字节。(分数:2.00)填空项 1:_62.以下程序的运行结果是U 【12】 /U。 #includestdio.h main() int a=1,b=2,c;

7、 c=max(a,b); printf(“max is%d/n“,c); max(int x,int y) int z; z=(xy)? x:y; return(z);(分数:2.00)填空项 1:_63.下面的函数 fun 的功能是将形参 x 的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为 0 的元素中,其他依次类推,请填空。 fun(int x,int b) int k=0,r; do r=x%U 【13】 /U; bk+=r; x/=U 【14】 /U; while(x);(分数:2.00)填空项 1:_64.以下程序是用递归方法求数组中的最大值及其

8、下标值。请填空。 #define M 10 void findmax(int *a,int n,int i,int *pk) if(in) if(aia *pk)U 【15】 /U; findmax(a,n,i+1,i+)scanf(“%d“ ,a+i); findmax(a,M,0,i4;i+) sub(a,x);printf(“%d“,x); printf(“/n“); sub(s,y) int*s,y; static int t=3; y=st;t-; (分数:1.00)A.1 2 3 4B.4 3 2 1C.0000 D.4444解析:命题目的 考查通过指针来引用一维数组元素的方法。

9、解题要点 若指针 s 指向数组 a,则 st可以引用数组 a 中下标为 t 的元素。 考点链接 通过数组的首地址引用数组元素。11.下面能正确进行字符串赋值操作的是(分数:1.00)A.char s5=“ABCDE“;B.char s5=A,B,C,D,E;C.char*s;s=“ABCDE“; D.char*s;scanf(“%s“,;解析:命题目的 考查了一维字符数组的定义和初始化。 解题要点 选项 A)和 B)定义的数组空间太小,至少应该为 6 个字符的长度才可以。选项 D)中的指针 s 未赋初值,所以指向个不确定的地址,因而不能用 scanf 输入数据到这一指针所指向的地址中。 考点链

10、接 通过赋初值的方式给一维字符数组赋字符串。12.以下程序的输出结果是 #includestdio.h struct st int x;int *y;*p; int dt4=10,20,30,40; struct st aa4=50, for(i=0;i3;i) pi=i9;i+)gethchar(st;C.gets(st; D.for(i=0;i9;i+)scanf(“%s“, t=MAX(a+b,c+d); PRINT(t);(分数:1.00)A.Y=3B.存在语法错误C.Y=7 D.Y=0解析:命题目的 考查带参数的宏替换。 解题要点 宏替换不像函数调用要进行参数值的计算、传递等,而只是

11、简单按照原格式进行字符串的替换。 考点链接 宏定义的命令格式。44.一个关系中属性个数为 1 时,称此关系为(分数:1.00)A.对应关系B.单一关系C.一元关系 D.二元关系解析:命题目的 使学生加深对关系模型数据库基础知识的记忆。 解题要点 在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有 N 个属性的关系称为 N 元关系。 考点链接 各种关系查询语言与过程性语言和非过程性语言的关系,过程性语言的特点。45.设有下面的程序段: char s=“china“; char*p;p=s; 则下列叙述正确的是(分数:1.00)A.s 和 p 完全相同B.数组 s

12、 中的内容和指针变量 p 中的内容相同C.s 数组长度和 p 所指向的字符串长度相等D.*p 与 s0相等 解析:命题目的 考查的是字符指针和字符数组的区别。 解题要点 选项 A)中,s 为数组名,是一个常量地址,而指针 p 为一个字符变量,不能说两者完全相同,所以选项 A)错误。选项 B)和 C)的说法都不严谨,只有选项 D)的说法正确。 考点链接 用于字符串处理的函数。46.最简单的交换排序方法是(分数:1.00)A.快速排序B.选择排序C.堆排序D.冒泡排序 解析:命题目的 让考生加深对各种排序方法特点的了解。 解题要点 冒泡排序是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐

13、步将线性表变成有序。 错解分析 交换排序方法有冒泡排序和快速排序,显然选项 B)和选项 C)错误,冒泡排序比较简单,其算法也容易理解,但快速排序本身较为复杂,且采用了递归调用,其算法理解也稍难。 考点链接 插入排序、选择排序、归并排序、基数排序等排序方法的特点。47.以下程序执行后 x 的值是 main() int x,y=252,i=386,*m= 则表达式 a*b+d-c 值的类型为U 【7】 /U。(分数:2.00)填空项 1:_ (正确答案:double 或双精度型)解析:命题目的 考查表达式的运算规则。 解题要点 C 语言中,如果运算符两边的数据类型不同,将进行类型转换,根据转换规则

14、,短整型转为长整型;整型转换为实型。 考点链接 数据类型的强制转换。58.下面程序的输出结果是U 【8】 /U。 unsigned fun6(unsigned num) unsigned k=1; do k*=hum%10; num/=10;while(num); return(k); main() unsigned n=26; printf(“%d/n“,fun6(n);(分数:2.00)填空项 1:_ (正确答案:12)解析:命题目的 考查的是 dowhile 循环的使用。 解题要点 dowhile 循环的一个比较显著的特点是:先执行一次循环体然后再判断循环的条件是否满足,若满足则接着进入

15、下一次循环,否则就退出循环。 考点链接 3 种循环结构的比较。59.设 x 和 y 均为 int 型变量,且 x=1,y=2,则表达式 double(1+x/y)的值为U 【9】 /U。(分数:2.00)填空项 1:_ (正确答案:1.000000)解析:命题目的 考查表达式的运算规则。 解题要点 本题考查两个知识点一是 x/y 的值为整型即为0,二是数字 1 存放在 double 中是 double 类型。60.下面程序的运行结果是U 【10】 /U。 main() int i=0,j=10,k=2,s=0; for(;) i+=k; if(ij) printf(“%d/n“,s); bre

16、ak; s+=i; (分数:2.00)填空项 1:_ (正确答案:30)解析:命题目的 考查 for 循环的使用。 解题要点 题目中 for(;)表示:for 循环的初始化表达式,条件表达式和修正表达式都省略了,表示进行 for 循环和 for 循环的终止都没有限制。 考点链接 while 循环的执行原理。61.在内存中,存储字符x要占用 1 个字节,存储字符串“x“要占用U 【11】 /U个字节。(分数:2.00)填空项 1:_ (正确答案:2)解析:命题目的 考查字符和字符串在内存中的存储形式。 解题要点 计算机存储一个字符用 1 个字节,存储字符串时,每个字符用占用 1 个字节,另在字符

17、串的有效字符之后存储 1 个字符串的结束标记符。所以存储字符串“X”要占用 2 个字节,存储字符x只要 1 个字节。 考点链接 sizeof()函数和strlen()函数的作用。62.以下程序的运行结果是U 【12】 /U。 #includestdio.h main() int a=1,b=2,c; c=max(a,b); printf(“max is%d/n“,c); max(int x,int y) int z; z=(xy)? x:y; return(z);(分数:2.00)填空项 1:_ (正确答案:max is 2)解析:命题目的 考查函数之间的数据传递。 解题要点 函数通过参数来传

18、递数据是单向的,只能由实参传给形参而不能由形参传给实参,但是可以通过函数的返回值将函数中的数据带回。 考点链接 函数的两种调用方式及函数调用的语法要求。63.下面的函数 fun 的功能是将形参 x 的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为 0 的元素中,其他依次类推,请填空。 fun(int x,int b) int k=0,r; do r=x%U 【13】 /U; bk+=r; x/=U 【14】 /U; while(x);(分数:2.00)填空项 1:_ (正确答案:132 142)解析:命题目的 考查 dowhile 循环的作用。 解题要点 深

19、刻理解+进制转化为二进制的方法,即取余法;数组名作为实参,在函数内部可以直接修改调用函数中定义的数组的值。 考点链接 掌握两个数据进行交换的算法原理。64.以下程序是用递归方法求数组中的最大值及其下标值。请填空。 #define M 10 void findmax(int *a,int n,int i,int *pk) if(in) if(aia *pk)U 【15】 /U; findmax(a,n,i+1,i+)scanf(“%d“ ,a+i); findmax(a,M,0,&n); printf(“ The maxinum is:%d/n“ ,an); printf(“ Its index

20、 is;%d/n“ ,n);(分数:2.00)填空项 1:_ (正确答案:*pk=ai)解析:命题目的 调用函数和初调用函数之间的数据传递。 解题要点 通过参数传递,findmax 函数接收到 4 个参数,分别是数组 a(需要对其中的数据按照题目的要求进行计算)、10(数组 a 中的元素个数)、0(数组 a 的起始位置)、指针变量 n(对数组 a 中的元素进行遍历)。我们了解了这些参数的作用后,再对递归调用的函数进行分析,就不难得出结论了。 考点链接 通过对本例中递归函数的分析掌握递归算法的执行原理。65.以下程序的输出结果是U 【16】 /U。 main() char*p=“BOOL“,“O

21、PK“,“H“,“SP“; int i; for(i=3;i0;i-,i-)printf(“%c“,*pi); printf(“/n“);(分数:2.00)填空项 1:_ (正确答案:SO)解析:命题目的 考查用指针引用字符串数组中元素的方法。 解题要点 题中需要注意两个问题:一是 for 循环的修正表达式共执行两次“i-”操作;二是*pi是对某个字符的引用。66.以下程序的输出结果是U 【17】 /U。 #includestdio.h main() int s=1,2,3,4,i; int x=0; for(i=0;i4;i+) x=sb(s,x); printf(“%d“ ,x); pri

22、ntf(“/n“); sb(s1,y) int *s1,y; static int i1=3; y=s1i1; i1-; return(y);(分数:2.00)填空项 1:_ (正确答案:174321)解析:命题目的 考查静态存储类的局部变量的使用。 解题要点 静态存储类的局部变量其生存期为整个程序的运行期间,作用域却只是定义它的函数或局部范围。 考点链接 局部变量和全局变量的作用域。67.以下程序用来输出结构体变量 ex 所占存储单元的字节数,请填空。 struct st char name20;double score; main() struct st ex; printf(“ex si

23、ze:%d/n“,sizeof(U 【18】 /U);(分数:2.00)填空项 1:_ (正确答案:struct st 或 ex)解析:命题目的 考查了结构体变量的存储分配结构。 解题要点 结构体类型数据,其数据成员各自占据不同的存储空间,整个结构体变量所占存储单元的字节数为每一个数据成员所占的存储空间的和。 考点链接 共用体变量所占存储单元字节数的计算。68.以下程序段的功能是统计链表中结点的个数,其中 first 为指向第一个结点的指针(链表带头结点)。请在下划线内填入正确内容。 struct link char data; struct link*next; struct link*p,*first; int c=0; p=first; while(U 【19】 /U) c+; p=U 【20】 /U;(分数:2.00)填空项 1:_ (正确答案:19p!=NULL 20p-next)解析:命题目的 考查链表的操作。 解题要点 结构体变量构成链表需要每个节点中都有一个指向下一个结点的指针,就像本题中的 next 指针一样。 考点链接 掌握可以对链表进行的操作。

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

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

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