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

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

1、二级 C 语言-118 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是_。(分数:1.00)A.DB 包含 DBS 和 DBMSB.DBMS 包含 DB 和 DBSC.DBS 包含 DB 和 DBMSD.没有任何关系2.下列选项中不是 C 语句的是_。(分数:1.00)A.int i; i+; printf(“%d/n“, i); B.;C.a=5, c=10D.;3.设有定义语句:char a=“/72“;,则变量 a_。(分数:1.00)A.包含 1 个字符B.包

2、含 2 个字符C.包含 3 个字符D.定义不合法4.设 x、y 和 z 是 int 型变量,且 x=4,y=6,z=8,则下列表达式中值为 0 的是_。(分数:1.00)A.xC.a=58, b=58D.-1;7.对如下二叉树进行后序遍历的结果为_。 (分数:1.00)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA8.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指_。(分数:1.00)A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程9.以下叙述中正确的是_。(分数:1.00)A.a 是实型变量,C 允许进行赋值 a=10

3、,但不可以这样说:实型变量中允许存放整型值B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式C.执行表达式 a=b 后,在内存中 a 和 b 存储单元中的原有值都将被改变,a 的值已由原值改变为 b 的值,b 的值由原值变为 0D.已有 a=3,b=5,当执行了表达式 a=b,b=a 之后,使 a 中的值为 5,b 中的值为 310.下列描述错误的是_。(分数:1.00)A.继承分为多重继承和单重继承B.对象之间的通信靠传递消息来实现C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征D.类是具有共同属性、共同方法的对象的集合11.面向对象的设计方法与传统的面向过程的方

4、法有本质不同,它的基本原理是_。(分数:1.00)A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法而不强调概念C.使用现实世界的概念抽象地思考问题从而自然地解决问题D.不强调模拟现实世界中的算法而强调概念12.下列合法的声明语句是_。(分数:1.00)A.int _abc=50;B.double int=3+5e2.5;C.long do=1L;D.float 3_asd=3e-3;13.关于结构化程序设计原则和方法的描述错误的是_。(分数:1.00)A.选用的结构只准许有一个入口和一个出口B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C.不允许使用 GOTO 语句D.

5、语言中若没有控制结构,应该采用前后一致的方法来模拟14.若 ch 为 char 型变量,k 为 int 型变量(已知字符 a 的 ASCII 码是 97),则执行下列语句后输出的结果为_。 ch=“b“; k=10; printf(“%x, %o, “, ch, ch, k); printf(“k=%d/n“, k);(分数:1.00)A.因变量类型与格式描述符的类型不匹配,输出无定值B.输出项与格式描述符个数不符,输出为 0 值或不定值C.62, 142, k=%dD.62, 142, k=%1015.有下列程序: fun(int x, int y)return(x+y); main() i

6、nt a=1, b=2, c=3, sum; sum=fun(a+, b+, a+b), c+); printf(“%d/n“, sum); 执行后的输出结果是_。(分数:1.00)A.6B.7C.8D.916.假定 x 和 y 为 double 型,则表达式 x=2,y=x+3/2 的值是_。(分数:1.00)A.3.500000B.3C.2.000000D.3.00000017.有下列程序: int fun(int n) if(n=1)return 1; else return(n+fun(n-1); main() int x; scanf(“%d“, x=fun(x); printf(“

7、%d/n“, x); 执行程序时,给变量 x 输入 10,程序的输出结果是_。(分数:1.00)A.55B.54C.65D.4518.下列程序的输出结果是_。 main() int i=1, j=2, k=3; if(i+=1 (分数:1.00)A.1 2 3B.2 3 4C.2 2 3D.2 3 319.下列程序的输出结果是_。 #includestdio.h main() int a=0, i; for(i=1; i5; i+) switch(i) case 0: case 3: a+=1; case 1: case 2: a+=2; default: a+=3; printf(“%d“,

8、 i); (分数:1.00)A.19B.1C.6D.820.有以下程序: main() int x, i; for(i=1; i=50; i+) x=i; if(x%2=0) if(x%3=0) if(x%7=0) printf(“%d, i)“; 输出结果是_。(分数:1.00)A.28B.27C.42D.4121.设 x=011050,则 x=x while(-k) printf(“%d“, k=1); printf(“n“); 执行后的输出结果是_。(分数:1.00)A.1B.2C.4D.死循环23.若有定义:“int a23;”,则对 a 数组的第 i 行第 j 列元素的正确引用为_。

9、(分数:1.00)A.*(*(a+i)+j)B.(a+i)jC.*(a+i+j)D.*(a+i)+j24.下列能正确进行字符串赋值的是_。(分数:1.00)A.char s5=“ABCDE“;B.char s5=“A“, “B“, “C“, “D“, “E“;C.char*s; s=“ABCDE“;D.char*s; printf(“%s“, s);25.在“文件包含”预处理语句的使用形式中,当#include 后面的文件名用(双引号)括起时,寻找被包含文件的方式是_。(分数:1.00)A.直接按系统设定的标准方式搜索目录B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索C.仅

10、仅搜索源程序所在目录D.仅仅搜索当前目录26.有下列程序: main() int i, j, x=0; for(i=0, i2; i+) x+; for(j=0; j=3; j+) if(j%2)continue; x+; x+; printf(“x=%d/n“, x); 程序执行后的输出结果是_。(分数:1.00)A.x=4B.x=8C.x=6D.x=1227.有下列程序: int fun1(double a)return a*=a; int fun2(double x, double y) double a=0,b=0; a=funl(x); b=fun1(y); return(int)(

11、a+b); main() double w; w=fun2(1.1, 2.0), 程序执行后变量 w 中的值是_。(分数:1.00)A.5.21B.5C.5.0D.0.028.有下列程序: 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); 程序执行后的输出结果是_。(分数:1.00)A.45B.20C.25D.3629.有如下程序: main() int x=1, a=0, b=0; switch(x) case 0: b+; case 1: a+; c

12、ase 2: a+; b+; printf(“a=%d, b=%d/n“, a, b); 该程序的输出结果是_。(分数:1.00)A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=230.有下列程序: int 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); 程序执行后的输出结果是_。(分数:1.

13、00)A.45B.50C.60D.5531.有下列程序: main() char*p=“3697“, “2584“; int i, j; long num=0; for(i=0; i2; i+) j=0; while(pij!=“/0“) if(pij-“/0“)%2)num=10*num+pjj-“0“; j+=2“ printf(“%d/n“, num); 程序执行后的输出结果是_。(分数:1.00)A.35B.37C.39D.397532.以下程序的输出结果是_。 main() char st20=“hello/0/t/“; printf(“%d%d/n“, strlen(st), si

14、zeof(st); (分数:1.00)A.9 9B.5 20C.13 20D.20 2033.若有以下的定义:“int t32;”,能正确表示 t 数组元素地址的表达式是_。(分数:1.00)A. for(i=1; i=10; i+) if(i*i=20) printf(“%d/n“, i*i); (分数:1.00)A.49B.36C.25D.6436.若有定义“int b8, *p=b;”,则 p+6 表示_。(分数:1.00)A.数组元素 b6的值B.数组元素 b6的地址C.数组元素 b7的地址D.数组元素 b0的值加上 637.设变量已正确定义,则以下能正确计算 f=n!的程序是_。(分

15、数:1.00)A.f=0;for(i=1; i=n; i+) f*=i;B.f=1;for(i=1; in; i+)f*=i;C.f=1;for(i=n; i1; i+)f*=i;D.f=1;for(i=n; i=2; i-)f*=i;38.下述程序执行的输出结果是_。 #includestdio.h main() char a24; strcpy(a, “are“); strcpy(a1, “you“); a03=“ printf(“%s/n“, a); (分数:1.00)A.are for(i=1; i3; i+) for(j=0; j=i; j+)s+=aij; printf(“%d/n

16、“, s); (分数:1.00)A.18B.19C.20D.2140.现有以下结构体说明和定义变量,如图所示,指针 p、q、r 分别指定一个链表中连续的 3 个结点。 (分数:1.00)A.q-next=r-next; p-next=r; r-next=q;B.q-next=r; q-next=r-next; r-next=q;C.q-next=r-next; r-next=q; p-next=r;D.q-next=q; p-next=r; q-next=r-next;二、程序填空题(总题数:1,分数:18.00)41.请补充函数 proc(),函数 proc()的功能是求 7 的阶乘。 注意

17、:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdio.h long proc(int n) if( 1) return(n*proc( 2); else if( 3) return 1; void main() int k=7; printf(“%d!=%ld/n“, k, proc(k); (分数:18.00)三、程序改错题(总题数:1,分数:24.00)42.下列给定的程序中,函数 proc()的功能是:用选择法对数组中的 m 个元素按从小到大的顺序进行排序。例如,排序

18、前的数据为:11 32 -5 2 14 则排序后的数据为:-5 2 11 14 32 请修改程序中的错误,使它能得到正确结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h #define M 20 void proc(int a, int n) int i, j, t, p; /*found* for(j=0; jn-1; j+); p=j; for(i=j; in; i+) if(aiap) p=i; t=ap; ap=aj; /*found* ap=t; void main() int arrM=11, 32, -5

19、, 2, 14, i, m=5; printf(“排序前的数据:“); for(i=0; im; i+) printf(“%d“, arri); printf(“/n“); proc(arr, m); printf(“排序后的顺序:“); for(i=0; im; i+) printf(“%d“, arri); printf(“/n“); (分数:24.00)_四、程序设计题(总题数:1,分数:18.00)43.请编写函数 proc(),该函数的功能是:将放在字符串数组中的 M 个字符串(每串的长度不超过 N),按顺序合并组成一个新的字符串。 例如,若字符串数组中的 M 个字符串为: ABCD

20、 BCDEFG CDEFGHI 则合并后的字符串内容应该是 ABCDBCDEFGCDEFGHI。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdio.h #includeconio.h #define M 3 #define N 20 void proc(char arrMN, char*b) void main() char strMN=“ABCD“, “BCDEFG“, “CDEFGHI“, i; char arr100=“#“; printf(“The string:

21、 /n“); for(i=0; iM; i+) puts(stri); printf(“/n“); proc(str,arr); printf(“The A string: /n“); printf(“%s“, arr); printf(“/n/n“); (分数:18.00)_二级 C 语言-118 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是_。(分数:1.00)A.DB 包含 DBS 和 DBMSB.DBMS 包含 DB 和 DBSC.DBS 包含 DB 和 DB

22、MS D.没有任何关系解析:解析 数据库系统由如下 5 个部分组成:数据库(DB)、数据库管理系统(DBMS)、数据库管理员(人员)、系统平台之一硬件平台(硬件)、系统平台之二软件平台(软件)。其中 DB(DataBase)即数据库,是统一管理的相关数据的集合;DBMS 即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用完程序提供访问 DB 的方法。由以上可知,选项 C 为正确答案。2.下列选项中不是 C 语句的是_。(分数:1.00)A.int i; i+; printf(“%d/n“, i); B.;C.a=5, c=10 D.;解析:解析 C 项缺少分号。因为赋值

23、语句两个标志:赋值(就是“=”)和语句(加上“;”)。3.设有定义语句:char a=“/72“;,则变量 a_。(分数:1.00)A.包含 1 个字符 B.包含 2 个字符C.包含 3 个字符D.定义不合法解析:解析 “是转义字符,但是“/72“表示 ASCII 码里的一个字符。4.设 x、y 和 z 是 int 型变量,且 x=4,y=6,z=8,则下列表达式中值为 0 的是_。(分数:1.00)A.xC.a=58, b=58D.-1; 解析:解析 赋值语句的两个标志:赋值(就是“=”)和语句(加上“;”)。选项 A,缺少分号,应该改为 a=b=58;选项 B,错误,类型转换不是这么写,应

24、该是这样:k=(int)(a+b);C 选项中缺少分号;选项D,相当于 i=i-1,所以也可以算作赋值操作。7.对如下二叉树进行后序遍历的结果为_。 (分数:1.00)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA 解析:解析 后序遍历首先遍历左子树,然后遍历右子树,最后访问根结点,并且在遍历左、右树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。8.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指_。(分数:1.00)A.模块间的关系B.系统结构部件转换成软件的过程描述 C.软件层次结构D.软件开发过程解析:

25、解析 软件的过程设计是指系统结构部件转换成软件的过程描述。9.以下叙述中正确的是_。(分数:1.00)A.a 是实型变量,C 允许进行赋值 a=10,但不可以这样说:实型变量中允许存放整型值 B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式C.执行表达式 a=b 后,在内存中 a 和 b 存储单元中的原有值都将被改变,a 的值已由原值改变为 b 的值,b 的值由原值变为 0D.已有 a=3,b=5,当执行了表达式 a=b,b=a 之后,使 a 中的值为 5,b 中的值为 3解析:解析 C 语言中语法上规定实型变量是不能存放整型类的数据的,整型数据也不能存放实型数据。这是为了避免类型

26、转换之间可能会发生错误。10.下列描述错误的是_。(分数:1.00)A.继承分为多重继承和单重继承B.对象之间的通信靠传递消息来实现C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征 D.类是具有共同属性、共同方法的对象的集合解析:解析 对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。11.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是_。(分数:1.00)A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法而不强调概念C.使用现实世界的概念抽象地思考问题从而自然地解决问题 D.不

27、强调模拟现实世界中的算法而强调概念解析:解析 面向对象的设计方法的基本原理:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但也鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。12.下列合法的声明语句是_。(分数:1.00)A.int _abc=50; B.double int=3+5e2.5;C.long do=1L;D.float 3_asd=3e-3;解析:解析 标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线。B 选项int 不是表达变量类型的标识符,它不能再用做变量名和函数名。C 选项 do 是 C 语言的一

28、个关键字。D 选项标识符只能以字母或下划线开始。13.关于结构化程序设计原则和方法的描述错误的是_。(分数:1.00)A.选用的结构只准许有一个入口和一个出口B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C.不允许使用 GOTO 语句 D.语言中若没有控制结构,应该采用前后一致的方法来模拟解析:解析 结构化程序设计的原则和方法之一是限制使用 GOTO 语句,但并非绝对不允许使用 GOTO 语句。其他三项为结构化程序设计的原则。14.若 ch 为 char 型变量,k 为 int 型变量(已知字符 a 的 ASCII 码是 97),则执行下列语句后输出的结果为_。 ch=“b“; k=1

29、0; printf(“%x, %o, “, ch, ch, k); printf(“k=%d/n“, k);(分数:1.00)A.因变量类型与格式描述符的类型不匹配,输出无定值B.输出项与格式描述符个数不符,输出为 0 值或不定值C.62, 142, k=%d D.62, 142, k=%10解析:解析 选项 A、B 的空间不够;字符串存储要有结束符“/0“,且要占用一个空间,printf 用来输出字符,不能输入字符串。15.有下列程序: fun(int x, int y)return(x+y); main() int a=1, b=2, c=3, sum; sum=fun(a+, b+, a

30、+b), c+); printf(“%d/n“, sum); 执行后的输出结果是_。(分数:1.00)A.6B.7C.8 D.9解析:解析 函数 fun(int x, int y)的功能是返回 x+y 的值。在主函数中,变量 a,b,c 的初始值分别为 1,2,3。因此逗号表达式“a+, b+, a+b”的值等于 5,表达式 c+的值为 3,调用于函数的表达式为“fun(5,3);”,其返回值等于 8。16.假定 x 和 y 为 double 型,则表达式 x=2,y=x+3/2 的值是_。(分数:1.00)A.3.500000B.3C.2.000000D.3.000000 解析:解析 在 x

31、=2,y=x+3/2 中,3/2=1,2+1=3,因此表达式的值为 3,因为 x、y 为 double 型变量,故选择 D 选项。17.有下列程序: int fun(int n) if(n=1)return 1; else return(n+fun(n-1); main() int x; scanf(“%d“, x=fun(x); printf(“%d/n“, x); 执行程序时,给变量 x 输入 10,程序的输出结果是_。(分数:1.00)A.55 B.54C.65D.45解析:解析 本题在函数 int fun(int n)的定义中又出现了对函数 fun 的调用,所以函数 fun 是递归函数

32、。因而在主函数中调用 x=fun(x)时,当输入 10 赋给变量 x 时,递归调用的过程为 fun(10)=10+fun(9)=10+9+fun(8)=10+9+8+fun(7) =10+9+8+7+fun(6)=10+9+8+7+6+fun(5) =10+9+8+7+6+5+fun(4) =10+9+8+7+6+5+4+fun(3) =10+9+8+7+6+5+4+3+fun(2) =10+9+8+7+6+5+4+3+2+fun(1) =10+9+8+7+6+5+4+3+2=5518.下列程序的输出结果是_。 main() int i=1, j=2, k=3; if(i+=1 (分数:1.0

33、0)A.1 2 3B.2 3 4C.2 2 3D.2 3 3 解析:解析 本题考查自增运算符“+”、逻辑与运算符“ for(i=1; i5; i+) switch(i) case 0: case 3: a+=1; case 1: case 2: a+=2; default: a+=3; printf(“%d“, i); (分数:1.00)A.19 B.1C.6D.8解析:解析 本题考查 switch 语句。当 i=1 时,执行 case 1,因为没有遇到 break 语句,所以依次往下运行,“a=a+2=2,a=a+3=5”;当 i=2 时,执行 case 2,因为没有遇到 break 语句,

34、所以依次往下执行,“a=a+2=7,a=a+3=10”;当 i=3 时,执行 case 3,a=a+1=11,因为没有遇到 break 语句,所以依次往下运行,a=a+2=13,a=a+3=16;当 i=4 时,执行 defauit,a=a+3=19,结束循环。20.有以下程序: main() int x, i; for(i=1; i=50; i+) x=i; if(x%2=0) if(x%3=0) if(x%7=0) printf(“%d, i)“; 输出结果是_。(分数:1.00)A.28B.27C.42 D.41解析:解析 只有当 3 个 if 条件同时成立,即能够同时被 2、3、7 整

35、除时,才输出 i 的值,而从 0 到50 能够同时被 2、3、7 整除的数只有 42,故选择 C 选项。21.设 x=011050,则 x=x while(-k) printf(“%d“, k=1); printf(“n“); 执行后的输出结果是_。(分数:1.00)A.1 B.2C.4D.死循环解析:解析 在程序语句中,k 的初始值为 5,进行第 1 次 while 循环后,k 自减 1 为 4,非 0,执行循环体里的 printf 语句,输出 k,此时 k 的值变为 1。程序执行第 2 次循环时,k 自减 1 变为 0,为假,退出 while 循环语句。所以程序的最后结果为 1。23.若有

36、定义:“int a23;”,则对 a 数组的第 i 行第 j 列元素的正确引用为_。(分数:1.00)A.*(*(a+i)+j) B.(a+i)jC.*(a+i+j)D.*(a+i)+j解析:解析 通过地址来引用数组元素的方法有下列 5 种: (1)aij;(2)*(ai+j);(3)*(*(a+j)+j);(4)*(aij);(5)(B.char s5=“A“, “B“, “C“, “D“, “E“;C.char*s; s=“ABCDE“; D.char*s; printf(“%s“, s);解析:解析 本题考查 printf 函数的格式。第 1 个 printf 函数,格式说明的个数是 2

37、,而输出项的个数是 3,所以对于多余的输出项 k 不予输出;第 2 个 printf 函数,有两个%说明,第 1 个%后面的字符要原样输出。“%x”和“%0”分别表示以十六进制和八进制无符合型输出整型数据(不带前导 0x 或 0)。25.在“文件包含”预处理语句的使用形式中,当#include 后面的文件名用(双引号)括起时,寻找被包含文件的方式是_。(分数:1.00)A.直接按系统设定的标准方式搜索目录B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索 C.仅仅搜索源程序所在目录D.仅仅搜索当前目录解析:解析 #include“文件名“,预处理程序首先在引用被包含文件的源文件

38、所在的目录下搜索指定的文件,如没找到,再按系统指定的标准目录搜索。26.有下列程序: main() int i, j, x=0; for(i=0, i2; i+) x+; for(j=0; j=3; j+) if(j%2)continue; x+; x+; printf(“x=%d/n“, x); 程序执行后的输出结果是_。(分数:1.00)A.x=4B.x=8 C.x=6D.x=12解析:解析 在第 1 次外层 for 循环中,首先 x+得到 x=1。进入到内层 for 循环,只有循环 j 的值为奇数时,变量 x 的值才自加 1,所以在内层 for 循环执行过程中,变量 x 的值自加两次,当

39、退出内层 for 循环时,x=3,然后执行 x+,得到 x=4。在进入执行第 2 次外层 for 循环中,首先 x+得到 x=5。进入到内层 for 循环,只有循环变量 j 的值为奇数时,变量 x 的值才自加 1,所以在内层 for 循环执行过程中,变量 x 的值自加 1 两次,当退出内层 for 循环时,x=7,然后执行 x+,得到 x=8,所以打印输出变量 x 的值为 8。27.有下列程序: int fun1(double a)return a*=a; int fun2(double x, double y) double a=0,b=0; a=funl(x); b=fun1(y); re

40、turn(int)(a+b); main() double w; w=fun2(1.1, 2.0), 程序执行后变量 w 中的值是_。(分数:1.00)A.5.21B.5C.5.0 D.0.0解析:解析 子函数 fun1(double a)的功能是返回 a 的平方值的整数部分。子函数 fun2(double x,double y)的功能是返回 x 的平方值的整数部分与 y 的平方值的整数部分的和。又因为题中变量 w 的定义为 double 型,函数 fun2 的定义为 int 型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量 w 的值为 5.0。28.有下列程序:

41、 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); 程序执行后的输出结果是_。(分数:1.00)A.45B.20C.25 D.36解析:解析 在 for 循环语句中自变量 i 从 0 开始,每次自加 2,执行 s+=*(t+i)语句,因为 C 语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第 i+1 个元素。所以程序运行的结果是 1+3+5+7+9=25,即变量 s 的值等于 25。29.有如下程序: ma

42、in() int x=1, a=0, b=0; switch(x) case 0: b+; case 1: a+; case 2: a+; b+; printf(“a=%d, b=%d/n“, a, b); 该程序的输出结果是_。(分数:1.00)A.a=2,b=1 B.a=1,b=1C.a=1,b=0D.a=2,b=2解析:解析 当 x 为 1 时,执行 case 1,a 自加等于 1,因为 case 1 后没有 break,接着执行 case 2,此时 a 的值为 2,b 自加为 1,故选择 A 选项。30.有下列程序: int fun(int x, int n) static int s

43、um=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); 程序执行后的输出结果是_。(分数:1.00)A.45B.50C.60 D.55解析:解析 在函数 int fun(int x,int n)的定义中,变量 sum 为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。函数 int fun(int x,int n)的功能是求出数组 x各

44、个元素的和,所以在主函数中,调用函数 fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用 fun(b,4)后,变量 sum=15+6+7+8+9=45,所以 s=15+45=60。31.有下列程序: main() char*p=“3697“, “2584“; int i, j; long num=0; for(i=0; i2; i+) j=0; while(pij!=“/0“) if(pij-“/0“)%2)num=10*num+pjj-“0“; j+=2“ printf(“%d/n“, num); 程序执行后的输出结果是_。(分数:1.00)A.35B.37C.39D.39

45、75 解析:解析 执行第一次 for 循环时,用表达式 pij!=“/0“来判断字符串数组指针 p 是否到达字符串的结尾,如果没有到达,继续执行 while 中的语句。if 语句表示(pij-“/0“)除 2 的余数不为 0 时,即字符串所有奇数,执行后面的语句。所以退出第 1 次 for 的循环体时,输出为 397,执行第 2 次循环体。对字符串“2584”进行处理,输出结果为 5,因而最后输出结果为 3975。32.以下程序的输出结果是_。 main() char st20=“hello/0/t/“; printf(“%d%d/n“, strlen(st), sizeof(st); (分数

46、:1.00)A.9 9B.5 20 C.13 20D.20 20解析:解析 从题目中可知,“/0“、“/t“、“/“分别为一个字符,而 sizeof 是求字节个数的函数,其中包括“/0“占的字节;strlen 函数是求数组长度的函数,其以“/0“结束,因此 strlen 的值为 5,sizeof 的值为 20。33.若有以下的定义:“int t32;”,能正确表示 t 数组元素地址的表达式是_。(分数:1.00)A. for(i=1; i=10; i+) if(i*i=20) printf(“%d/n“, i*i); (分数:1.00)A.49B.36C.25 D.64解析:解析 当 if 执行到第一个满足(i*i=20)%”,则 p+6 表示_。(分数:1.00)

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

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

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