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

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

1、二级 C 语言笔试-386 及答案解析(总分: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.如果进栈序列为 e1,e2,e3,e4,则可能的出栈序列是( )。A) e3,e1,e4,e2 B) e2,e4,e3,e1 C) e3,e4,e1,e2

2、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.Visual FoxPro 关系数据库管理系统能够实现的三种基本关系运算是( )。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)

4、 物理设计(分数:1.00)A.B.C.D.11.以下叙述中错误的是( )。A) C 语言是一种结构化程序设计语言B) 结构化程序由顺序、分支、循环三种基本结构组成C) 使用三种基本结构构成的程序只能解决简单问题D) 结构化程序设计提倡模块化的设计方法(分数:1.00)A.B.C.D.12.下列叙述中正确的是( )。A) 每个 C 程序文件中都必须要有一个 main()函数B) 在 C 程序中 main()函数的位置是固定的C) C 程序中所有函数之间都可以相互调用,与函数所在位置无关D) 在 C 程序的函数中不能定义另一个函数(分数:1.00)A.B.C.D.13.有以下程序段:char c

5、h; int k; ch=a; k=12; printf(“%c, %d, “, ch, ch, k); printf(“k=%d/n“, k); 已知字符 a 的 ASCII 十进制代码为 97,则执行上述程序段后输出结果是( )。A) 因变量类型与格式描述符的类型不匹配输出无定值B) 输出项与格式描述符个数不符,输出为零值或不定值C) a, 97, 12k=12D) a, 97, k=12(分数:1.00)A.B.C.D.14.设有定义:int a; float b; ,执行 scanf(“%2d%f“, a, b); 语句时,若从键盘输入 876 543.0回车,a 和 b 的值分别是(

6、 )。A) 876 和 543.000000 B) 87 和 6.000000C) 87 和 543.000000 D) 76 和 543.000000(分数:1.00)A.B.C.D.15.在执行下述程序日寸,若从键盘输入 6 和 8,则结果为( )。main() int a, b, s; scanf(“%d%d“, a, b); s=a; if(ab) s=b; s*-=s; printf(“%d“, s); A) 36 B) 64 C) 48 D) 以上都不对(分数:1.00)A.B.C.D.16.下列条件语句中,功能与其他语句不同的是( )。A) if(a) printf(“%d/n“

7、, x); else printf(“%d/n“, y); B) if(a=0) printf(“%d/n“, y); else printf(“%d/n“, x); C) if(a!=0) printf(“%d/n“, x); else printf(“%d/n“, y); D) if(a=0) printf(“%d/n“, x); else printf(“%d/n“, y);(分数:1.00)A.B.C.D.17.有以下程序:main() int k=5, n=0; doswitch (k) case 1:case 3:n+=1; k-; break; default: n=0; k-;

8、 case 2:case 4:n+=2; k-; break; printf(“%d“, n); while (k0 n5); 程序运行后的输出结果是( )。A) 235 B) 0235 C) 02356 D) 2356(分数:1.00)A.B.C.D.18.下面的 for 语句:for(int x=0, y=10; (y0)(x4); x+, y-) ; 则下面叙述中正确的是( )。A) 是无限循环 B) 循环次数不定C) 循环执行 4 次 D) 循环执行三次(分数:1.00)A.B.C.D.19.下列选项中 C 语言中不合法的字符串常量的是( )。A) “/1“ B) 2y1 C) “/n

9、/n“ D) “ABCD/x6d/(分数:1.00)A.B.C.D.20.已知字符A的 ASCII 码值是 65,字符变量 c1 的值是A,c2 的值是D。执行语句 printf(“%d, %d“, c1, c2-2); 后,输出结果是( )。A) A, B B) A 68 C) 65, 66 D) 65, 68(分数:1.00)A.B.C.D.21.以下程序中函数 f 的功能是:当 flag 为 1 时,进行由小到大排序;当 flag 为 0 时,进行由大到小排序。#include stdio.hvoid f(int b, int n, int flag) inti, j, t; for (

10、i=0; in-1; i+) for (j=i+1; jn; j+) if(flag?bibj:bibj) t=bi; bi=bj; bj=t; main() (int a10=5, 4, 3, 2, 1, 6, 7, 8, 9, 10, i; f(a2, 5, 0); f(a, 5, 1); for (i=0; i10; i+) printf(“%d, “, ai); ) 程序运行后的输出结果是()。A) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, B) 3, 4, 5, 6, 7, 2, 1, 8, 9, 10, C) 5, 4, 3, 2, 1, 6, 7, 8, 9,

11、 10, D) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,(分数:1.00)A.B.C.D.22.若有以下函数首部:int fun(double x10, int *n) 则下面针对此函数的函数声明语句中正确的是( )。A) int fun(double x, int *n); B) int fun(double, int); C) int fun(double *x, int n); D) int fun(double *, int*);(分数:1.00)A.B.C.D.23.以下程序中调用 scanf 函数给变量 a 输入数值的方法是错误的,其错误原因是( )。main(

12、) int*p, *q, a, b; p=a; printf(“input a:“); scanf(“%d“, *p); A) *p 表示的是指针变量 p 的地址B) *p 表示的是变量 a 的值,而不是变量 a 的地址c) *表示的是指针变量 p 的值D) *p 只能用来说明 p 是一个指针变量(分数:1.00)A.B.C.D.24.有以下程序:main() int a32=0), (*ptr)2, i, j; for(i=0; i2; i+) pta+i; scanf(“%d“, ptr); ptr+; for(i=0; i3; i+) for(j=0; j2; j+)printf(“%2

13、d“, aij); printf(“/n“); 若运行时输入:1 2 3回车,则输出结果为( )。A) 产生错误信息B) 1 02 00 0C) 1 23 00 0D) 1 02 03 0(分数:1.00)A.B.C.D.25.有以下程序:#include stdio.hvoid sum(int a) a0=a-1+a1; main() int a10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10; sum(a2); printf(“%d/n“, a2); 程序运行后的输出结果是( )。A) 6 B) 7 C) 5 D) 8(分数:1.00)A.B.C.D.26.有以下程序:#i

14、nclude stdio.hmain() int i, s=0, t=1, 2, 3, 4, 5, 6, 7, 8, 9; for(i=0; i9; i+=2)s+=*(t+i); printf(“%d/n“, s); 程序执行后的输出结果是( )。A) 45 B) 20 C) 25 D) 36(分数:1.00)A.B.C.D.27.有以下程序:#include stdio.hmain() int a44=1, 4, 3, 2, (8, 6, 5, 7), 3, 7, 2, 5, 4, 8, 6, 1, i, j, k, t; for(i=0; i4; i+) for (j=0; j3; j+

15、) for(k-j+1; k4; k+) if (ajiaki) t=aji; aji=aki; aki=t; /* 按列排序 */for (i=0; i4; i+) printf(“%d, “, aii); 程序运行后的输出结果是()。A) 1, 6, 5, 7, B) 8, 7, 3, 1, C) 4, 7, 5, 2, D) 1, 6, 2, 1,(分数:1.00)A.B.C.D.28.若有定义:int a23; ,以下选项中对 a 数组元素正确引用的是( )。A) a2!1 B) a23 C) a03 D) a11!1(分数:1.00)A.B.C.D.29.以下数组定义中错误的是( )

16、。A) int x3=0; B) int x23=1, 2, 3, 4, 5, 6; C) int x3=1, 2, 3, 4, 5, 6; D) int x23=1, 2, 3, 4, 5, 6;(分数:1.00)A.B.C.D.30.若要求从键盘读入含有空格字符的字符串,应使用函数( )。A) getc() B) gets() C) getchar() D) scanf()(分数:1.00)A.B.C.D.31.有以下程序:#include stdio.hmain() char *p10=“123 “, “aabdfg“, “dcdbe“, “abbd“, “cd“; printf(“%d

17、/n“, strlen(p4) ); 执行后的输出结果是( )。A) 2 B) 3 C) 4 D) 5(分数:1.00)A.B.C.D.32.有以下程序段:#include stdio.h#include string.hmain() char a320=“china“), “isa“, “bigcountry!“; char k100=0, *p=k; int i; for(i=0; i3; i+) p=strcat(p, ai); i=strlen(p); printf(“%d/n“, i); 则程序段的输出结果是( )。A) 18 B) 19 C) 20 D) 21(分数:1.00)A.

18、B.C.D.33.有以下程序:#include stdio.hfun(int x) int p; if(x=0|x=1) return(3); p=x-fun(x-2); return p; main() printf(“%d/n“, fun(7) ); 执行后的输出结果是( )。A) 7 B) 3 C) 2 D) 0(分数:1.00)A.B.C.D.34.有以下程序:#include stdio.hfun(int x, int y) static int m=0, i=2; i+=m+1, m=i+x+y; return m; main() int j=1, m=1, k; k=fun(j,

19、 m); printf(“%d, “, k); k=fun(j, m); printf(“%d/n“, k); 执行后的输出结果是( )。A) 5, 5 B) 5, 11 C) 11, 11 D) 11, 5(分数:1.00)A.B.C.D.35.有以下程序:#define f(x) x*x#include stdio.hmain() int i; i=f(4+4) /f(2+2); printf(“%d/n“, i); 执行后的输出结果是( )。A) 28 B) 22 C) 16 D) 4(分数:1.00)A.B.C.D.36.设有如下定义:struct skint n; float x;

20、data, *p; 若要使 p 指向 data 中的 n 域,正确的赋值语句是( )。A) p=data.n; B) *p=data.n; C) p=(struct sk*) data.n; D) p=(struct sk*)data.n;(分数:1.00)A.B.C.D.37.有以下程序:#include stdio.hmain() struct STUchar name9; char sex; double score2; ; struct STU a= “Zhao“, m, 85.0, 90.0, b=“Qian“, f, 95.0, 92.0; b=a; printf(“%s, %c,

21、 %2.0f, %2.0f/n“, b.name, b.sex, b.score0, b.score1); 程序的运行结果是( )。A) Qian, f, 95, 92 B) Qian, m, 85, 90 C) Zhao, f, 95, 92 D) Zhao, m, 85, 90(分数:1.00)A.B.C.D.38.有以下程序:#include stdio.htypedef structint b, p; ) A; void f(A c) /*c 是结构变量名*/int j; c.b+=1; c.p+=2; main() int i; A a=1, 2; f(a); printf(“%d,

22、 %d/n“, a.b, a.p); 程序运行后的输出结果是()。A) 2, 3 B) 2, 4 C) 1, 4 D) 1, 2(分数:1.00)A.B.C.D.39.以下程序的输出结果是( )。main() int c=35; printf(“%d/n“, cc); A) 0 B) 70 C) 35 D) 1(分数:1.00)A.B.C.D.40.有以下程序:#include stdio.hvoid WriteStr(char *fn, char *str) FILE *fp; fp=fopen(fn, “w“); fputs(str, fp); fclose(fp); main() Wri

23、teStr(“t1.dat“, “start“); WriteStr(“t1.dat“, “end“); 程序运行后,文件 t1.dat 中的内容是( )。A) start B) end C) startend D) endrt(分数:1.00)A.B.C.D.二、程序填空题(总题数:1,分数:18.00)下列给定程序中,函数 fun 的功能是:把形参 a 所指数组中的偶数按原顺序依次存放到 a0、a1、a2中,把奇数从数组中删除,偶数的个数通过函数值返回。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:

24、#includestdio.h#define N 9int fun(int a, int n)int i, j; j=0; for(i=0; in; i+)/*found*/if( (1) =0)/*found*/(2) =ai; j+; /*found*/return (3) ; main()int bN=9, 1, 4, 2, 3, 6, 5, 8, 7, i, n; printf(“/nThe original data:/n“); for(i=0; iN; i+)printf(“%4d“,bi); printf(“/n“); n=fun(b, N); printf(“/nThe num

25、ber of even: %d/n“, n); printf(“/nThe even:/n“); for(i=0; in; i+)printf(“%4d“,bi); printf(“/n“); (分数:18.00)填空项 1:_填空项 1:_填空项 1:_三、程序改错题(总题数:1,分数:18.00)41.下列给定程序中,函数 fun 的功能是:按以下递归公式求函数的值。(分数:18.00)_四、程序设计题(总题数:1,分数:24.00)42.规定输入的字符串中只包含字母和*号。请编写函数 fun,其功能是:使字符串中尾部的*号不多于 n个,若多于 n 个,则删除多余的*号;若少于或等于 n

26、个,则不做任何操作,字符串中间和前面的*号不删除。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。试题程序:#includestdio.hvoid fun(char*a, int n)main()char s81; int n; printf(“Enter a string:/n“); gets(s); printf(“Enter n:“); scanf(“%d“,n); fun(s, n); printf(“The string after deleted:/n“); puts(s); (分数:24.00)_二级

27、C 语言笔试-386 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.线性表是一个( )。A) 有限序列,可以为空 B) 有限序列,不能为空C) 无限序列,可以为空 D) 无限序列,不能为空(分数:1.00)A. B.C.D.解析:解析 线性表简称为表,是零个或多个元素的有穷序列,通常可以表示成 k0,k 1,k n-1(n1),表中所含元素的个数称为表的长度,长度为零的表称为空表。2.栈和队列的共同特点是( )。A) 都是先进先出 B) 都是先进后出C) 只允许在端点处插入和删除元素 D) 没有共同点(分数:1.00)A.B.C. D.解析

28、:解析 考查对栈和队列概念的掌握。栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表。3.如果进栈序列为 e1,e2,e3,e4,则可能的出栈序列是( )。A) e3,e1,e4,e2 B) e2,e4,e3,e1 C) e3,e4,e1,e2 D) 任意顺序(分数:1.00)A.B. C.D.解析:解析 由栈“后进先出”的特点可知:A)中 e1 不可能比 e2 先出,C)中 e1 不可能比 e2 先出,D)中栈

29、是先进后出的,所以不可能是任意顺序。B)中出栈过程如下图所示:4.面向对象程序设计中程序运行的最基本实体是( )。A) 对象 B) 类 C) 方法 D) 函数(分数:1.00)A. B.C.D.解析:解析 面向对象程序由若干个对象构成;结构化程序由数据和相应算法构成。5.下列选项中不属于软件生命周期开发阶段任务的是( )。A) 软件测试 B) 概要设计 C) 软件维护 D) 详细设计(分数:1.00)A.B.C. D.解析:解析 软件生命周期由软件定义、软件开发和软件维护三个时期组成。软件开发时期是具体设计和实现在前一时期定义的软件,它通常由下面五个阶段组成:概要设计、详细设计、编写代码、组装

30、测试和确认测试。6.数据流图用于抽象描述一个软件的逻辑模型,由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是( )。A) 控制流 B) 加工 C) 数据存储 D) 源和潭(分数:1.00)A. B.C.D.解析:解析 数据流图中的主要图形元素有加工、数据流、存储文件、源和潭。7.下列叙述中正确的是( )。A) 软件测试应该由程序开发者来完成B) 程序经调试后一般不需要再测试C) 软件维护只包括对程序代码的维护D) 以上三种说法都不对(分数:1.00)A.B.C.D. 解析:解析 因为测试的目的在于发现错误,从心理学角度讲,由程序的编写者自己进行测试是不合适的,为了达到最好的

31、测试效果,应该由独立的第三方进行测试工作,所以选项 A)错误;程序调试,修改一个错误的同时可能引入了新的错误,解决的办法是在修改了错误之后,必须进行回归测试,所以选项 B)错误;所谓软件维护,就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程,可见选项 C)也是错误的。8.Visual FoxPro 关系数据库管理系统能够实现的三种基本关系运算是( )。A) 索引、排序、查找 B) 建库、录入、排序C) 选择、投影、连接 D) 显示、统计、复制(分数:1.00)A.B.C. D.解析:解析 关系数据库管理系统能够实现的三种基本关系运算是选择(从关系中找出满足给定条件的元组的

32、操作称为选择)、投影(从关系模式中指定若干个属性组成新的关系)、连接(是关系的横向组合)。9.单个用户使用的数据视图的描述称为( )。A) 外模式 B) 概念模式 C) 内模式 D) 存储模式(分数:1.00)A. B.C.D.解析:解析 选项 A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项 B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项 C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项 D)不正确,存储模式即为内模式。10.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和( )。A) 编码设计

33、 B) 测试阶段 C) 运行阶段 D) 物理设计(分数:1.00)A.B.C.D. 解析:解析 数据库的生命周期可以分为两个阶段:一是数据库设计阶段;二是数据库实现阶段。数据库的设计阶段又分为四个子阶段:需求分析、概念设计、逻辑设计和物理设计。因此,本题的正确答案是D)。11.以下叙述中错误的是( )。A) C 语言是一种结构化程序设计语言B) 结构化程序由顺序、分支、循环三种基本结构组成C) 使用三种基本结构构成的程序只能解决简单问题D) 结构化程序设计提倡模块化的设计方法(分数:1.00)A.B.C. D.解析:解析 本题考查的知识点是结构化程序设计。结构化程序由 3 种基本结构组成:顺序

34、结构、选择结构和循环结构。已经得到证明,由 3 种基本结构组成的算法结构可以解决任何复杂的问题。故本题中选项 C)是错误的。12.下列叙述中正确的是( )。A) 每个 C 程序文件中都必须要有一个 main()函数B) 在 C 程序中 main()函数的位置是固定的C) C 程序中所有函数之间都可以相互调用,与函数所在位置无关D) 在 C 程序的函数中不能定义另一个函数(分数:1.00)A.B.C.D. 解析:解析 本题考查的知识点是函数。每一个 C 程序中都必须有且只有一个 main()函数,但一个 C 程序可以由多个程序文件组成,所以并非每个 C 程序文件中都必须要有一个 main()函数

35、,故选项 A)不正确。C 语言并未对 main()函数的位置作要求,因此选项 B)也是错误的。C 语言中,在一个函数被调用之前一定要先声明该函数,所以定义靠后的函数若在前面没有声明该函数的原型,是不能被定义靠前的函数所调用的,即函数之间的调用并非与函数所在位置无关,所以选项 C)不正确。故本题的正确答案应该为选项 D)。13.有以下程序段:char ch; int k; ch=a; k=12; printf(“%c, %d, “, ch, ch, k); printf(“k=%d/n“, k); 已知字符 a 的 ASCII 十进制代码为 97,则执行上述程序段后输出结果是( )。A) 因变量

36、类型与格式描述符的类型不匹配输出无定值B) 输出项与格式描述符个数不符,输出为零值或不定值C) a, 97, 12k=12D) a, 97, k=12(分数:1.00)A.B.C.D. 解析:解析 本题主要考查的是标准输出函数 printf。printf 函数在进行参数匹配时,并不会检查参数类型是否一一匹配,也不会检查参数个数是否一致,而是从它认为应该是第 1 个参数地址的内存位置开始,依次将内存中的内容逐个匹配给格式化字符串内所给定的各个类型。因此,前一个 printf 调用,两个 ch分别匹配给%c 和%d,而参数 k 多余,被抛弃。所以会输出“a, 97, ”(字符 a 的 ASCII

37、值为 97)。后一个printf 很正常,这里就不解释了。故应该选择 D)。14.设有定义:int a; float b; ,执行 scanf(“%2d%f“, a, b); 语句时,若从键盘输入 876 543.0回车,a 和 b 的值分别是( )。A) 876 和 543.000000 B) 87 和 6.000000C) 87 和 543.000000 D) 76 和 543.000000(分数:1.00)A.B. C.D.解析:解析 本题考查了格式输入函数 scanf()的运用。scanf()函数的一般形式为:scanf 格式控制,地址表列)。其中,“格式控制”是用双引号括起来的字符串

38、,也称“转换控制字符串”,它包括两种信息:格式说明,由“%”和格式字符组成;普通字符,即需要原样输入的字符。“地址表列”是需要接收输入数据的一系列变量的地址。本题中的“格式控制”是“%2d%f”,其中%2d的意思是要输入一个整数,但该整数最宽只占 2 个字符,而%f 是要输入一个浮点数。而题目要求输入的是 876543.0,所以 scanf()函数将 87 赋给 a,6 赋给 b。15.在执行下述程序日寸,若从键盘输入 6 和 8,则结果为( )。main() int a, b, s; scanf(“%d%d“, a, b); s=a; if(ab) s=b; s*-=s; printf(“%

39、d“, s); A) 36 B) 64 C) 48 D) 以上都不对(分数:1.00)A.B. C.D.解析:解析 本题中 a 的值为 6,b 的值为 8,最后 s 的值为 8,s*=s 等价于 s=s*s。16.下列条件语句中,功能与其他语句不同的是( )。A) if(a) printf(“%d/n“, x); else printf(“%d/n“, y); B) if(a=0) printf(“%d/n“, y); else printf(“%d/n“, x); C) if(a!=0) printf(“%d/n“, x); else printf(“%d/n“, y); D) if(a=0

40、) printf(“%d/n“, x); else printf(“%d/n“, y);(分数:1.00)A.B.C.D. 解析:解析 本题考核的知识点是 if 语句的用法。选项 A)、选项 B)和选项 C)都是在 a 的值为 0 的时候输出 y,a 不为 0 的时候输出 x,而选项 D)是在 a 为 0 的时候输出 x,a 不为 0 的时候输出 y。所以,4 个选项中选项 D)符合题意。17.有以下程序:main() int k=5, n=0; doswitch (k) case 1:case 3:n+=1; k-; break; default: n=0; k-; case 2:case

41、4:n+=2; k-; break; printf(“%d“, n); while (k0 n5); 程序运行后的输出结果是( )。A) 235 B) 0235 C) 02356 D) 2356(分数:1.00)A. B.C.D.解析:解析 本题主要考查的知识点是 switch 语句。因为变量的初始值分别为“k=5, n=0”,所以程序第一次进入循环时,执行 default 语句,这时 k=4,执行“case 4:”这个分支,结果是“n=2, k=3”,打印出 2;程序然后进行第二次循环,这时“n=2, k=3”,执行“case 3:”这个分支,结果是“n=3, k=2”,打印出 3;程序进行

42、第三次循环,这时“n=3, k=2”,执行“case 2:case 4:”这两个分支,结果是“n=5, k=1”,打印出 5,这时因为 n=5 不满足 n5 的循环条件,因此退出循环,程序运行结束,故输出结果为 235。18.下面的 for 语句:for(int x=0, y=10; (y0)(x4); x+, y-) ; 则下面叙述中正确的是( )。A) 是无限循环 B) 循环次数不定C) 循环执行 4 次 D) 循环执行三次(分数:1.00)A.B.C. D.解析:解析 本题考查的知识点是 for 循环语句的应用。本题首先要看出 for 循环条件的基本形式(; ; ),当循环执行 4 次时

43、,x+使 x 变为 4,此时不满足判断条件,结束循环。故 C)为正确答案。19.下列选项中 C 语言中不合法的字符串常量的是( )。A) “/1“ B) 2y1 C) “/n/n“ D) “ABCD/x6d/(分数:1.00)A.B. C.D.解析:解析 字符串常量是由双引号括起来的一串字符,其中的双引号不可缺少。由此可知,选项 A)、C)、D)都是合法的字符串常量,而选项 B)是一个字符常量。20.已知字符A的 ASCII 码值是 65,字符变量 c1 的值是A,c2 的值是D。执行语句 printf(“%d, %d“, c1, c2-2); 后,输出结果是( )。A) A, B B) A

44、68 C) 65, 66 D) 65, 68(分数:1.00)A.B.C. D.解析:解析 在 C 语言中,字符型数据在内存中的存储形式是 ASCII 码值。当需要以整型格式输出字符时,输出的也是 ASCII 码值。字符A和D的 ASCII 码值分别为 65 和 68。21.以下程序中函数 f 的功能是:当 flag 为 1 时,进行由小到大排序;当 flag 为 0 时,进行由大到小排序。#include stdio.hvoid f(int b, int n, int flag) inti, j, t; for (i=0; in-1; i+) for (j=i+1; jn; j+) if(f

45、lag?bibj:bibj) t=bi; bi=bj; bj=t; main() (int a10=5, 4, 3, 2, 1, 6, 7, 8, 9, 10, i; f(a2, 5, 0); f(a, 5, 1); for (i=0; i10; i+) printf(“%d, “, ai); ) 程序运行后的输出结果是()。A) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, B) 3, 4, 5, 6, 7, 2, 1, 8, 9, 10, C) 5, 4, 3, 2, 1, 6, 7, 8, 9, 10, D) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,(

46、分数:1.00)A.B. C.D.解析:解析 题目中先后两次调用了函数 f()。第 1 次,使用参数“a2, 5, 0”表示从数组 a 下标为 2 的元素开始,对其后的 5 个元素进行由大到小排序。所以排序结果是5, 4, 7, 6, 3, 2, 1, 8, 9, 10。第 2 次,使用参数“a, 5, 1”表示从数组 a 的首元素开始,对其后 5 个元素进行由小到大排序。所以排序结果是3, 4, 5, 6, 7, 2, 1, 8, 9, 10。故本题应该选择 B)。22.若有以下函数首部:int fun(double x10, int *n) 则下面针对此函数的函数声明语句中正确的是( )。

47、A) int fun(double x, int *n); B) int fun(double, int); C) int fun(double *x, int n); D) int fun(double *, int*);(分数:1.00)A.B.C.D. 解析:解析 本题考查的是函数的声明。函数声明的一般形式为:函数类型函数名(参数类型 1, 参数名 1, 参数类型 2, 参数名 2.); 其中,参数名也可以省略。本题中的 fun 函数有两个参数,一个类型是 double 型一维数组,另一个是int 型指针。而在 C 语言中,一维数组用做函数参数和该数组元素的指针类型是等价的。所以本题的正确答案是选项 D)。23.以下程序中调用 scanf 函数给变量 a 输入数值的方法是错误的,其错误原因是( )。main() int*p, *q, a, b; p=a; printf(“input a:“); scanf(“%d“, *p); A) *p 表示的是指针变量

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

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

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