【计算机类职业资格】二级C语言笔试331及答案解析.doc
《【计算机类职业资格】二级C语言笔试331及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C语言笔试331及答案解析.doc(16页珍藏版)》请在麦多课文档分享上搜索。
1、二级 C 语言笔试 331 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.两次运行下列的程序,如果从键盘上分别输入 3 和 1,则输出结果是( )。main() int x; scanf(“%d“,的功能是使指针变量 t 指向字符串变量 s 的末尾,这时退出循环,因而语句 return(t-s);返回的就是字符串 s所指字符串的长度。6.下列选项中不合法的十六进制数是( )。(分数:2.00)A.OxffB.OX11C.Oxlg D.OXabc解析:解析 十六进制是以“0x”或“0X”开头的字符串,字符串中只能含有 09 这 10
2、个数字和a、b、c、d、e、f 这 6 个字母。7.设有下列定义:struct sk int m; float x; data,*q;若要使 q 指向 data 中的 m 域,正确的赋值语句是( )。(分数:2.00)A.q=&datm;B.q=datm;C.q=(struct sk*)&datm; D.q=(struct sk*)datm;解析:解析 利用强制类型转换(struct sk*),把整数型地址&data.m 转换成结构体变量指针赋给结构体指针变量 q。8.数据的存储结构是指( )。(分数:2.00)A.数据所占的存储空间B.数据的逻辑结构在计算机中的存放形式 C.数据在计算机中的
3、顺序存储方式D.存储在计算机外存中的数据解析:解析 数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。9.栈和队列的共同点是( )。(分数:2.00)A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素 D.没有共同特点解析:解析 栈和队列都是操作受限制的线性表,只允许在端点插入和删除。不同点是:栈只允许在表的一端进行插入和删除操作,而队列允许在表的端进行插入操作,而在另一端进行删除操作。10.若有说明 int a3=0,0);,则不正确的叙述是( )。(分数:2.00)A.数组 a 的每个元素的初
4、值都是 0B.数组 a 的第一维大小为 1C.数组 a 的行数为 1D.只有元素 a00和 a01可得到初值 0,其余元素均得不到初值 0 解析:解析 本题考查给二维数组元素赋值。给二维数组元素赋值时应注意下列两点:在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取 0。二维数组第一维的大小由下列规则确定:当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小;当初值的个数不能被第二维的常量表达式的值除尽时,第一维的大小=所得商数+1。11.有下列函数定义:int fun(double a,double b) return a*b; 若下列选项中所用变量都己
5、正确定义并赋值,错误的函数调用是( )。(分数:1.00)A.if(fun(x,)B.z=fun(fun(x,fun(x,);C.z=fun(fun(x,x,; D.fun(x,;解析:解析 本题考查函数调用时的参数传递。C 项中第一个参数的表达式不正确,因此不能得到正确的结果。12.下列程序的执行结果是( )。#includestdio.hmain() int a,b,c; a=b=2: c=(a+)-1;printf(“%d,%d“,a,c) ; c+=(a+=-a+(+B) ;printf(“%d,%d“,a,c) ;(分数:1.00)A.3,1 4,1 B.3,1 4,2C.2,04,
6、1D.2,1 4,1解析:解析 本题主要考查自加运算符(+、-)的使用。前缀变量“+i、-i”,在使用 i 之前,先使i 的值加 1 或者减 1,再使用此时的表达式的值参与运算:后缀变量“i+、i-”,先使用此时的表达式的值参与运算,在使用 i 之后,再使 i 的值加 1 或者减 1。 本题中计算表达式 c=(a+)-1 时先使用 a的值进行计算,结果为 c=2-1=1,然后将 a 的值加 1,即执行完此语句后,的值是 3;表达式 c+=-a+(+b)等价于 c=c+(-a+)+(+b),c=1+(-3)+3=1,此时 a=4,b=3。13.为了提高软件模块的独立性,模块之间最好是( )。(分
7、数:1.00)A.控制耦合B.公共耦合C.内容耦合D.数据耦合 解析:解析 耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。在程序设计中,奇模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦台,有利于提高模块的独立性。14.下列程序的运行结果是( )。#includestdio.hvoid fun(int*s,int*p) static int t=3; *p=st; t-;void main() int a=2,3,4,5),k; int x; for(k=0;k4;k+) fun(a,&x); printf(“%d,“,x); (分数:1.00)A.5,
8、4,3,2 B.2,3,4,5,C.2,2,2,2,D.5,5,5,5,解析:解析 分析 fun 函数程序段,可知 fun 函数要实现的功能是将 s 中第(t+1)个元素以前的元素逆置赋给数组 p。由于 fun 中函数定义了静态变量 t=3,因此,在主函数中调用函数 fun(a,&x)时,就是要将数组 a 中前 4 个元素逆置赋给数组 x,最后输出 x 数组。15.若 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;(分数:1.00)A.2 B.3C.5D.4解析:
9、解析 条件表达式“a?b:c”的含义是:当 a 为真时,其值等于表达式 b 的值,当 a 为假时,其值等于表达式 c 的值。 表达式运算过程:第 1 个表达式:w-2x=3 为真,所以返回 w 的值,即 m=w=2;第 2 个表达式;m-2z=5 为真,所以返回 m 的值,即 m=2;第 3 个表达式;w=2y=4 为真,所以返回 m的值,即 m=2。16.下列 4 个关于 C 语言的结论中错误的是( )。(分数:1.00)A.可以用 dowhile 语句实现的循环一定可以用 while 语句实现B.可以用 for 语句实现的循环一定可以用 while 语句实现C.可以用 while 语句实现
10、的循环一定可以用 for 语句实现D.dowhile 语句与 while 语句的区别仅是关键字“while”出现的位置不同 解析:解析 本题考查几个循环语句的关系。dowhile 语句、while 语句、for 语句所实现的循环可以相互替代;dowhile 语句和 while 语句的区别是 dowhile 语句至少执行一次。17.#define 能作简单的替代,用宏来替代计算多项式 5*x*x+5*x+5 的值的函数 f,正确的宏定义语句为( )。(分数:1.00)A.#define f(5*X*x+5*x+5B.#define f5*x*x+5*x+5C.#define f( (5*a*a+
11、5*a+5) D.#define(5*x*x+5*x+5)f(解析:解析 带参数宏的格式为:#define 标识符(形参表) 形参表达式。其功能是:预处理程序将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。18.下列合法的字符型常量是( )。(分数:1.00)A./x13 B./081C.65D.“/n“解析:解析 C 语言的字符常量是用单引号()括起来的一个字符,也可以用以个“/”开头的字符序列来表示字符常量。其中形式/ddd 表示 1 到 3 位 8 进制数所代表的字符;形式/xhh 表示 1 到 2 位 16 进制数所代表的字符。在本题中/x13表示回车符,是一个字符常量;而/
12、081用 8 进制数所代表的字符形式不正确,因为 8 进制数所表示的字符中不会出现数字“8”;65单引号(即撇号)括起来的不是一个字符,而是一个十进制数字;“/n“是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。19.若变量已正确定义,下列正确的程序段是( )。(分数:1.00)A.while(ch=getchar()=/N)putchar(c;B.while(ch=getchar()=/n)putchar(c;C.while(ch=getchar()!=/N)putchar(c;D.while(ch=getchar()!=/n)putchar(c; 解析:解析 本题考查两个知识点
13、:C 语言用/n这个字符常量表示换行;getchar 函数的作用是从终端输入一个字符,当遇到换行时结束输入。20.下列说法不正确的是( )。(分数:1.00)A.C 程序是以函数为基本单位的,整个程序由函数组成B.C 语言程序的一条语句可以写在不同的行上C.C 程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写 D.C 程序的每个语句都以分号结束解析:解析 本题涉及 C 语言基本的 3 个知识点:C 语言的源程序是由函数构成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主函数;c 语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以写在不同的行上,或
14、者一行也可以写多条语句;注释行虽然对程序的运行不起作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释行还是很有必要的。21.待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码 33 被放到第( )个位置。(分数:2.00)A.3B.5 C.7D.9解析:解析 快速排序的基本思想是:从表中选取一个元素(如本题中的 33),将表中小于此元素的移到前面,大于此元素的移到后面,结果把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处。然后分别对两个子表
15、再次分割本题中 33 作为分割的中界线,第一趟排序后捧在比它小的18、9、2,、12 后面。22.源程序的文档化不包括( )。(分数:2.00)A.符号名的命名要有实际意义B.正确的文档形式 C.良好的视觉组织D.正确的程序注释解析:解析 源程序的文档化主要包括 3 点,符号名应具有一定实际的含义,便于理解程序功能;正确的程序注释;良好的视觉组织(利用空格、空行、缩进等技巧使程序层次清晰)。23.对长度为 n 的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。(分数:2.00)A.125B.n/2C.n D.n+1解析:解析 对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与
16、表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的量后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。24.下列标识符不是关键字的是( )。(分数:2.00)A.breakB.charC.Switch D.retum解析:解析 break,char、return、switch 都是 C 语言中的关键字,Switch 不是。因为 C 语言区分字母的大小写。25.下列程序段的运行结果是( )。#includestdio.hvoid main() char str=“ABC“,*p=str; printf(
17、“%d/n“,*(p+3);(分数:2.00)A.67B.0 C.字符C的地址D.字符C解析:解析 先定义了一个指向字符型数组 str 的指针 p,指针 p 指向数组 str 的首地址,p+3 将指针指向 str3,又因为字符型数组在存放字符串时会自动在末尾加上/0,所以*(p+3)=0。26.判断字符串 s1 是否大于字符串 s2,应该使用( )。(分数:2.00)A.if(strcmp(s1,s2)0)B.if(s1s2)C.if(strcmp(s2,s1)0) D.if(strcmp(s1,s2)解析:解析 本题考查字符串比较函数 strcmp()。调用形式:slxcmp(s1,s2),
18、其中 s1、s2 分别是字符串存储区的首地址。函数功能:比较字符串 str1 和 str2,当 str1str2 时,返回值为负数:当str1=str2 时,返回 0;当 str1str2,返回值为正数(注意:不能使用关系运算符比较两个字符串的大小)。27.下列描述中正确的是( )。(分数:2.00)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 D.软件工程只是解决软件开发过程中的技术问题解析:解析 软件工程是指将工程化的思想应用于软件的开发、应用和维护的过程,包括软件开发技术和软件工程管理。28.
19、下列程序中 c 的二进制值是( )。char a=2,b=4,c;c=ab2:(分数:2.00)A.00000011 B.00010100C.00011100D.00011000解析:解析 本题主要考查按位异或和右移运算。b=4 的二进制为 00000100,b2 后为00000001,a=2 的二进制为 00000010,两者异或为 00000011。29.已知大写字母 A 的 ASCII 码是 65,小写字母 a 的 ASCII 码是 97。下列不能将变量 c 中的大写字母转换为对应小写字母的语句是( )。(分数:2.00)A.c=(c-A)%26+aB.c=c+32C.c=C-A+ aD
20、.c=(A+) %26-a 解析:解析 由题意可知,小写字符 a 和大写字符 A 的 ASCII 代码相差为 32,所以选项 C)能将大写字符c 的 ASCII 代码转换为小写字符 c 的 ASCII 代码;选项 A)和 C)左侧的表达式都是大写字符 c 与大写字符A 的差与a的 ASCII 代码的和就是小写字符 c 的 ASCII 代码而选项 D)中应该是加上a,而不是减去a。30.下列程序的运行结果是( )。#includestdio.h#includestring.hmain() char*s1=“ahDuj“; char*s2=“ABdUG“: int t; t=strcmp(s1,s
21、2); printf(“%d“, t);(分数:2.00)A.正数 B.负数C.零D.不确定的值解析:解析 本题考查字符串比较函数和两个字符串比较的原则两个知识点:原则是依次比较两个字符串同位置的一对字符,若它们的 ASCII 码值相同,则继续比较下一对字符,若它们的 ASCII 码值不同则 ASCII 码值较大的字符所在的串符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部 i 个字符与另一个字符串的前 i 个字符相同,则字符串较长的较大。strcmp(s1,s2)的返回值,当 str1str2 时,返回值0;当 str1=str2 时,返回值为 0;当 str1str2,返回值0
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 语言 笔试 331 答案 解析 DOC
