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

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

1、二级 C语言笔试-416 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:60.00)1.算法的空间复杂度是指( )。A) 算法程序的长度B) 算法程序中的指令条数C) 算法程序所占的存储空间D) 算法执行过程中所需要的存储空间(分数:2.00)A.B.C.D.2.以下选项中可以作为 C语言中合法整数的是 _。A) 10110B B) 0386 C) 0Xffa D) x2a2(分数:2.00)A.B.C.D.3.下列叙述中正确的是_。A) 线性表是线性结构 B) 栈与队列是非线性结构C) 线性链表是非线性结构 D) 二叉树是线性结构(分数:2.00)A.

2、B.C.D.4.对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。A) 125 B) n/2 C) n D) n+1(分数:2.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.数据库设计中,用 E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的( )。A需求分析阶段 B逻辑设计阶段C概念设计阶段 D物理设计阶段(

3、分数:1.00)A.B.C.D.8.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:2.00)A.B.C.D.9.将 E-R图转换到关系模式时,实体与实体间的联系可以表示成( )A) 属性 B) 关系 C) 键 D) 域(分数:2.00)A.B.C.D.10.有三个关系 R、S 和 T如下: * 则由关系 R和 S得到关系 T的操作是 A) 自然连接 B) 交 C) 投影 D) 并(分数:2.00)A.B.C.D.11.以下不正确的叙述是A) 在 C程序中,逗号运算符的优先级最低B) 在 C程序中,APH 和 aph是两个不同的变量C) 若 a和 b类型相同,在计算了赋值表达式 a=b

4、后,b 中的值将放入 a中,而 b中的值不变D) 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值(分数:1.00)A.B.C.D.12.下列标识符不是关键字的是( )。A) break B) char C) Switch D) return(分数:1.00)A.B.C.D.13.下列合法的声明语句是( )。A) int_abc50; B) double int3+5e2.5;C) long do1L; D) float 3_asd3e-3;(分数:1.00)A.B.C.D.14.若有下列定义和语句:int u=011,v=0x11,w=11;printf(“%o

5、,%x,%d/n:,u,v,w);则输出结果是( )。A9,17,11 B9,11,11C11,11,11 D11,17,11(分数:1.00)A.B.C.D.15.以下叙述中错误的是_。(A) C语句必须以分号结束(B) 复合语句在语法上被看作一条语句(C) 空语句出现在任何位置都不会影响程序运行(D) 赋值表达式末尾加分号就构成赋值语句(分数:1.00)A.B.C.D.16.可在 C程序中用作用户标识符的一组标识符是( )。 A) void define WORD B) as_b3 _123 If C) For -abc case D) 2c DO SIG(分数:1.00)A.B.C.D.

6、17.以下选项中不能作为合法常量的是( )。A) 1.234e04 B) 1.234e0.4 C) 1.234e+4 D) 1.234e0(分数:1.00)A.B.C.D.18.有下列程序: main() int m,n,p; scanf(“m=%dn=%dp=%d“,则下列语句:printf(“x=%5.2f“,x);输出的结果是( )。A) x=123.46 B) 123.4567 C) x=123.4567 D) 123.46(分数:2.00)A.B.C.D.22.有以下程序#includestdio.hmain()int c=0,k;for(k=1;k3;k+)switch(k)def

7、ault:c+=k;case 2:c+;break;case 4:c+=2;break;printf(“%d/n“,c);程序运行后的输出结果是A) 3 B) 5 a) 7 D) 9(分数:1.00)A.B.C.D.23.若执行下列的程序时,从键盘上输入 1和 2,则输出结果是( )。#includestdio.hmain()int a,b,s;scanf(“%d%d“,s=a;if(ab) s=b;S=S*S,printf(“%d/n“,s);A) 1 B) 4 C) 2 D) 9(分数:1.00)A.B.C.D.24.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序

8、段是A) n=0; while( ch=getchar()!=/n) n+;B) n=0; while( getchar()! =/n) n+;C) for( n=0; getehar()!=/n; n+);D) n=0; for( ch=getchar(); ch!=/n; n+);(分数:2.00)A.B.C.D.25.若有以下调用语句,则不正确的 fun函数的首部是main( )int a50,n;fun(n, B) int x23=1,2,3,4,5,6;C) int x 3=1,2,3,4,5,6; D) int x23=1,2,3,4,5,6;(分数:2.00)A.B.C.D.29

9、.有下列程序:#includestdio.hvoid fun(char*s)while(*s)if(*s%2=0)printf(“%c“,*s);s+;main()char a=“good“);fun(a);printf(“/n“);注意:字母 a的 ASCII码值为 97,程序运行后的输出结果是( )。Ad Bgo Cgod Dgood(分数:1.00)A.B.C.D.30.有下列程序:main()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);程序执行后的输出结果是( )。A45 B20 C

10、25 D36(分数:1.00)A.B.C.D.31.若有定义:char *st=“how are you“;,下列程序段中正确的是A) chara11;*p;strcpy(p=a+1,int y;v1;A) example.x=10 B) example v2.x=10C) example.x=10 D) struct example v2=10;(分数:2.00)A.B.C.D.34.若有说明:int a4=0,0;则下面不正确的叙述是( )。A) 数组 a的每个元素都可得到初值 0B) 二维数组 a的第一维大小为 1C) 当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大

11、小D) 只有元素 a00和 a01可得到初值,其余元素均得不到确定的初值(分数:1.00)A.B.C.D.35.有以下程序#includestdio.hvoid fun(int a, int b)int t;t=a; a=b;int c10=1,2,3,4,5,6,7,8,9,0,i;for(i=0;i10;i+=2) fun(ci,ci+1);for(i=0;i10;i+) printf(“%d,“,ci);printf(“/n“);程序的运行结果是_。A) 1,2,3,4,5,6.7,8,9,0, B) 2,1.4.3.6,5.8,7,0,9,C) 0,9,8,7,6,5,4,3,2,1,

12、 D) 0,1,2,3,4,5,6,7,8,9,(分数:2.00)A.B.C.D.36.在 C语言中引用数组元素时,其数组下标的数据类型只能是( )。A) 整型常量 B) 整型表达式C) 整型常量或整型表达式 D) 任何类型的表达式(分数:1.00)A.B.C.D.37.下列程序执行的输出结果是( )。#inClUdestdio.hmain()char a24;strcpy(a,“are“);strcpy(a1,“you“);a03=for(i=0;in/2;i+)t=ai; ai=an-1 -i;an-1-i =t;main()int b10=1,2,3,4,5,6,7,8,9,10;int

13、 i,s=0;reverse(b,8);for(i=6;i10;i+)s+=bi;printf(“%d/n“,s);A) 22 B) 10 C) 34 D) 30(分数:2.00)A.B.C.D.二、填空题(总题数:15,分数:40.00)41.测试的目的是暴露错误,评价程序的可靠性;而U /U的目的是发现错误的位置并改正错误。(分数:2.00)填空项 1:_42.结构化程序设计的 3种基本结构分别是顺序、选择和 1。(分数:2.00)填空项 1:_43.设二叉树如下:(分数:2.00)填空项 1:_44.在面向对象的方法中, 1 描述的是具有相似属性与操作的一组对象。(分数:2.00)填空项

14、 1:_45.下列程序的运行结果是_。#includestdio.hmain()int a,b,c,n;a=2;b=0;c=1;n=1;while(n=3)c=c*a;b=b+c;+n;printf(“b=%d“,b);(分数:2.00)填空项 1:_46.在 C语言中,while 和 dowhile循环的主要区别是 1 的循环至少被执行一次。(分数:2.00)填空项 1:_47.定义 int a=5,b;,则执行表达式 b=+a*-a之后,变量 b的值为_。(分数:2.00)填空项 1:_48.以下程序运行后的输出结果是_。main()int x,a=1,b=2,c=3,d=4;x=(ab)

15、? a:b;x=(xc)? x:c;x=(dx)? x:d;pfintf(“%d/n“,x);(分数:2.00)填空项 1:_49.下列程序的运行结果是U /U。#include stdio.hmain()union EXAMPLEstructint x; int y; in;int a;int b;e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(“%d,%d/n“,e.in.x,e.in.y);(分数:2.00)填空项 1:_50./13在内存中占 1个字节,“/12“在内存中占 1 个字节。(分数:2.00)填空项 1:_51.以下程序

16、的输出结果是_。float fun(int x,int y)return(x+y);main()int a=2,b=5,c=8;printf(“%3.Of/n“,fun(int)fun(a+c,b),a-c);(分数:2.00)填空项 1:_52.下述函数统计字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。int word(char*s)int num=0,flag=0;while(*s)if(U /U=“) flag=0;else ifU /Uflag=1;num+returnU /U;(分数:6.00)填空项 1:_53.下列程序中,fun( )函数的功能是计算 x2-2x+6

17、,主函数中将调用 fun( )函数计算。y1=(x+8)2-2(x+8)+6y2=sin2(x)-2sin(x)+6请填空#include “math.h“double fun(double x)return(x*x-2*x+6);)main()double x,y1,y2;printf(“enter x:“);scanf(“%1f“,for(i=0;i2;i+)ni=0;for(i=0;i2;i+)for(j=0;j2;j+)nj=ni+1;printf(“%d/n“,n1);(分数:2.00)填空项 1:_二级 C语言笔试-416 答案解析(总分:100.00,做题时间:90 分钟)一、选

18、择题(总题数:40,分数:60.00)1.算法的空间复杂度是指( )。A) 算法程序的长度B) 算法程序中的指令条数C) 算法程序所占的存储空间D) 算法执行过程中所需要的存储空间(分数:2.00)A.B.C.D. 解析:解析 一个算法的空间复杂度,一般是指执行这个算法所需的存储空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间及算法执行过程中所需要的额外空间。2.以下选项中可以作为 C语言中合法整数的是 _。A) 10110B B) 0386 C) 0Xffa D) x2a2(分数:2.00)A.B.C. D.解析:解析 C 语言中整型常量有 3种表示形式

19、:十进制、八进制和十六进制。选项 A是二进制表示,错误;八进制的数字是 0、1、2、3、4、5、6、7,选项 B错误;十六进制整数常量用 0X开头,选项 D错误。3.下列叙述中正确的是_。A) 线性表是线性结构 B) 栈与队列是非线性结构C) 线性链表是非线性结构 D) 二叉树是线性结构(分数:2.00)A. B.C.D.解析:评析 一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。4.对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。A) 125 B) n/2 C) n D) n+1(分数:2.00)A.B.C

20、. D.解析:解析 对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。5.简单的交换排序方法是( )。A) 快速排序 B) 选择排序C) 堆排序 D) 冒泡排序(分数:1.00)A.B.C.D. 解析:解析所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。6.在计算机中

21、,算法是指( )。A) 查询方法 B) 加工方法C) 解题方案的准确而完整的描述 D) 排序方法(分数:1.00)A.B.C. D.解析:解析 计算机算法是指解题方案的准确而完整的描述,它具有的基本特征有:可行性、确定性、有穷性和拥有足够的情报。7.数据库设计中,用 E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的( )。A需求分析阶段 B逻辑设计阶段C概念设计阶段 D物理设计阶段(分数:1.00)A.B.C. D.解析:解析 E-R(Entity-Relationship)图为实体一联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。8.有下列二叉树

22、,对此二叉树前序遍历的结果为( )。(分数:2.00)A.B.C.D. 解析:解析 对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右于树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。记住 3种遍历的顺序:前序,访问根一按前序遍历左子树一按前序遍历右子树:中序,按中序遍历左子树一访问根一按中序遍历右子树;后序,按后序遍历左子树呻按后序遍历右子树一访问根。9.将 E-R图转换到关系模式时,实体与实体间的联系可以表示成( )A) 属性 B) 关系 C) 键 D) 域(分数:2.00)A.B. C.D.解析:解析 将 E-R图转换成指定 RDBMS中的关系模式是数据

23、库逻辑设计的主要工作。从 E-R图到关系模式的转换是比较直接的,实体和联系都可以表示成关系。10.有三个关系 R、S 和 T如下: * 则由关系 R和 S得到关系 T的操作是 A) 自然连接 B) 交 C) 投影 D) 并(分数:2.00)A. B.C.D.解析:解析 本题考查关系运算的理解。选项 B、C、D 都不会使关系的属性值增加,而本题中 T的属性值有所增加,所以选项 A正确。11.以下不正确的叙述是A) 在 C程序中,逗号运算符的优先级最低B) 在 C程序中,APH 和 aph是两个不同的变量C) 若 a和 b类型相同,在计算了赋值表达式 a=b后,b 中的值将放入 a中,而 b中的值

24、不变D) 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值(分数:1.00)A.B.C.D. 解析:解析 在 C语言所有的运算符中,逗号运算符的优先级最低。C 语言中区分大小写,所以 APH和aph是两个不同的变量。赋值表达式 ab 表示将 b的值赋给 a,而 b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项 D) 中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。12.下列标识符不是关键字的是( )。A) break B) char C) Switch D) return(分数:1.00)A

25、.B.C. D.解析:解析 break、char、return、switch 都是 C语言中的关键字,Switch 不是。因为 C语言区分字母的大小写。13.下列合法的声明语句是( )。A) int_abc50; B) double int3+5e2.5;C) long do1L; D) float 3_asd3e-3;(分数:1.00)A. B.C.D.解析:解析 C 语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。另外 C语言规定了一些专用的标识符,它们有着固定的含义,不能更改。int 就是表达变量类型的标识符,它不能再用做变量名和函数名,所以选项 B)

26、不正确。do 是 C语言的一个关键字,也不能再用做变量名和函数名,所以选项 C)不正确。14.若有下列定义和语句:int u=011,v=0x11,w=11;printf(“%o,%x,%d/n:,u,v,w);则输出结果是( )。A9,17,11 B9,11,11C11,11,11 D11,17,11(分数:1.00)A.B.C. D.解析:解析 “%o”表示八进制无符号型输出整型数据(即不带前导 0);“%x”表示十六进制无符号型输出整型数据(即不带前导 0x或 0X);“%d”表示输出带符号的十进制整型数据。15.以下叙述中错误的是_。(A) C语句必须以分号结束(B) 复合语句在语法上

27、被看作一条语句(C) 空语句出现在任何位置都不会影响程序运行(D) 赋值表达式末尾加分号就构成赋值语句(分数:1.00)A.B.C. D.解析:16.可在 C程序中用作用户标识符的一组标识符是( )。 A) void define WORD B) as_b3 _123 If C) For -abc case D) 2c DO SIG(分数:1.00)A.B. C.D.解析:解析 C 语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线,关键字不能用作用户标识符。17.以下选项中不能作为合法常量的是( )。A) 1.234e04 B) 1.234e0.4 C) 1.2

28、34e+4 D) 1.234e0(分数:1.00)A.B. C.D.解析:解析 选项中的几个常量都是指数形式的实型常量。该类型的常量要求字母 e(或 E)之前必须有数字,且 e后面的指数必须为整数,所以选项 B)错误。18.有下列程序: main() int m,n,p; scanf(“m=%dn=%dp=%d“,则下列语句:printf(“x=%5.2f“,x);输出的结果是( )。A) x=123.46 B) 123.4567 C) x=123.4567 D) 123.46(分数:2.00)A. B.C.D.解析:解析 本题考查 printf函数的格式。“%5.2f”格式符中的“f”表示以

29、带小数点的形式输出单精度或者双精度数;“5”表示指定数据输出宽度为 5;“.2”表示指定输出数据小数位占 2位数,并对截去的第一位小数做四舍五入处理。22.有以下程序#includestdio.hmain()int c=0,k;for(k=1;k3;k+)switch(k)default:c+=k;case 2:c+;break;case 4:c+=2;break;printf(“%d/n“,c);程序运行后的输出结果是A) 3 B) 5 a) 7 D) 9(分数:1.00)A. B.C.D.解析:解析 第一次循环时,k=1,在 switch语句中,先执行 default后面的语句,即 c=c

30、+k=1,因为没有 break语句,所以不会跳出 switch结构,会接着执行 ease2后面的语句,即 c=c+1=2,然后跳出switch;第二次循环时,k=2,直接执行 case2后面的语句,即 c=c+1=3,然后跳出 switch语句,结束循环,执行输出语句。23.若执行下列的程序时,从键盘上输入 1和 2,则输出结果是( )。#includestdio.hmain()int a,b,s;scanf(“%d%d“,s=a;if(ab) s=b;S=S*S,printf(“%d/n“,s);A) 1 B) 4 C) 2 D) 9(分数:1.00)A.B. C.D.解析:解析 本题考查

31、if语句。scanf 函数通过键盘读入 a、b 的值,a=1,b=2。第一个 if语句,先判断条件,发现 ab 条件成立,则 s=b=2, s=s*s=4。24.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是A) n=0; while( ch=getchar()!=/n) n+;B) n=0; while( getchar()! =/n) n+;C) for( n=0; getehar()!=/n; n+);D) n=0; for( ch=getchar(); ch!=/n; n+);(分数:2.00)A.B.C.D. 解析:解析 选项 D中 ch=getchar

32、()的操作,在 for语句中所处的位置决定了此操作仅做一次,即只能从键盘上接收一个字符。如果该字符是回车符,则只循环一次就退出;如果输入一个非回车字符,则程序进入无限循环。25.若有以下调用语句,则不正确的 fun函数的首部是main( )int a50,n;fun(n,fabs()函数功能是返回函数参数的绝对值;sqrt()用于返回函数参数的平方根。选项 A中的 nx不是有效的 C语言表达式;选项 B中 powr(x,e)的功能是求 xe值,显然也不正确;选项 D中的 pow(n,x)存在和选项 B相同的问题。27.若 fp是指向某文件的指针,且通过该文件指针读数据已读到文件末尾,则函数 f

33、eof(fp)的返回值是A) EOF B) -1 C) 1 D) NULL(分数:2.00)A.B.C. D.解析:解析 EOF 是指向文本文件的结束标志,NULL 是打开文件错误时的返回值。feof 函数用来判断文件指针是否指向了文件末尾,如果指向了文件末尾就返回 1,否则返回 0。28.以下数组定义中错误的是A) int x 3=0; B) int x23=1,2,3,4,5,6;C) int x 3=1,2,3,4,5,6; D) int x23=1,2,3,4,5,6;(分数:2.00)A.B. C.D.解析:解析 二维数组的初始化有以下几种形式:分行进行初始化;不分行进行初始化;部分

34、数组元素进行初始化;省略第一维的定义,不省略第二维的定义。选项 B) 等号右边分了 3行,大于等号左边数组的行数 2。29.有下列程序:#includestdio.hvoid fun(char*s)while(*s)if(*s%2=0)printf(“%c“,*s);s+;main()char a=“good“);fun(a);printf(“/n“);注意:字母 a的 ASCII码值为 97,程序运行后的输出结果是( )。Ad Bgo Cgod Dgood(分数:1.00)A. B.C.D.解析:解析 在本题中,子函数 fun(char*s)的功能是如果*s 的 ASCII值是偶数,则输出*

35、s,主函数中当实参的值为 good时,g 的 ASCII值是 103,字母 o的 ASCII值是 111,字母 d的 ASCII的值是 100,只有字母 d的 ASCII的值是偶数,所以输出字母 d。30.有下列程序:main()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);程序执行后的输出结果是( )。A45 B20 C25 D36(分数:1.00)A.B.C. D.解析:解析 在 for循环语句中自变量 i从 0开始,每次自加 2,执行 s+=*(t+i)语句,因为 C语言规定数组名代数组

36、的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第 i+1个元素。所以程序运行的结果是 1+3+5+7+9=25,即变量 s的值等于 25。31.若有定义:char *st=“how are you“;,下列程序段中正确的是A) chara11;*p;strcpy(p=a+1,int y;v1;A) example.x=10 B) example v2.x=10C) example.x=10 D) struct example v2=10;(分数:2.00)A.B.C.D. 解析:评析 在定义结构体变量时,不能只用结构体名 example或关键字 struct进行定义,必需要用结构

37、体类型名 struct example定义,在引用结构体成员变量时,需要用结构体变量名进行引用,所以选D。34.若有说明:int a4=0,0;则下面不正确的叙述是( )。A) 数组 a的每个元素都可得到初值 0B) 二维数组 a的第一维大小为 1C) 当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小D) 只有元素 a00和 a01可得到初值,其余元素均得不到确定的初值(分数:1.00)A.B.C.D. 解析:解析 本题考查二维数组的基本概念。对于二维数组,只可以省略第一个括号中的常量表达式,而不能省略第二个括号中的常量表达式。数组中未赋初值的元素系统会自动对它们赋初值

38、0。35.有以下程序#includestdio.hvoid fun(int a, int b)int t;t=a; a=b;int c10=1,2,3,4,5,6,7,8,9,0,i;for(i=0;i10;i+=2) fun(ci,ci+1);for(i=0;i10;i+) printf(“%d,“,ci);printf(“/n“);程序的运行结果是_。A) 1,2,3,4,5,6.7,8,9,0, B) 2,1.4.3.6,5.8,7,0,9,C) 0,9,8,7,6,5,4,3,2,1, D) 0,1,2,3,4,5,6,7,8,9,(分数:2.00)A. B.C.D.解析:评析 本题中

39、 ci,ci+1的值是实参,a,b 是形参。C 语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。所以函数 run中对 a,b值的交换不影响主函数中 c数组的值,故输出的 c数组的值为 c数组初始化时的值。36.在 C语言中引用数组元素时,其数组下标的数据类型只能是( )。A) 整型常量 B) 整型表达式C) 整型常量或整型表达式 D) 任何类型的表达式(分数:1.00)A.B.C

40、. D.解析:解析 在 C语言中,数组元素的下标只能是整型常量或整型表达式。37.下列程序执行的输出结果是( )。#inClUdestdio.hmain()char a24;strcpy(a,“are“);strcpy(a1,“you“);a03=for(i=0;in/2;i+)t=ai; ai=an-1 -i;an-1-i =t;main()int b10=1,2,3,4,5,6,7,8,9,10;int i,s=0;reverse(b,8);for(i=6;i10;i+)s+=bi;printf(“%d/n“,s);A) 22 B) 10 C) 34 D) 30(分数:2.00)A. B.

41、C.D.解析:解析 在 main函数中,调用 reverse函数将 b数组中的前 8个成员进行互置,执行完毕后,b 数组中的成员为8,7,6,5,4,3,2,1,9,10,然后再执行 for循环结构,将 b6,b7, b9的值相加,结果为 22。二、填空题(总题数:15,分数:40.00)41.测试的目的是暴露错误,评价程序的可靠性;而U /U的目的是发现错误的位置并改正错误。(分数:2.00)填空项 1:_ (正确答案:调试)解析:解析 程序调试的任务是诊断和改正程序中的错误。它与软件测试不同。软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于一定的调试工具去执行找出软件错

42、误的具体位置。软件测试贯穿整个软件生命期,调试主要在开发阶段。由程序调试的概念可知,程序调试活动由两部分组成:其一是根据错误的迹象确定程序中错误的确切性质、原因和位置;其二,对程序进行修改,排除这个错误。42.结构化程序设计的 3种基本结构分别是顺序、选择和 1。(分数:2.00)填空项 1:_ (正确答案:重复(或循环))解析:解析结构化程序设计包括 3种基本的结构:顺序结构、选择结构和重复结构(循环结构),利用这3种结构就足以表达出各种其他形式结构的程序设计方法。其中利用循环结构,可以简化大量的程序执行。43.设二叉树如下:(分数:2.00)填空项 1:_ (正确答案:EDBGHFCA)解

43、析:解析 后序遍历二叉树的定义为:若二叉树为空,则空操作;否则,后序遍历左子树,后序遍历右子树,访问根结点。根据该规则,遍历结果应为 EDBGHFCA。44.在面向对象的方法中, 1 描述的是具有相似属性与操作的一组对象。(分数:2.00)填空项 1:_ (正确答案:类)解析:解析 在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。45.下列程序的运行结果是_。#includestdio.hmain()int a,b,c,n;a=2;b=0;c=1;n=1;while(n=3)c=c*a;b=b+c;+n;printf(“b=%d“,b);(分数:2.00)

44、填空项 1:_ (正确答案:b=14)解析:解析 分析程序可知,n 的初始值为 1,因此,while(n=3)循环 3次。第 1次:c=c*a-2:b=b+c=2;n=2。第 2次:c=c*a=4;b=b+c=6; n=3。第 3次:c=c*a=8;b=b+c=14。当 n=4时,判断条件不满足,退出循环。46.在 C语言中,while 和 dowhile循环的主要区别是 1 的循环至少被执行一次。(分数:2.00)填空项 1:_ (正确答案:dowhile)解析:解析 考查 while和 dowhile循环的主要区别。while 循环的控制出现在循环体之前,只有当while后面的表达式的值为

45、非零时,才可能执行循环体;在 dowhile构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。47.定义 int a=5,b;,则执行表达式 b=+a*-a之后,变量 b的值为_。(分数:2.00)填空项 1:_ (正确答案:25)解析:命题目的 考查对于基本运算符的掌握情况。解题要点 +和-做前缀使用的时候,先对变量进行增 1或减 1,之后进行其他的运算。考点链接 赋值运算符的优先级仅仅高于逗号运算符。48.以下程序运行后的输出结果是_。main()int x,a=1,b=2,c=3,d=4;x=(ab)? a:b;x=(xc)?

46、x:c;x=(dx)? x:d;pfintf(“%d/n“,x);(分数:2.00)填空项 1:_ (正确答案:1)解析:解析 因为在条件表达式(ab)?a:b 中,比较表达式 ab 为真,所以 x的值等于 a的值等于1,后面两个条件表达式中的比较表达式都为真,所以最终 x的值等于 1。49.下列程序的运行结果是U /U。#include stdio.hmain()union EXAMPLEstructint x; int y; in;int a;int b;e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(“%d,%d/n“,e.in.x,e.in.y);(分数:2.00)填空项 1:_ (正确答案:4,8)解析:解析 C 语言规定,共用体中各个成员变量在内存中占用同一段内存单元,即 e.in.x、 e.a、e.b占用同一段内存单元。执行语句 e.b=2;后,e.in.x=e.a=e.b=2;执行语句 e.in.x= e.a*e.b;时,e.a 的值为 2,e.b 的值为 2,所以运算得出 e.in.x的值为 4;执行语句 e.in.y= e.a+e.b时,由于 e.in.x和e.a、e.b 占用的是同一段内存单元,所以此时的 e.a、e.b

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

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

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