【计算机类职业资格】二级C语言分类模拟题569及答案解析.doc

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

1、二级 C 语言分类模拟题 569 及答案解析(总分:43.00,做题时间:90 分钟)一、选择题(总题数:30,分数:43.00)1.若有正确定义语句 double x=5.16894; 语句 printf(“%f/n“, (int)(x*1000+0.5)/(double)1000);的输出结果是_。(分数:2.50)A.输出格式说明与输出顶不匹配,输出无定值B.5.170000C.5.168000D.5.1690002.将 E-R 图转换到关系模式时,实体与联系都可以表示成_。(分数:2.50)A.属性B.关系C.记录D码3.若有定义:“double a=22;int i=0,k=18;”

2、,则不符合 C 语言规定的赋值语句是 _ 。(分数:1.00)A.a=a+,i+;B.i=(a+k)=(i+k);C.i=a%11;D.i=!a;4.有以下程序: # include stdio.h # include string.h main() char a510=“china“,“beijing“,“you“,“tiananmen“,“welcome“; int i,j; char t10; for(i=0;i4;i+) for(j=i+1;j5;j+) if(strcmp(ai,aj0) strcpy(t,ai); strcpy(ai,aj);strcpy(aj,t); puts(a

3、3); 程序运行后的输出结果是_。(分数:1.00)A.beijingB.chinaC.welcomeD.tiananmen5.已定义以下函数 int fun(int *P) return *P; fun 函数返回值是_。(分数:1.00)A.一个整数B.不确定的值C.形参 p 中存放的值D.形参 p 的地址值6.若有下列定义,则_是对 a 数组元素地址的正确引用。 int a5, *p=a;(分数:2.50)A.p+5B.*a+1C. int i,a6=1,2,3,4,5,6; f=fopen(“d2.dat“,“w+“); for(i=0;i6;i+)fprintf(fp,“%d/n“,a

4、i); rewind(fp); for(i=0;i6;i+)fscanf(fp,“%d“,a5-i); fclose(fp); for(i=0;i6;i+)printf(“%d,“,ai); 程序运行后的输出结果是_。(分数:1.00)A.1,2,3,4,5,6,B.6,5,4,3,2,1,C.4,5,6,1,2,3,D.1,2,3,3,2,1,8.有以下程序 #includestdio.h main() int a5=2,4,6,8,10,*p,*k; p=a;k=p; printf(“%d“,*(p+); printf(“%d/n“,*k); 程序运行后的输出结果是_。(分数:2.00)A

5、.2 4B.4 4C.2 2D.4 69.以下程序中函数 sort()的功能是对数组 a 中的数据进行由大到小的排序。 #include stdio.h void sort (int a, int n) int i, j, t; for(i=0; in-1; i+) for(j=i+1; jn; j+) if(aiaj) t=ai; ai=aj; aj=t; main() int aa10=1,2,3,4,5,6,7,8,9,10, i; sort( for(i=0; i10; i+) printf(“% d,“, aai); printf(“/n“); 程序运行后的输出结果是_。(分数:1.

6、00)A.1,2,3,4,5,6,7,8,9,10,B.10,9,8,7,6,5,4,3,2,1,C.1,2,3,8,7,6,5,4,9,10,D.1,2,10,9,8,7,6,5,4,3,10.下面程序的运行结果是_。 for(i=3;i7;i+)printf(i%2)?(“*%d/n“):(“#%d/n“),i); A B C D (分数:2.50)A.B.C.D.11.下列关于 C 语言文件的叙述中正确的是_。(分数:1.00)A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件D.文

7、件由字符序列组成,其类型只能是文本文件12.若有以下程序: #include stdio.h main( ) int a=0,b=0,c=0 c= (a+ = + +b, b+ =4); printf(“%d,%d,% d/n“,a,b,c); 则程序的输出结果是_。(分数:2.00)A.1,5,1B.1,5,5C.-1,4,4D.-1,4,-113.以下叙述中正确的是_。(分数:1.00)A.结构体类型中各个成分的类型必须是一致的B.结构体类型中的成分只能是 C 语言中预先定义的基本数据类型C.在定义结构体类型时,编译程序就为它分配了内存空间D.一个结构体类型可以由多个称为成员(或域)的成分

8、组成14.设有以下程序段: float a8=1.0,2.0; int b1=0; char c=“A“,“B“; char d=“1“; 以下叙述正确的是_。(分数:1.00)A.只有变量 c 的定义是合法的B.只有变量 a,b,c 的定义是完全合法的C.所有变量的定义都是完全合法的D.只有变量 a,b 的定义是完全合法的15.有如下程序: #includestdio.h struct pair int first,second; ; struct pair get_min_max(int*array,int len) int i; struct pair res; res.first=ar

9、ray0; res.second=array0; for(i=1;ilen;i+) if(arrayires.first) res.first=arrayi; if(arrayires.second) res.second=arrayi; return res; main() int array5=9,1,3,4; struet pair min_max=get_min_max(array,5) printf(“min=%d,max=%din“,min_max.first,min_max.second); 程序运行后的输出结果是_。(分数:1.00)A.min=1,max=9B.min=0,m

10、ax=9C.min=1,max=4D.min=0,max=416.以下叙述错误的是_。(分数:1.00)A.在进行模块化程序设计的时候,应首先完成每个模块的编写调试,再集中考虑主程序中的算法B.同一程序各模块可由一组人员同时进行编写调试,可提高编写程序的效率C.模块化的程序设计是采用自顶向下、逐步细化的原则D.程序的每个模块都可通过三种基本结构实现17.以下不合法的字符常量是_。(分数:2.00)A.“/“B.“/“C.“/018“D.“/xcc“18.以下函数 findmax 拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。 #define MIN-2147483

11、647 int findmax(int x, int n) int i, max; for(i=0; in; i+) max=MIN; if(maxxi)max=xi; return max; 造成错误的原因是_。(分数:1.00)A.定义语句“int i, max;”中 max 未赋初值B.赋值语句“max=MIN;”中,不应给 max 赋 MIN 值C.语句“if(maxxi)max=xi;”中判断条件设置错误D.赋值语句“max=MIN;”放错了位置19.有以下程序 #include stdio.h int fun(int x,int y) if(x!=y) return(x+y)/2)

12、; else return(x); main() int a=4,b=5,c=6; printf(“%d/n“,fun(2*a,fun(b,c); 程序运行后的输出结果是_。(分数:1.00)A.6B.3C.8D.1220.若有表达式(w)?(-x):(+y),则其中与 w 等价的表达式是_。(分数:2.00)A.w=1B.w=0C.w!=1D.w!=021.某二叉树的中序序列为 BDCA,后序序列为 DCBA,则前序序列为_。(分数:1.00)A.DCBAB.BDCAC.ABCDD.BADC22.若有定义:int x,*pb;则正确的赋值表达式是(分数:1.00)A.pb= x0=0; x1

13、=“/0“; x2=“0“; printf(“%d%d/n“, sizeof(x), strlen(x); 程序运行后的输出结果是_。(分数:1.00)A.6 1B.7 0C.6 3D.7 124.下列定义变量的语句中错误的是_。(分数:1.00)A.int _int;B.double int_;C.char For;D.float US$;25.若有以下程序: #include stdio.h char f(char x) return x*x%10+ “0“; main( ) char a; int b=0; for(a=0; a5; a+ =1) b=f(a); putchar(b);

14、则程序的输出结果是_。(分数:2.00)A.014916B.01234C.01496D.0000026.以下叙述中正确的是_。(分数:1.00)A.如果 p 是指针变量,则int*y;*pt; int a=1,2,b=3,4; struct st c2=10,a,20,b; pt=c; 以下选项中表达式值为 11 的是_。(分数:2.00)A.+pt-xB.pt-xC.*pt-yD.(pt+)-x30.有以下程序 #include stdio.h main() unsigned char a=2,b=4,c=5,d; d=a|b; d printf(“%d/n“,d); 程序运行后的输出结果是

15、_。(分数:1.00)A.4B.3C.5D.6二级 C 语言分类模拟题 569 答案解析(总分:43.00,做题时间:90 分钟)一、选择题(总题数:30,分数:43.00)1.若有正确定义语句 double x=5.16894; 语句 printf(“%f/n“, (int)(x*1000+0.5)/(double)1000);的输出结果是_。(分数:2.50)A.输出格式说明与输出顶不匹配,输出无定值B.5.170000C.5.168000D.5.169000 解析:解析 (x*1000+0.5)-x 移动 3 位小数,加 0.5,也就是小数第 4 位加 5,若这位大于等于 5,则进 1

16、到个位。5.16894*1000-5168.94+0.5-5169.44 接下来:(int)(x*1000+0.5)取整变5169,5169/(double)1000)-5.169。所以 printf(”%f/n”,5.169)结果是 5.16900。因此正确答案为D。2.将 E-R 图转换到关系模式时,实体与联系都可以表示成_。(分数:2.50)A.属性B.关系 C.记录D码解析:解析 E-R 图由实体、实体的属性和实体之间的联系 3 个要素组成,关系模型的逻辑结构是一组关系模式的集合,将 E-R 图转换为关系模型:将实体、实体的属性和实体之间的联系转化为关系模式。如下表所示。 E-R 模型

17、与关系间的比较表 E-R 模型 关系 E-R 模型 关系 属性 属性 实体集 关系 实体 元组 联系 关系 3.若有定义:“double a=22;int i=0,k=18;”,则不符合 C 语言规定的赋值语句是 _ 。(分数:1.00)A.a=a+,i+;B.i=(a+k)=(i+k);C.i=a%11; D.i=!a;解析:解析 运算符%要求两个运算对象都为整型。选项 C 中 a 为 double 型,不符合要求。4.有以下程序: # include stdio.h # include string.h main() char a510=“china“,“beijing“,“you“,“t

18、iananmen“,“welcome“; int i,j; char t10; for(i=0;i4;i+) for(j=i+1;j5;j+) if(strcmp(ai,aj0) strcpy(t,ai); strcpy(ai,aj);strcpy(aj,t); puts(a3); 程序运行后的输出结果是_。(分数:1.00)A.beijingB.chinaC.welcome D.tiananmen解析:解析 此题涉及数组,字符串的比较和字符串的复制,因为 for 循环中控制数组中的 i 和 j,即控制了其中的数组中的元素,而 strcmp 是比较字符串的大小,如果 strcmp(ai,aj)

19、0,则将字符串进行复制,所以答案为 C。5.已定义以下函数 int fun(int *P) return *P; fun 函数返回值是_。(分数:1.00)A.一个整数 B.不确定的值C.形参 p 中存放的值D.形参 p 的地址值解析:解析 本题考查的是指针的概念。在 C 语言中,指针是一种特殊的变量,它存放的值是一个内存地址。所以一个指针变量涉及三个值:指针变量所指内容的值、指针变量中存放的值、指针变量的地址值。它们可以分别用表达式*p、p、(分数:2.50)A.p+5B.*a+1C. int i,a6=1,2,3,4,5,6; f=fopen(“d2.dat“,“w+“); for(i=0

20、;i6;i+)fprintf(fp,“%d/n“,ai); rewind(fp); for(i=0;i6;i+)fscanf(fp,“%d“,a5-i); fclose(fp); for(i=0;i6;i+)printf(“%d,“,ai); 程序运行后的输出结果是_。(分数:1.00)A.1,2,3,4,5,6,B.6,5,4,3,2,1, C.4,5,6,1,2,3,D.1,2,3,3,2,1,解析:解析 本题考查文件操作函数 fprintf 和 rewind 函数。rewind 函数将文件内部的位置指针重新指向一个流(数据流/文件)的开头,程序首先是将数组 a 的六个数写入 d2 文件中

21、,然后又将 a 数组从后往前覆盖到 d2 中的内容,所以结果为“6,5,4,3,2,1,”,选项 B 正确。8.有以下程序 #includestdio.h main() int a5=2,4,6,8,10,*p,*k; p=a;k=p; printf(“%d“,*(p+); printf(“%d/n“,*k); 程序运行后的输出结果是_。(分数:2.00)A.2 4 B.4 4C.2 2D.4 6解析:解析 *(p+),表达式为 a0的值,为 2,执行后 p 指向 a1,*k 为*p 实际为 a1,输出 4,所以选择 A。9.以下程序中函数 sort()的功能是对数组 a 中的数据进行由大到小

22、的排序。 #include stdio.h void sort (int a, int n) int i, j, t; for(i=0; in-1; i+) for(j=i+1; jn; j+) if(aiaj) t=ai; ai=aj; aj=t; main() int aa10=1,2,3,4,5,6,7,8,9,10, i; sort( for(i=0; i10; i+) printf(“% d,“, aai); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.1,2,3,4,5,6,7,8,9,10,B.10,9,8,7,6,5,4,3,2,1,C.1,2,

23、3,8,7,6,5,4,9,10, D.1,2,10,9,8,7,6,5,4,3,解析:10.下面程序的运行结果是_。 for(i=3;i7;i+)printf(i%2)?(“*%d/n“):(“#%d/n“),i); A B C D (分数:2.50)A.B.C.D. 解析:11.下列关于 C 语言文件的叙述中正确的是_。(分数:1.00)A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件 D.文件由字符序列组成,其类型只能是文本文件解析:解析 本题考查文件的概念,文件是由数据序列组成,

24、可以构成二进制文件或文本文件,所以答案为 C 选项。12.若有以下程序: #include stdio.h main( ) int a=0,b=0,c=0 c= (a+ = + +b, b+ =4); printf(“%d,%d,% d/n“,a,b,c); 则程序的输出结果是_。(分数:2.00)A.1,5,1B.1,5,5 C.-1,4,4D.-1,4,-1解析:解析 逗号运算符的结合性从左到右,因此逗号表达式将从左到右进行计算。且逗号运算符的优先级最低。先计算 a+=+b,结果 a 为 1,b 为 1,然后计算 b+=4,b 的值为 5。逗号表达式的值为其中最后一个表达式的值,所以将 5

25、 赋给变量 c,即 a 为 1,b 为 5,c 为 5。所以选择 B。13.以下叙述中正确的是_。(分数:1.00)A.结构体类型中各个成分的类型必须是一致的B.结构体类型中的成分只能是 C 语言中预先定义的基本数据类型C.在定义结构体类型时,编译程序就为它分配了内存空间D.一个结构体类型可以由多个称为成员(或域)的成分组成 解析:解析 本题考查结构体类型。结构体中各个成分的类型可以是不一样的,所以 A 选项错误。结构体类型中的成分可以是结构体,所以 B 选项错误。定义结构体时编译程序并不会给它分配内存空间,所以C 选项错误。14.设有以下程序段: float a8=1.0,2.0; int

26、b1=0; char c=“A“,“B“; char d=“1“; 以下叙述正确的是_。(分数:1.00)A.只有变量 c 的定义是合法的B.只有变量 a,b,c 的定义是完全合法的C.所有变量的定义都是完全合法的D.只有变量 a,b 的定义是完全合法的 解析:解析 float a8=1.0,2.0;定义了一个包含 8 个 float 型元素的数组,并初始化了数组的前 2项,其他项是随机数。int b1=0,定义了只有一个 int 型元素的数组,并初始化为 0。char c=“A“,“B“;定义一个 char 型数组,大小有初始化元素决定,但初始化值是字符串,类型不兼容,编译出错。char d

27、=“1“;定义一个 char 型变量,但是初始化赋值字符串,类型不兼容,编译出错。因此只有数组a,b 的定义和初始化正确。故答案为 D 选项。15.有如下程序: #includestdio.h struct pair int first,second; ; struct pair get_min_max(int*array,int len) int i; struct pair res; res.first=array0; res.second=array0; for(i=1;ilen;i+) if(arrayires.first) res.first=arrayi; if(arrayires

28、.second) res.second=arrayi; return res; main() int array5=9,1,3,4; struet pair min_max=get_min_max(array,5) printf(“min=%d,max=%din“,min_max.first,min_max.second); 程序运行后的输出结果是_。(分数:1.00)A.min=1,max=9B.min=0,max=9 C.min=1,max=4D.min=0,max=4解析:解析 在对数组进行初始化时,如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,那么 c 语言将自动对余下的元

29、素赋初值 0,则 array5=9,1,3,4,0。程序的执行过程为:调用函数get_min_max(array,5),将数组 array 的首地址传入函数,定义结构体变量 res,并为其成员赋值。for循环查找数组 array 的最小值 0,将其赋值给 res 的成员 firsf,查找数组最大值 9,并将其赋值给 res的成员 second。最后返回结构体变量 res,则 min_max=res。输出 min_max.first=0,min_max.second=9。16.以下叙述错误的是_。(分数:1.00)A.在进行模块化程序设计的时候,应首先完成每个模块的编写调试,再集中考虑主程序中的

30、算法 B.同一程序各模块可由一组人员同时进行编写调试,可提高编写程序的效率C.模块化的程序设计是采用自顶向下、逐步细化的原则D.程序的每个模块都可通过三种基本结构实现解析:解析 进行模块化设计时,首先设计框架,并定义和调试好各个模块之间的输入输出关系,完成各个模块的编写调试后再集中编译,A 项错误;各个模块可以由不同人员同时进行编写调试,提高编写程序的效率,B 项正确;模块化的程序设计采用自顶向下、逐步细化的原则,C 项正确;结构化程序使用三种基本结构可以解决任何复杂的问题,D 项叙述正确。17.以下不合法的字符常量是_。(分数:2.00)A.“/“B.“/“C.“/018“ D.“/xcc“

31、解析:解析 转义字符中,八进制的表示形式为/ddd,但是八进制中不能包含数字 8,所以 C 选项不合法。18.以下函数 findmax 拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。 #define MIN-2147483647 int findmax(int x, int n) int i, max; for(i=0; in; i+) max=MIN; if(maxxi)max=xi; return max; 造成错误的原因是_。(分数:1.00)A.定义语句“int i, max;”中 max 未赋初值B.赋值语句“max=MIN;”中,不应给 max 赋 M

32、IN 值C.语句“if(maxxi)max=xi;”中判断条件设置错误D.赋值语句“max=MIN;”放错了位置 解析:解析 “max=MIN;”语句应放在 for 循环之前,否则每次循环时都重新赋值,值没有变化。19.有以下程序 #include stdio.h int fun(int x,int y) if(x!=y) return(x+y)/2); else return(x); main() int a=4,b=5,c=6; printf(“%d/n“,fun(2*a,fun(b,c); 程序运行后的输出结果是_。(分数:1.00)A.6 B.3C.8D.12解析:解析 本题中第一次调

33、用为“fun(8,fun(5,6)”,因为“fun(5,6)”返回值为 5,所以第二次调用为“fun(8,5)=6”,因此选择 A。20.若有表达式(w)?(-x):(+y),则其中与 w 等价的表达式是_。(分数:2.00)A.w=1B.w=0C.w!=1D.w!=0 解析:解析 条件运算符组成条件表达式的一般形式为:表达式 1?表达式 2:表达式 3。其求值规则为:如果表达式 1 的值为真,则以表达式 2 的值作为条件表达式的值,否则以表达式 3 的值作为条件表达式的值。本题中需要获得表达式 w 的逻辑值,即 w 是否为 0,不为 0 则为“真”,为 0 则为“假”。因此正确答案为 D。2

34、1.某二叉树的中序序列为 BDCA,后序序列为 DCBA,则前序序列为_。(分数:1.00)A.DCBAB.BDCAC.ABCD D.BADC解析:解析 二叉树遍历可以分为 3 种:前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。本题中中序序列为 BDCA,后序序列为 DCBA,可知 A 为根节点,BDC 为左侧节点,C 是 B 右子节点,D 是 C 右子节点,故前序序列为 ABCD,C 选项正确。22.若有定义:int x,*pb;则正确的赋值表达式是(分数:1.00)A.pb=

35、x0=0; x1=“/0“; x2=“0“; printf(“%d%d/n“, sizeof(x), strlen(x); 程序运行后的输出结果是_。(分数:1.00)A.6 1B.7 0 C.6 3D.7 1解析:解析 字符数组长度为 7,因为 C 语言中系统会在字符串末尾加入一个字符“/0“,而 x0=0 的作用是将一个整数 0 存入字符数组中,系统会自动将整型数 0 转换成字符“/0“。所以输出为 7,0。24.下列定义变量的语句中错误的是_。(分数:1.00)A.int _int;B.double int_;C.char For;D.float US$; 解析:评析:C 语言中用来标识

36、变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符,C 语言规定标识符能由字母、数字和下划线三种字符组成,且第个字符必须为字母或下划线。选项 D 中含有“$”,故不符合标识符的定义。25.若有以下程序: #include stdio.h char f(char x) return x*x%10+ “0“; main( ) char a; int b=0; for(a=0; a5; a+ =1) b=f(a); putchar(b); 则程序的输出结果是_。(分数:2.00)A.014916B.01234C.01496 D.00000解析:解析 该题目中 x*x%10 表

37、示 x 和 x 相乘后,结果再对 10 求余操作。主函数中通过 for 语句使变量 a 从 0 到 4 进行取值;当 a=0 时,调用函数 f 后,返回值为 0 赋给 b,并且进行字符输出;当 a=1 时,返回值为 1 赋给 b,并且进行字符输出;当 a=2 时,返回值为 4 赋给 b,并且进行字符输出;当 a=3 时,返回值为 9 赋给 b,并且进行字符输出;当 a=4 时,返回值为 6 赋给 b,并且进行字符输出。因此 C 选项正确。26.以下叙述中正确的是_。(分数:1.00)A.如果 p 是指针变量,则int*y;*pt; int a=1,2,b=3,4; struct st c2=1

38、0,a,20,b; pt=c; 以下选项中表达式值为 11 的是_。(分数:2.00)A.+pt-x B.pt-xC.*pt-yD.(pt+)-x解析:解析 本题考查结构体数组初始化以及结构体变量的引用。题目中定义了一个结构体数组 c 并初始化,指针 pt 指向 c 的第一个元素,那么 pt-x 为 10,+pt-x 为 11,*pt-y 为 1,(pt+)-x 为20,所以选择 A 选项。30.有以下程序 #include stdio.h main() unsigned char a=2,b=4,c=5,d; d=a|b; d printf(“%d/n“,d); 程序运行后的输出结果是_。(分数:1.00)A.4 B.3C.5D.6解析:解析 “&”按位与,如果两个相应的二进制位都为 1,则该位的结果值为 1,否则为 0。“|”按位或,即两个相应的二进制位中只要有一个为 1,该位的结果值为 1。2 的二进制为 00000010,4 的二进制为 00000100,因此做或运算结果为 00000110,该数与 5 即 00000101 做与运算,结果为 00000100,即4,选项 A 正确。

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

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

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