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

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

1、二级 C 语言笔试-378 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中正确的是( )。A) 算法的效率只与问题的规模有关,而与数据的存储结构无关B) 算法的时间复杂度是指执行算法所需要的计算工作量C) 数据的逻辑结构与存储结构是一一对应的D) 算法的时间复杂度与空间复杂度一定相关(分数:1.00)A.B.C.D.2.栈和队列的共同点是( )。A) 都是先进后出 B) 都是先进先出C) 只允许在端点处插入和删除元素 D) 没有共同点(分数:1.00)A.B.C.D.3.下列关于队列的叙述中正确的是( )。A) 在队列中只能插入

2、数据 B) 在队列中只能删除数据C) 队列是先进先出的线性表 D) 队列是先进后出的线性表(分数:1.00)A.B.C.D.4.下面概念中,不属于面向对象方法的是( )。A) 对象 B) 继承 C) 类 D) 过程调用(分数:1.00)A.B.C.D.5.软件是指( )。A) 程序 B) 程序和文档C) 算法加数据结构 D) 程序、数据与相关文档的完整集合(分数:1.00)A.B.C.D.6.信息隐蔽的概念与下述哪一种概念直接相关( )。A) 软件结构定义 B) 模块独立性 C) 模块类型划分 D) 模块耦合度(分数:1.00)A.B.C.D.7.下列选项中,不属于模块间耦合的是( )。A)

3、数据耦合 B) 标记耦合 C) 异构耦合 D) 公共耦合(分数:1.00)A.B.C.D.8.对于现实世界中事物的特征,在实体联系模型中使用( )。A) 属性描述 B) 关键字描述 C) 二维表格描述 D) 实体描述(分数:1.00)A.B.C.D.9.下列数据模型中,具有坚实理论基础的是( )。A) 层次模型 B) 网状模型 C) 关系模型 D) 以上三个都是(分数:1.00)A.B.C.D.10.关系表中的每一横行称为一个( )。A) 元组 B) 字段 C) 属性 D) 码(分数:1.00)A.B.C.D.11.用 C 语言编写的代码程序( )。A) 可立即执行 B) 是一个源程序C) 经

4、过编译即可执行 D) 经过编译解释即可执行(分数:1.00)A.B.C.D.12.以下叙述中正确的是( )。A) 构成 C 程序的基本单位是函数 B) 可以在一个函数中定义另一个函数C) main()函数必须放在其他函数之前 D) 函数定义的格式是 KR 格式(分数:1.00)A.B.C.D.13.以下叙述中正确的是( )。A) C 程序中的注释只能出现在程序的开始位置和语句的后面B) C 程序书写格式严格,要求一行内只能写一个语句C) C 程序书写格式自由,一个语句可以写在多行上D) 用 C 语言编写的程序只能放在一个程序文件中(分数:1.00)A.B.C.D.14.有以下程序:#inclu

5、de stdio.hmain() int x=1, y=2, z=3; if (xy) if (yz) printf(“%d“, +z); else printf(“%d“, +y); printf(“%d/n“, x+); 程序的运行结果是( )。A) 331 B) 41 C) 2 D) 1(分数:1.00)A.B.C.D.15.下列程序的运行结果是( )。#include stdio.hmain() int x=-9, y=5, z=8; if(xy) if(y0) z=0; else z+=1; printf(“%d/n“, z); A) 6 B) 7 C) 8 D) 9(分数:1.00

6、)A.B.C.D.16.在嵌套使用 if 语句时,C 语言规定 else 总是( )。A) 和之前与其具有相同缩进位置的 if 配对B) 和之前与其最近的 if 配对C) 和之前与其最近的且不带 else 的 if 配对D) 和之前的第一个 if 配对(分数:1.00)A.B.C.D.17.有以下程序:#include stdio.hmain() char k; int i; for(i=1; i3; i+) scanf(“%c“,k); switch(k) case 0: printf(“another/n“); case 1: printf(“number/n“); 程序运行时,从键盘输入

7、:01回车,程序执行后的输出结果是( )。A) anothernumberB) anothernumberanotherC) anothernumbernumberD) numbernumber(分数:1.00)A.B.C.D.18.有以下程序:#include stdio.hmain() int i; for(i=0; i3; i+) switch(i) case 0: printf(“%d“, i); case 2:printf(“%d“, i); default: printf(“%d“, i); 程序运行后的输出结果是( )。A) 022111 B) 021021 C) 000122

8、D) 012(分数:1.00)A.B.C.D.19.以下选项中不属于字符常量的是( )。A) C B) “C“ C) /xCC D) /072(分数:1.00)A.B.C.D.20.有以下程序:#include stdio.hmain() char c1, c2, c3, c4, c5, c6; scanf(“%c%c%e%c“, c 1, c2, c3, c4); c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(“%c%c/n“, c5, c6); 程序运行后,若从键盘输入(从第 1 列开始) :123回车45678回

9、车则输出结果是( )。A) 1267 B) 1256 C) 1278 D) 1245(分数:1.00)A.B.C.D.21.在 C 语言中,函数返回值的类型最终取决于( )。A) 函数定义时在函数首部所说明的函数类型B) return 语句中表达式值的类型C) 调用函数时主调函数所传递的实参类型D) 函数定义时形参的类型(分数:1.00)A.B.C.D.22.下面的函数调用语句中 func 函数的实参个数是( )。func(f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8) ) ); A) 3 B) 4 C) 5 D) 8(分数:1.00)A.B.C.D.23

10、.有以下程序:#include stdio.hvoid f(intv, intw) int t; t=v; v=w; w=t; main() int x=1, y=3, z=2; if(xy) f(x, y); else if(yz) f(y, z); else f(x, z); printf(“%d, %d, %d/n“, x, y, z); 执行后输出结果是( )。A) 1, 2, 3 B) 3, 1, 2 C) 1, 3, 2 D) 2, 3, 1(分数:1.00)A.B.C.D.24.设有以下定义和语句:int a32=1, 2, 3, 4, 5, 6, *p3; p0=a1; 则*(

11、p0+1) 所代表的数组元素是()。A) a01 B) a10 C) a11 D) a12(分数:1.00)A.B.C.D.25.若有定义:int a23; ,以下选项中对 a 数组元素正确引用的是( )。A) a21 B) a23 C) a03 D) a12!1(分数:1.00)A.B.C.D.26.下列程序的输出结果是( )。#includestdio. h#define N 3#define M 3void fun(int aMN) printf(“%d/n“, *(a1+2) ); main() int aMN; int i, j, for(i=0; iM; i+) for(j=0;

12、jN; j+) aij=i+j-(i-j); fun(a); A) 3 B) 4 C) 5 D) 6(分数:1.00)A.B.C.D.27.若有定义:int w35;,则以下不能正确表示该数组元素的表达式是( )。A) *(*w+3) B) *(w+1) 4 C) *(*(w+1) ) D) *(w00+1)(分数:1.00)A.B.C.D.28.下列程序执行后的输出结果是( )。#include stdio. hmain() int a33,*p, i; p=a00; for(i=1; i9; i+) pi=i+1; printf(“%d/n“, a12); A) 3 B) 6 C) 9 D

13、) 随机数(分数:1.00)A.B.C.D.29.有以下程序:#include stdio.hint fun(int(*s) 4, int n, int k) int m, i; m=s0k; for(i=1; in; i+) if(sikm) m=sik; return m; main() int a44=1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34; printf(“%d/n“, fun(a, 4, 0) ); 程序的运行结果是( )。A) 4 B) 34 C) 31 D) 32(分数:1.00)A.B.C.D.30.

14、下面程序段的运行结果是( )。char *p=“ 123defgh“; p+=3;printf(“%d/n“, strlen(strcpy(p, “ ABCD“) ) ); A) 8 B) 12 C) 4 D) 7(分数:1.00)A.B.C.D.31.对下述程序的判断中,正确的是( )。#includestdio.hvoid main() char*p, s128; p=s; while(strcmp(s, “End“) ) printf(“Input a string:“); gets(s); p=s; while(*p) putchar(*p+); A) 此程序循环接收字符串并输出,直到

15、接收字符串“End”为止B) 此程序循环接收字符串,接收到字符串“End”则输出,否则程序终止C) 此程序循环接收字符串并输出,直到接收字符串“End”为止,但因代码有错误,程序不能正常工作D) 此程序循环接收字符串并将其连接在一起,直到接收字符串“End”为止,输出连接在一起的字符串(分数:1.00)A.B.C.D.32.阅读下列程序,当运行函数时,输入 asd af aa z67,则输出为( )。#include stdio.h#include ctype.h#include string.hint fun (char *str) inti, j=0; for(i=0; stri!=/0;

16、 i+) if(stri!= ) strj+=stri; strj=/0; main() char str81; int n; printf(“Input a string:“); gets(str); puts(str); fun(str); printf(“%s/n“, str); A) asdafaaz67 B) asd af aa z67 C) asd D) z67(分数:1.00)A.B.C.D.33.在函数调用过程中,如果函数 funA 调用了函数 funB,函数 funB 又调用了函数 funA,则( )。A) 称为函数的直接递归调用 B) 称为函数的间接递归调用C) 称为函数的

17、循环调用 D) C 语言中不允许这样的递归调用(分数:1.00)A.B.C.D.34.有以下程序:#include stdio.hint fun(int x, int n) static int sum=0, i; for(i=0; in; i+) sum+=xi; return sum; main() int a=1, 2, 3, 4, 5, b=6, 7, 8, 9, s=0; s=fun(a, 5) +fun(b, 4); printf(“%d/n“, s); 程序执行后的输出结果是( )。A) 45 B) 50 C) 60 D) 55(分数:1.00)A.B.C.D.35.以下程序的输

18、出结果是( )。#includestdio.hint a33=(1, 2, 3, 4, 5, 6, 7, 8, 9), *p; main() p=(int*) malloc(sizeof(int) ); f(p, A); printf(; % d/n“, *p); free(p); f(int *s, int p3) *s=p11; A) 1 B) 4 C) 7 D) 5(分数:1.00)A.B.C.D.36.有以下程序:struct STUchar name10; int num; ; void f1(struct STU c) struct STU b=“LiSiGuo“, 2042; c

19、=b; void f2(struct STU *c) structSTU b=“SunDan“, 2044; *c=b; main() struct STU a=“YangSan“, 2041, b=“WangYin“, 2043; f1(a); f2(b); printf(“%d, %d/n“, a.num, b.num); 程序执行后的输出结果是( )。A) 2041 2044 B) 2041 2043 C) 2042 2044 D) 2042 2043(分数:1.00)A.B.C.D.37.设有如下说明:typedef struct STlong a; int b; char c2; N

20、EW; 则下面叙述中正确的是( ) A) 以上的说明形式非法 B) ST 是一个结构体类型C) NEW 是一个结构体类型 D) NEW 是一个结构体变量(分数:1.00)A.B.C.D.38.设有以下语句:char x=3, y=6, z; z=xy2; 则 z 的二进制值是( )。A) 00010100 B) 00011011 C) 00011100 D) 00011000(分数:1.00)A.B.C.D.39.表达式 0x130x17 的值是( )。A) 0x17 B) 0x13 C) 0xf8 D) 0xec(分数:1.00)A.B.C.D.40.以下叙述中错误的是( )。A) gets

21、 函数用于从终端读入字符串B) getchar 函数用于从磁盘文件读入字符C) fputs 函数用于把字符串输出到文件D) fwrite 函数用于以二进制形式输出数据到文件(分数:1.00)A.B.C.D.二、程序填空题(总题数:1,分数:18.00)给定程序中,函数 fun 的功能是:将形参 s 所指字符串中的所有数字字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include stdio.h#include string.

22、h#include stdlib.h#include ctype.hchar *fun(char *s)inti, j, k, n; char *p, *t; n=strlen(s)+1; t=(c har*)malloc (n*sizeof(char); p=(char*)malloc(n*sizeof(char); j=0; k=0; for(i=0; in; i+)if(isdigit(si)/*found*/p (1) =si; j+; elsetk=si; k+; /*found*/for(i=0; i (2) ; i+)pj+i=ti; pj+k=0; /*found*/retur

23、n (3) ; main()char s80; printf(“Please input:“); scanf(“%s“, s); printf(“/nThe result is: %s/n“, fun(s); (分数:18.00)填空项 1:_填空项 1:_填空项 1:_三、程序改错题(总题数:1,分数:18.00)41.给定程序中函数 fun 的功能是:首先把 b 所指字符串中的字符按逆序存放,然后将 a 所指字符串中的字符和 b 所指字符串中的字符,按排列的顺序交叉合并到 c 所指数组中,过长的剩余字符接在 c 所指的数组的尾部。例如,当 a 所指字符串中的内容为“abcdefg”,b 所

24、指字符串中的内容为“1234”时,c 所指数组中的内容应“a4b3c2dlefg”;而当 a 所指字符串中的内容为“1234”,b 所指字符串的内容为“abcdefg”时,c 所指数组中的内容应该为“lg2f3e4dcba”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!试题程序:#include stdio.h#include string.hvoid fun (char*a, char*, char *c)inti, j; char ch; i=0; j=strlen(b)-1; /*found*/while(ij)ch=b

25、i; bi=bj; bj=ch; i+; j-; while (*a| *b)/*found*/If(*a)*c=*a; c+; a+; if(*b)*c=*b; c+; b+; *c=0; main()char s1100, s2100, t200; printf(“/nEnter s1 string:“); scanf(“%s“, s1); printf(“/nEnter s2 string:“); scanf(“%s“, s2); fun(s1, s2, t); printf(“/nThe result is: %s/n“, t); (分数:18.00)_四、程序设计题(总题数:1,分数

26、:24.00)42.函数 fun 的功能是:将 s 所指字符串中下标为偶数同时 ASCII 值为奇数的字符删除,s 所指串中剩余的字符形成的新串放在 t 所指的数组中。注意:部分源程序给出如下。请勿改动 mam 函数和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。试题程序:#include stdio.h#include string.hvoid fun(char *s, char t)main()char s100, t100; printf(“/nPlease enter string S:“); scanf(“%s“, s); fun(s, t); printf

27、(“/nThe result is:%s/n“, t); (分数:24.00)_二级 C 语言笔试-378 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中正确的是( )。A) 算法的效率只与问题的规模有关,而与数据的存储结构无关B) 算法的时间复杂度是指执行算法所需要的计算工作量C) 数据的逻辑结构与存储结构是一一对应的D) 算法的时间复杂度与空间复杂度一定相关(分数:1.00)A.B. C.D.解析:解析 算法的时间复杂度是指算法在计算机内执行时所需时间的度量;与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度

28、量。因此,选项 B)的说法是正确的。2.栈和队列的共同点是( )。A) 都是先进后出 B) 都是先进先出C) 只允许在端点处插入和删除元素 D) 没有共同点(分数:1.00)A.B.C. D.解析:解析 栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表。本题答案为 C)。3.下列关于队列的叙述中正确的是( )。A) 在队列中只能插入数据 B) 在队列中只能删除数据C) 队列是先进先出的线性表 D) 队列是先进后

29、出的线性表(分数:1.00)A.B.C. D.解析:解析 队列是一种操作受限的线性表。它只允许在线性表的一端进行插入操作,另一端进行删除操作。其中,允许插入的一端称为队尾(rear),允许删除的一端称为队首(front)。队列具有先进先出的特点,它是按“先进先出”的原则组织数据的。4.下面概念中,不属于面向对象方法的是( )。A) 对象 B) 继承 C) 类 D) 过程调用(分数:1.00)A.B.C.D. 解析:解析 面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。5.软件是指( )。A) 程

30、序 B) 程序和文档C) 算法加数据结构 D) 程序、数据与相关文档的完整集合(分数:1.00)A.B.C.D. 解析:解析 本题考查软件的定义。软件是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档的总和。因此,本题的正确答案是选项 D)。6.信息隐蔽的概念与下述哪一种概念直接相关( )。A) 软件结构定义 B) 模块独立性 C) 模块类型划分 D) 模块耦合度(分数:1.00)A.B. C.D.解析:解析 利用信息隐蔽,可以确保每一个模块的独立性。7.下列选项中,不属于模块间耦合的是( )。A) 数据耦合 B) 标记耦合 C) 异构耦合 D) 公共耦合(分数:1.00

31、)A.B.C. D.解析:解析 模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从强到弱分别是:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合和非直接耦合,没有异构耦合这种方式。8.对于现实世界中事物的特征,在实体联系模型中使用( )。A) 属性描述 B) 关键字描述 C) 二维表格描述 D) 实体描述(分数:1.00)A. B.C.D.解析:解析 本题考查对实体一联系模型的理解和掌握。在实体一联系模型中,用属性来描述现实世界中对象的属性所表示的对象的性质、特征和行为,因此正确答案为选项 A)。9.下列数据模型中,具有坚实理论基础的是( )。A) 层

32、次模型 B) 网状模型 C) 关系模型 D) 以上三个都是(分数:1.00)A.B.C. D.解析:解析 关系模型较之格式化模型(网状模型和层次模型)有以下几方面的优点,即数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系,以及有坚实的理论基础。10.关系表中的每一横行称为一个( )。A) 元组 B) 字段 C) 属性 D) 码(分数:1.00)A. B.C.D.解析:解析 关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为一个属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。11.用 C 语言编写的代码程序( )。A) 可立即执行 B)

33、 是一个源程序C) 经过编译即可执行 D) 经过编译解释即可执行(分数:1.00)A.B. C.D.解析:解析 本题考核的知识点是 C 程序的基本概念。C 语言是一种高级语言,C 语言源程序经过 C 语言编译程序编译之后,生成一个后缀为.obj 的二进制文件(称为目标文件),最后还要由称为“连接程序”(Link)的软件,把此.obj 文件与 C 语言提供的各种库函数连接在一起,生成一个后缀为.exe 的可执行文件。显然 C 语言不能立即执行,故选项 A)错误;根据以上定义,选项 C)和选项 D)错误,所以,4 个选项中选项 B)符合题意。12.以下叙述中正确的是( )。A) 构成 C 程序的基

34、本单位是函数 B) 可以在一个函数中定义另一个函数C) main()函数必须放在其他函数之前 D) 函数定义的格式是 KR 格式(分数:1.00)A. B.C.D.解析:解析 本题考查 C 语言的综合基础知识。构成 C 程序的基本单位是函数,不论 main 函数在整个程序中的位置如何,一个 C 程序总是从 main 函数开始执行,C 语言的函数定义都是互相平行、独立的,在定义函数时,一个函数内不能定义另一个函数。C 函数定义的一般格式有两种:传统格式和现代格式。传统格式也称 KR,格式是早期编译系统使用的格式;现代格式又称 ANSI 格式,是现代编译系统使用的格式。13.以下叙述中正确的是(

35、)。A) C 程序中的注释只能出现在程序的开始位置和语句的后面B) C 程序书写格式严格,要求一行内只能写一个语句C) C 程序书写格式自由,一个语句可以写在多行上D) 用 C 语言编写的程序只能放在一个程序文件中(分数:1.00)A.B.C. D.解析:解析 考查 C 语言的几个基本概念。选项 A)中,C 语言的注释可以出现在程序的任何位置;C 语言的语法限制不严格,可以多条语句放在同一行上,也可以将一条语句写在多行,故选项 B)错误,选项 C)正确;选项 D)是错误的,因为用 C 语言编写的程序可以放在不同的文件中,文件之间使用预处理命令进行调用。14.有以下程序:#include std

36、io.hmain() int x=1, y=2, z=3; if (xy) if (yz) printf(“%d“, +z); else printf(“%d“, +y); printf(“%d/n“, x+); 程序的运行结果是( )。A) 331 B) 41 C) 2 D) 1(分数:1.00)A.B.C.D. 解析:解析 本题考查的是 ifelse 语句。C 语言规定 else 总是与最近的 if 搭配,因此程序中 else与第二个 if 搭配。程序首先判断(xy),为假,所以跳过后面的整个 ifelse 语句。执行到输出语句时,x 的值仍为 1,x+返回 x 增 1 之前的结果 1,故

37、应该选择 D)。15.下列程序的运行结果是( )。#include stdio.hmain() int x=-9, y=5, z=8; if(xy) if(y0) z=0; else z+=1; printf(“%d/n“, z); A) 6 B) 7 C) 8 D) 9(分数:1.00)A.B.C.D. 解析:解析 ifelse 语句的执行过程如下,首先计算 if 后面一对圆括号内表达式的值,若表达式的值为非 0,执行 if 子句,然后跳过 else 子句,去执行 if 语句后的下一条语句;若表达式的值为 0,跳过if 子句,去执行 else 子句,接着去执行 if 语句后的下一条语句。C

38、语言的语法规定,else 子句总是与前面最近的不带 else 的 if 匹配,与书写格式无关,本题目的后一个 if-else 相当于嵌套在第一个 if 子句里,相当于 xyy0 时,z=0; 当 xyy=0 时,z=z+1。16.在嵌套使用 if 语句时,C 语言规定 else 总是( )。A) 和之前与其具有相同缩进位置的 if 配对B) 和之前与其最近的 if 配对C) 和之前与其最近的且不带 else 的 if 配对D) 和之前的第一个 if 配对(分数:1.00)A.B.C. D.解析:解析 本题考查了 if 语句的嵌套。在嵌套的 if 语句中,else 总是与它上面最近的且不带 el

39、se的 if 配对。因此本题的正确答案为选项 C)。17.有以下程序:#include stdio.hmain() char k; int i; for(i=1; i3; i+) scanf(“%c“,k); switch(k) case 0: printf(“another/n“); case 1: printf(“number/n“); 程序运行时,从键盘输入:01回车,程序执行后的输出结果是( )。A) anothernumberB) anothernumberanotherC) anothernumbernumberD) numbernumber(分数:1.00)A.B.C. D.解析

40、:解析 本题考核的知识点是 for 循环语句和 switch 语句嵌套使用。switch 语句的执行过程是:在 switch 后面的表达式的值和 case 后面常量表达式的值吻合时,就执行后面的语句。如果在该语句的后面没有 break 语句,则继续执行下一个 case,直到遇到 break 语句或 switch 多分支的结束,在 switch语句中,break 语句的作用是使流程跳出 switch 结构,终止 switch 语句的执行。本题中在 for 循环中嵌套了 switch 语句,每循环一次通过 scanf()函数从键盘上输入一个 k 值,然后执行 switch 语句。18.有以下程序:

41、#include stdio.hmain() int i; for(i=0; i3; i+) switch(i) case 0: printf(“%d“, i); case 2:printf(“%d“, i); default: printf(“%d“, i); 程序运行后的输出结果是( )。A) 022111 B) 021021 C) 000122 D) 012(分数:1.00)A.B.C. D.解析:解析 本题考核的知识点是 for 循环和 switch 语句的混合应用。程序中 for 循环了三次,第一次i=0,执行 switch 语句中 case 0:分支,直到遇到 default 语句

42、,退出 switch,这里共执行了三个输出语句,分别输出 0, 0, 0。第二次循环 i=1,switch 语句中没有匹配的分支,故只执行 default 语句,输出l,退出 switch 语句。第三次循环 i=2,从 switch 语句中的 case 2:开始执行,共执行了两个输出语句,输出 2、2。最后输出的结果为 000122。所以,4 个选项中选项 C)符合题意。19.以下选项中不属于字符常量的是( )。A) C B) “C“ C) /xCC D) /072(分数:1.00)A.B. C.D.解析:解析 在 C 语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符

43、常量。选项 A)、C)和 D)为正确的字符常量,而选项 B)是用双引号括起来的字符,表示一个字符串常量。20.有以下程序:#include stdio.hmain() char c1, c2, c3, c4, c5, c6; scanf(“%c%c%e%c“, c 1, c2, c3, c4); c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(“%c%c/n“, c5, c6); 程序运行后,若从键盘输入(从第 1 列开始) :123回车45678回车则输出结果是( )。A) 1267 B) 1256 C) 1278 D

44、) 1245(分数:1.00)A.B.C.D. 解析:解析 putchar(c1)输出 1,putchar(c2)输出 2,printf(“%c%c/n“, c5, c6)输出 45。格式化输入函数必须严格按照双引号里面的格式进行输入。在格式化输出函数中,格式控制串中除了合法的格式说明外,可以包含任意的合法字符。21.在 C 语言中,函数返回值的类型最终取决于( )。A) 函数定义时在函数首部所说明的函数类型B) return 语句中表达式值的类型C) 调用函数时主调函数所传递的实参类型D) 函数定义时形参的类型(分数:1.00)A. B.C.D.解析:解析 本题考查的知识点是函数返回类型。有

45、返回值函数的定义形式为:返回类型函数名(参数列表)语句序列其中,返回类型决定了最终函数返回值的类型。故本题应该选择 A)。22.下面的函数调用语句中 func 函数的实参个数是( )。func(f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8) ) ); A) 3 B) 4 C) 5 D) 8(分数:1.00)A. B.C.D.解析:解析 本题考查的是函数的实参。函数在被调用时,传入的实参以逗号分隔,实参可以是一个变量,也可以是一个表达式。在本题中,func()函数传入的参数是被逗号分隔的 3 个表达式,它们分别是f2(v1,v2)、(v3,v4,v5)和(v

46、6,max(v7,v8),所以它的实参个数是 3。其中,f2(v1,v2)是一个函数调用;(v3,v4,v5)是一个逗号表达式;(v6,max(v7,v8)也是一个逗号表达式,它里面甚至还包含了一个函数调用,但这并不影响它只代表 1 个实参这个事实。故本题应该选择 A)。23.有以下程序:#include stdio.hvoid f(intv, intw) int t; t=v; v=w; w=t; main() int x=1, y=3, z=2; if(xy) f(x, y); else if(yz) f(y, z); else f(x, z); printf(“%d, %d, %d/n“

47、, x, y, z); 执行后输出结果是( )。A) 1, 2, 3 B) 3, 1, 2 C) 1, 3, 2 D) 2, 3, 1(分数:1.00)A.B.C. D.解析:解析 本题考核的知识点是函数参数的传递。由于调用函数时是进行值传递的,即将实参x、y、z 传给形参 v 和 w,以后形参和实参再无联系,故通过 if 语句调用 f()函数后,x、y 和 z 的值并没有改变。故最后输出的 x、y 和 z 的值为 1、3 和 2。24.设有以下定义和语句:int a32=1, 2, 3, 4, 5, 6, *p3; p0=a1; 则*(p0+1) 所代表的数组元素是()。A) a01 B) a10 C) a11 D) a12

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

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

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