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

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

1、二级 C语言笔试-338 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.设有以下语句:int a=1, b=2, c;c=a(b2);执行后,c 的值为( )。(分数:2.00)A.6B.7C.8D.92.下列程序中 C的二进制值是( )。char a=2, b=4, c;c=ab2;(分数:2.00)A.00000011B.00010100C.00011100D.000110003.设“int x=2, y=1;”,则表达式(!x y-)的值是( )。(分数:2.00)A.0B.1C.2D.-14.下列程序的输出的结果是( )。main

2、()double d=3.2; int x, Y;x=1.2; y=(x+3.8)/5.0;printf(“%d/n“, d*y);(分数:2.00)A.3B.3.2C.0D.3.075.函数 fseek()的正确调用形式是( )。(分数:2.00)A.fseek(位移量,起始点,文件类型指针);B.fseek(文件类型指针,位移量,起始点);C.fseek(文件类型指针,起始点,位移量);D.fseek(起始点,位移量,文件类型指针);6.为了避免在嵌套的条件语句 if else中产生二义性,C 语言规定,else 子句总是与( )配对。(分数:2.00)A.缩排位置相同 ifB.其前面最近

3、的 ifC.其后面最近的 ifD.同一行上的 if7.下列函数的类型是( )。fun(double x)float y;y=3*x=4;return y;(分数:2.00)A.intB.不确定C.voidD.float8.若有以下程序段,w 和 k都是整型变量:w=k;LB: if(w=0)go to LE;W-;printf(“*“)goto LB;LE:则不能与上面程序段等价的循环语句是( )。(分数:2.00)A.for(w=k; w!=0; w-)printf(“*“);B.for(w=k; w; -w)printf(“*“);C.w=k;while(W-! =0)printf(“*“

4、);D.w=k;w+; dow-; printf(“*“); )while(w!=0);9.设有下列程序段:char str=“HelloWorld“;char *ptr;ptr=str;执行上面的程序段后,*(ptr+10)的值为( )。(分数:2.00)A./0B.0C.不确定的值D.0的地址10.有以下程序:fun(int x)int p; if(x=0x=1)return(3);p=x-fun(x-2);return p;main()printf(“%d/n“, fun(7); 程序执行后的输出结果是( )。(分数:2.00)A.7B.3C.2D.011.有下列程序:main()int

5、 y=10;doy-; )while(-y);printf(“%d/n“, -y);当执行程序时,输出的结果是( )。(分数:1.00)A.-1B.1C.4D.012.有以下程序:void swap(char *x, char *y)char t;t= *x; *x *y; *y=t;main()char *s1=“abc“, *s2=“123“;swap(s1, s2);printf(“%s, %s/n“, s1, s2);程序执行后的输出结果是( )。(分数:1.00)A.123,abcB.abc,123C.1bc,a23D.321,cba13.以下叙述中正确的是( )。(分数:1.00)

6、A.预处理命令行必须位于 C源程序的起始位置B.在 C语言中,预处理命令行都以“#”开头C.每个 C程序必须在开头包含预处理命令行:#includestdio.hD.C语言的预处理不能实现宏定义和条件编译的功能14.若有下列定义(设 int类型变量占 2个字节):int i=8, j=9;则下列语句:printf(“i=%d, j=%d/n“, i, j);输出的结果是( )。(分数:1.00)A.i=8, j=9B.i=%d, i=%dC.i=%8, j=%9D.8,915.下面程序的输出是( )。main()int t=1; fun(fun(t); fun(int h)static int

7、 a3=1,2,3;int k;for(k=0; k3; k+)ak+=ak=h;for(k=0; k3; k+)printf(“%d“, ak);printf(“/n“);return(ah); (分数:1.00)A.1,2,3,1,5,9,B.1,3,5,1,3,5,C.1,3,5,0,4,8,D.1,3,5,-1,3,7,16.设在 C语言中,float 类型数据占 4个字节,则 double类型数据占( )个字节。(分数:1.00)A.1B.2C.8D.417.下述程序的运行结果是( )。#includestdio.h#includestring.hmain()char*s1=“abD

8、uj“;char*s2=“ABdUG“;int t;t=strcmp(s1, s2);printf(“%d“, t);(分数:1.00)A.正数B.负数C.零D.不确定的值18.下列程序的运行结果为( )。#define MAX(x, y) (x)(y)?(x):(y)main()int a=2, b=3, c=1, d=3, t;printf(“%d/n“, (MAX(a+b, c+d)*100);(分数:1.00)A.500B.5C.4D.40019.下列叙述正确的是( )。(分数:1.00)A.C语言中的文件是流式文件,因此只能顺序存取数据B.打开一个已存在的文件并进行了写操作后,原有文

9、件中的全部数据必定被覆盖C.在一个程序中当对文件进了写操作后,必须先关闭该文件然后再打开,才能读到第 1个数据D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失20.按照“先进后出”原则组织数据的结构是( )。(分数:1.00)A.队列B.栈C.双向链表D.二叉树21.下列选项中不属于软件生命周期开发阶段任务的是( )。(分数:2.00)A.软件测试B.概要设计C.软件维护D.详细设计22.语句“printf(“a/bre“/hi/y/bou/n“)”;的输出结果是( )。(分数:2.00)A.a/bre/hi/y/bouB.a/bre/hi/y/bouC.rehiyouD

10、.abrehiy/bou23.如果进栈序列为 e1、e2、e3、e4,则可能的出栈序列是( )。(分数:2.00)A.e3、e1、e4、e2B.e2、e4、e3、e1C.e3、e4、e2D.任意顺序24.下列程序的运行结果是( )。int y=5, x=14;y=(x=3*y, x+1), x=1);printf(“x=%d, y=%d“, x, y);(分数:2.00)A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=2725.一些重要的程序设计语言(如 C语言和 Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用( )。(分数:2.00)A.

11、栈B.堆C.数组D.链表26.数据库管理系统 DBMS中用来定义模式、内模式和外模式的语言为( )。(分数:2.00)A.CB.BasicC.DDLD.DML27.表达式5-1的值是( )。(分数:2.00)A.整数 4B.字符 4C.表达式不合法D.字符 628.下面的函数调用语句中 func函数的实参个数是( )。func(f2v1, v2), (v3, v4, v5), (v6, max(v7, v8)(分数:2.00)A.3B.4C.5D.829.下列程序执行后的输出结果是( )。void func(int *a, int b)b0=*a+b; )main()int a,bs;a=0;

12、 b0=3;func(a, b); printf(“%d/n“, b0);(分数:2.00)A.6B.7C.8D.930.有以下程序:main()int a=1, b=3, c=5, *p;int *p1=a, *p2=b, *p3=c;*p= *p1*(*p2);printf(“%d/n“, *p);执行后的输出结果是( )。(分数:2.00)A.1B.2C.3D.431.下列程序执行后的输出结果是( )。main()char x=0xFFFF; printf(“%d/n“, x-); (分数:2.00)A.-32767B.FFFEC.-1D.-3276832.下列程序的输出结果是( )。m

13、ain()int p8=11, 12, 13, 14, 15, 16, 17, 18, i=0, j=0;while(i+7)if(pi%2)j+=pi;printf(“%d/n“, j);(分数:2.00)A.42B.45C.56D.6033.下列说法正确的是( )。(分数:2.00)A.在 C语言中,可以使用动态内存分配技术,定义元素个数可变的数组B.在 C语言中,数组元素的个数可以不确定,允许随机变动C.在 C语言中,数组元素的数据类型可以不一致D.在 C语言中,定义一个数组后,就确定了它所容纳的元素的个数34.若有下列定义和语句:int u=011,v=0x11,w=11;printf

14、(“%0, %x, %d/n“, u, v, w);则输出结果是( )。(分数:2.00)A.9,17,11B.9,11,11C.11,11,11D.11,17,1135.有以下程序:main()int i, j, x=0;for(i=0; i2; i+)x+;for(j=0; j=3; j+)if(j=0; j=3; j+)x+;x+;printf(“x=%d/n“, x);程序执行后的输出结果是( )。(分数:2.00)A.x=4B.x=8C.x=6D.x=1236.下列程序的输出结果是( )。#includestdio.h#includestring.hvoid fun(int b)st

15、atic int i=0;dobi+=bi+1;while(+i2);main()int k, a5=1, 3, 5, 4, 9;fun(a);for(k=0; k%5; k+)printf(“%d“, ak);(分数:2.00)A.13579B.48579C.48549D.4899937.表达式“0x11”的值是( )。(分数:2.00)A.0xFFEEB.0x71C.Ox0071D.OxFFEl38.以三级模式为框架形成的 3种数据库中,真实存在于计算机外存的数据库是( )。(分数:2.00)A.概念数据库B.用户数据库C.物理数据库D.逻辑数据库39.下列叙述中正确的是( )。(分数:2

16、.00)A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对40.下列程序的运行结果是( )。#includestdio.hmain()static char a=“Languagef“,b=“programe“;char *p1, *p2; int k;p1=a; p2=b;for(k=0; k=8; k+)if(*(p1+k)=*(p2+k)printf(“%c“, *(p1+k);(分数:2.00)A.gaeB.angC.programD.有语法错二、填空题(总题数:14,分数:30.00)41.长度为 n的顺序存储线性

17、表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动的元素的平均个数为 1。(分数:2.00)填空项 1:_42.软件设计模块化的目的是 1 程序设计的复杂性。(分数:2.00)填空项 1:_43.在算法的 4个特性中,算法必须能执行有限个步骤之后终止指的是算法的 1 特性。(分数:2.00)填空项 1:_44.设一棵完全二叉树共有 500个结点,则在该二又树中有 1 个叶子结点。(分数:2.00)填空项 1:_45.下列表达式用于判断 y是否为闰年。闰年的判断条件是:年号能被 4整除但不能被 100整除或年号能被 400整除,请填空。(分数:2.00)填空项 1:_46.若有定

18、义:“int a=10, b=9, c=8;”接着顺序执行下列语句后,变量 b中的值是_。c=(a-=(b-5);c=(a%11)+(b=3);(分数:2.00)填空项 1:_47.用以下语句调用库函数 malloc,使字符指针 st指向具有 11个字节的动态存储空间,请填空。st=(char*)_。(分数:2.00)填空项 1:_48.表达式 por(2.8,sqrt(float(x)值的数据类型为 1 型。(分数:2.00)填空项 1:_49.下列程序段的输出结果是_。int n=c;switch(n+)default: printf(“error“); break;casea: case

19、A: caseb: caseB: printf(“good“); break;casec: casec: printf(“pass“);cased: caseD: printf(“warn“);(分数:2.00)填空项 1:_50.以下程序的输出结果是_。main()int a=1, b=2;a=a+b; b=a=b; a=a=b;printf(“%d, %d/n“, a, b);(分数:2.00)填空项 1:_51.要求使下列程序输出 5个整数,请填空。for(i=0; i=_; printf(“%d/n“, i+=2); );(分数:2.00)填空项 1:_52.在宏定义#define P

20、I 3.14159 中,用宏名 PI代替一个_。(分数:2.00)填空项 1:_53.下列程序的输出结果是_。#includestdio.hsb(int s, int b)static int n=3;b=sn;n-;return(b);main()int s=1, 5, 6, 8;int i, x=0;for(i=0; i4; i+)x=sb(s, x);printf(“%d“, x);printf(“/n“);(分数:2.00)填空项 1:_下面 rotate函数的功能是:将 n行 n列的矩阵 A转置 A,例如当 (分数:4.00)填空项 1:_填空项 1:_二级 C语言笔试-338 答案

21、解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.设有以下语句:int a=1, b=2, c;c=a(b2);执行后,c 的值为( )。(分数:2.00)A.6B.7C.8D.9 解析:解析 本题考查两个知识点,按位异或和左移把 b左秽 2位化成二进制 c=a(b2)=a(0000102)=a001000=0000001001000=9,故选择 D。2.下列程序中 C的二进制值是( )。char a=2, b=4, c;c=ab2;(分数:2.00)A.00000011 B.00010100C.00011100D.00011000解析:解析 本题

22、主要考查右移运算和按位异或。把 b化为二进制数为 00000100,右移两位后为00000001,a 的二进制为 00000010,两者异或为 00000011。3.设“int x=2, y=1;”,则表达式(!x y-)的值是( )。(分数:2.00)A.0B.1 C.2D.-1解析:解析 因 x为 2,所以!x 时表达式值为 0,因 y为 1,y-表达式的值为 1然后自减 1,y 为 0,所以!xy-时表达武的值为 1。4.下列程序的输出的结果是( )。main()double d=3.2; int x, Y;x=1.2; y=(x+3.8)/5.0;printf(“%d/n“, d*y)

23、;(分数:2.00)A.3B.3.2C.0 D.3.07解析:解析 根据赋值运算的类型转换规则,先将 double型的常量 1.2转换为 int型,因为 x的类型是int,则 x的值为 1;执行语句 y=(x+3.8)/5.0时,即先将整型变量 x的值 1转换为 double型 1.0,然后3.8相加得 4.8,进行除法运算 4.8/5.0结果为 0,即变量 y的值为 0,d*y 的值也为 0,故选 C选项。5.函数 fseek()的正确调用形式是( )。(分数:2.00)A.fseek(位移量,起始点,文件类型指针);B.fseek(文件类型指针,位移量,起始点); C.fseek(文件类型

24、指针,起始点,位移量);D.fseek(起始点,位移量,文件类型指针);解析:解析 指针函数 fseek()的调用形式为:fseek(fp, offset, position); fseek 函数参数说明:“fp”是指向该文件的文件型指针;“offset”为位移量,是指从起始点 position到要确定的新位置的字节数。以起点为基准,向前移动字节数。“position”为起始点,指出以文件的什么位置为基准进行移动,posmon 的值用整型常数表示,“0”表示文件的开头,“1”表示文件的当前位置,“2”表示文件的末尾。6.为了避免在嵌套的条件语句 if else中产生二义性,C 语言规定,els

25、e 子句总是与( )配对。(分数:2.00)A.缩排位置相同 ifB.其前面最近的 if C.其后面最近的 ifD.同一行上的 if解析:解析 C 语言规定,在 ifelse语句中,else 总是与它前面的最近的 if配对。7.下列函数的类型是( )。fun(double x)float y;y=3*x=4;return y;(分数:2.00)A.intB.不确定C.void D.float解析:解析 本题考查函数值的类型。在函数调用时,尽管 y的类型是 float,x 的类型是 double,但是因为函数定义时没有指定类型说明,系统默认函数值的类型为 int型,所以计算后 y的类型是 int

26、型。8.若有以下程序段,w 和 k都是整型变量:w=k;LB: if(w=0)go to LE;W-;printf(“*“)goto LB;LE:则不能与上面程序段等价的循环语句是( )。(分数:2.00)A.for(w=k; w!=0; w-)printf(“*“);B.for(w=k; w; -w)printf(“*“);C.w=k;while(W-! =0)printf(“*“); D.w=k;w+; dow-; printf(“*“); )while(w!=0);解析:解析 当循环结束时,w 的值应为-1,而其他选项中 w的值为 0,故选择 C选项。9.设有下列程序段:char str

27、=“HelloWorld“;char *ptr;ptr=str;执行上面的程序段后,*(ptr+10)的值为( )。(分数:2.00)A./0 B.0C.不确定的值D.0的地址解析:解析 本题主要考查字符数组和指针,在 C语言中字符型数组在存放字符串时会自动在末尾加上/0,所以数组 str有 11个元素;ptr 指向数组 str的首地址,ptr+10 是指向 str10, *(ptr+10)是引用 str10的值。10.有以下程序:fun(int x)int p; if(x=0x=1)return(3);p=x-fun(x-2);return p;main()printf(“%d/n“, fu

28、n(7); 程序执行后的输出结果是( )。(分数:2.00)A.7B.3C.2 D.0解析:解析 在函数 fun(int x)中,有个 if语句判断如果参数 x等于 0或 1时,返回值;否则进入下面的 p=x-fun(x-z)递归函数。当在主函数中调用 fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5-fun(3)=7-(5=)3-fun(1)=7-(5-(3-3)=7-5=2”,所以最后的输出结果为 2。11.有下列程序:main()int y=10;doy-; )while(-y);printf(“%d/n“, -y);当执行程序时,输出的结果是( )。(分数:1.00

29、)A.-1B.1C.4D.0 解析:解析 本题考查 do-while循环。当-y 是 0(即 y是 0)时结束循环,输出-y 先将 y的值减 1再输出 y的值。12.有以下程序:void swap(char *x, char *y)char t;t= *x; *x *y; *y=t;main()char *s1=“abc“, *s2=“123“;swap(s1, s2);printf(“%s, %s/n“, s1, s2);程序执行后的输出结果是( )。(分数:1.00)A.123,abcB.abc,123C.1bc,a23 D.321,cba解析:解析 本题考查 swap函数,它的作用是把

30、x、y 所指的内容互换,其他的不变,因此当执行完调用函数后,仅仅a与1互换,其他的没有变。13.以下叙述中正确的是( )。(分数:1.00)A.预处理命令行必须位于 C源程序的起始位置B.在 C语言中,预处理命令行都以“#”开头 C.每个 C程序必须在开头包含预处理命令行:#includestdio.hD.C语言的预处理不能实现宏定义和条件编译的功能解析:解析 本题是对基本知识点的理解,预处理命令行的位置没有规定,只是习惯写在起始位置而已,当需要时才用#includestdio.h头文件,预处理的作用就是实现宏定义和条件编译。14.若有下列定义(设 int类型变量占 2个字节):int i=8

31、, j=9;则下列语句:printf(“i=%d, j=%d/n“, i, j);输出的结果是( )。(分数:1.00)A.i=8, j=9B.i=%d, i=%d C.i=%8, j=%9D.8,9解析:解析 本题考查函数的输出格式。在 printf函数,格式说明符中有两个“%”说明;将第 1个%后面的字符原样输出,并不输出其对应的变量值。15.下面程序的输出是( )。main()int t=1; fun(fun(t); fun(int h)static int a3=1,2,3;int k;for(k=0; k3; k+)ak+=ak=h;for(k=0; k3; k+)printf(“%

32、d“, ak);printf(“/n“);return(ah); (分数:1.00)A.1,2,3,1,5,9,B.1,3,5,1,3,5,C.1,3,5,0,4,8,D.1,3,5,-1,3,7, 解析:解析 本题考查双重函数调用及 for循环使用,fun 函数中第一个 for循环语句的作用是给数组a赋值。当第一次调用 fun函数时,把实参 1传给形参,输出 a数组的元素为 1,3,5;第二次调用 fun函数时,由于数组 a为静态局部变量,故输出 a数组的元素为-1,3,7。16.设在 C语言中,float 类型数据占 4个字节,则 double类型数据占( )个字节。(分数:1.00)A.

33、1B.2C.8 D.4解析:解析 在 C语言中各种数据类型在内存中所占的字节数与机器的位数有关,16 位机中(也就是在标准 C中),若 int类型上占 2个字节,则 float类型数据占 4个字节,double 类型数据占 8个字节。17.下述程序的运行结果是( )。#includestdio.h#includestring.hmain()char*s1=“abDuj“;char*s2=“ABdUG“;int t;t=strcmp(s1, s2);printf(“%d“, t);(分数:1.00)A.正数 B.负数C.零D.不确定的值解析:解析 本题考查字符串比较函数和两个字符串比较的原则两个

34、知识点。(1)两字符串比较的原则是依次比较两个字符串同一位置的一对字符,若它们的 ASCII码值相同,则继续比较下一对字符,若它们的 ASCII码值不同,则 ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部 i个字符与另一个字符串的前 i个字符相同,则字符串较长的较大。(2)strcmp(s1, s2)的返回值,当 str1str2 时,返回值为负数;当 str1=str2时,返回 0;当str1str2,返回值为正数。18.下列程序的运行结果为( )。#define MAX(x, y) (x)(y)?(x):(y)main()int a=2, b=

35、3, c=1, d=3, t;printf(“%d/n“, (MAX(a+b, c+d)*100);(分数:1.00)A.500 B.5C.4D.400解析:解析 本题考查带参数宏的定义,运算符:(x)(y)?(x):(y)当表达式为真时输出 x,否则输出y,调用(MAX(a+b,c+d)*100 时,(a+b=5)(c+d=4),所以输出 a+b=5,所以 x=5*100。19.下列叙述正确的是( )。(分数:1.00)A.C语言中的文件是流式文件,因此只能顺序存取数据B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C.在一个程序中当对文件进了写操作后,必须先关闭该文

36、件然后再打开,才能读到第 1个数据D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失 解析:解析 在 C语言中,文件的存取方式有两种;顺序存取和直接存取;如果以“a”的方式对已打开的文件进行写操作后,则原文件中内容将保存,新的数据写在原有内容之后。如果以“a+”的方式为读和写操作而打开文件,则可以对文件进行读写,而且在读和写操作之间不必关闭文件。可以从头开始读。当对文件的读(写)操作完成之后,必须将它关闭。20.按照“先进后出”原则组织数据的结构是( )。(分数:1.00)A.队列B.栈 C.双向链表D.二叉树解析:解析 栈是线性表的一种,其插入和删除运算都只在表的一端进行

37、。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,不是最后被删除,是按先进后出的原则组织数据的。21.下列选项中不属于软件生命周期开发阶段任务的是( )。(分数:2.00)A.软件测试B.概要设计C.软件维护 D.详细设计解析:解析 软件定义、软件开发、软件运行维护组成了软件的生命周期。其中软件定义阶段的主要工作是可行性研究与计划制订和需求分析等;软件开发阶段的主要工作有概要设计、详细设计和测试等;运行维护阶段的主要工作是软件的运行及后期的维护等。22.语句“printf(“a/bre“/hi/y/bou/n“)”;的输出结果是( )。(分数:2.00)A.a/b

38、re/hi/y/bouB.a/bre/hi/y/bouC.rehiyou D.abrehiy/bou解析:解析 先输出 a、b 表示退一格,当执行到:/b 后,光标往后退,接着输出 rehiy/(反斜杠后叉加一个反斜杠的意思是要输出一个反斜杠)此时又执行:/b 后/就被 ou覆盖。23.如果进栈序列为 e1、e2、e3、e4,则可能的出栈序列是( )。(分数:2.00)A.e3、e1、e4、e2B.e2、e4、e3、e1 C.e3、e4、e2D.任意顺序解析:解析 栈的特点是先进后出可知 e1肯定是最后出栈的,因此正确答案为选项 B。24.下列程序的运行结果是( )。int y=5, x=14

39、;y=(x=3*y, x+1), x=1);printf(“x=%d, y=%d“, x, y);(分数:2.00)A.x=27,y=27B.x=12,y=13C.x=15,y=14 D.x=y=27解析:解析 逗号表达式的解题思路是从左到右,依次求解,整个逗号表达式的值就是最后一个表达式的值。表达式(x=3*y, x+1)中,依次是 x=3*y=3*5=15,表达式 x+1=16,但没有给 x或 y赋值,所以 x还是等于15;第 3个表达式 x-1=15-1=14,所以 y的值为 14。25.一些重要的程序设计语言(如 C语言和 Pascal语言)允许过程的递归调用。而实现递归调用中的存储分

40、配通常用( )。(分数:2.00)A.栈 B.堆C.数组D.链表解析:解析 在允许过程的递归调用的程序设计语言中,由于 C语言中栈的特性为先进后出,因此用栈来实现递归调用中的存储分配。26.数据库管理系统 DBMS中用来定义模式、内模式和外模式的语言为( )。(分数:2.00)A.CB.BasicC.DDL D.DML解析:解析 数据定义语言 Data Definition Language(DDL,)是 SQL语言的一部分,用来定义模式、内模式和外模式。27.表达式5-1的值是( )。(分数:2.00)A.整数 4 B.字符 4C.表达式不合法D.字符 6解析:解析 在 C语言中,字符都是变

41、为其对应的 ASCII码值来参加算术运算的,但字符间的相对位置关系还是不变的字符 5和字符 1的 ASCII码值相差仍是 4。28.下面的函数调用语句中 func函数的实参个数是( )。func(f2v1, v2), (v3, v4, v5), (v6, max(v7, v8)(分数:2.00)A.3 B.4C.5D.8解析:解析 实参是在调用时传递该函数的参数。故选 A。29.下列程序执行后的输出结果是( )。void func(int *a, int b)b0=*a+b; )main()int a,bs;a=0; b0=3;func(a, b); printf(“%d/n“, b0);(分

42、数:2.00)A.6 B.7C.8D.9解析:解析 本题考查函数的调用当从主函数传递到调用函数中,*a 的值为 0,因此当执行完调用函数后,b0的值为 6。30.有以下程序:main()int a=1, b=3, c=5, *p;int *p1=a, *p2=b, *p3=c;*p= *p1*(*p2);printf(“%d/n“, *p);执行后的输出结果是( )。(分数:2.00)A.1B.2C.3 D.4解析:解析 本题中指针 p1、p2、p3 指向 a、b、c 值所存放的地址空间。然后再将指针交量*p1、*p2中值的乘积赋给指针变量*p,即赋给变量 c,输出 c的值 3。31.下列程序

43、执行后的输出结果是( )。main()char x=0xFFFF; printf(“%d/n“, x-); (分数:2.00)A.-32767B.FFFEC.-1 D.-32768解析:解析 因为 x=0x FFFF=11111111,因此当以整型形式输出时对应的数为-1。32.下列程序的输出结果是( )。main()int p8=11, 12, 13, 14, 15, 16, 17, 18, i=0, j=0;while(i+7)if(pi%2)j+=pi;printf(“%d/n“, j);(分数:2.00)A.42B.45 C.56D.60解析:解析 C 语言中,数组的下标默认为 0,因

44、此数组 p的下标从 0开始,所以 p8的范围为 07。第 1次循环 i=0,执行循环,得出 i=1,因此 pi为 p1=12,12%2=0,不执行后面的语句;接着进行第2次循环,此时 i=1,小于 7执行循环,并且 i自加,得 i=2,因此 pi为 p2=13,13%2=1,执行后面的语句;依此类推最后退出循环。最后 j的值为:j=13+15+17=45。33.下列说法正确的是( )。(分数:2.00)A.在 C语言中,可以使用动态内存分配技术,定义元素个数可变的数组B.在 C语言中,数组元素的个数可以不确定,允许随机变动C.在 C语言中,数组元素的数据类型可以不一致D.在 C语言中,定义一个

45、数组后,就确定了它所容纳的元素的个数 解析:解析 在 C语言中,数组元素的个数是确定的,不允许随机变动,数组定义好后,它所能容纳的元素的个数也就确定了,并且同一个数组中所有元素都是同一类型。34.若有下列定义和语句:int u=011,v=0x11,w=11;printf(“%0, %x, %d/n“, u, v, w);则输出结果是( )。(分数:2.00)A.9,17,11B.9,11,11C.11,11,11 D.11,17,11解析:解析 “%o”表示八进制无符号型输出整型数据(即不带前导 0);“%x”表示以十六进制无符号型输出整型数据(即不带前导 0x或 0X);“%d”表示输出带

46、符号的十进制整型数。35.有以下程序:main()int i, j, x=0;for(i=0; i2; i+)x+;for(j=0; j=3; j+)if(j=0; j=3; j+)x+;x+;printf(“x=%d/n“, x);程序执行后的输出结果是( )。(分数:2.00)A.x=4B.x=8 C.x=6D.x=12解析:解析 当 i=0时,i2 成立,执行第一个 for循环 x自加为 1。接着执行第二个 for循环;j=0时 j=3 成立,此时 if不成立,执行 x+后,x 为 2;接着 j=1时,j=3 成立,继续循环,此时 if成立,continue是跳出本次循环,继续下一次循环

47、,不再执行 x+了;接着 j=2时,j=3 成立,此时 if不成立,执行其后的语句;当 j=4时,退出第二个循环,接着执行循环外部的 x+,x 为 4;当 i=1时,i2成立,执行第一个循环,x=5,此时接着执行循环外部的语句,即第二个循环;j=0 时 j3 成立,此时 if不成立,x+后,x 为 6,接着 j为 1时,j=3 成立,继续循环,此时 if成立,不再执行 x+了;接着j=2时,j=3 成立,此时 if不成立,执行其后的 x+,x 为 7;j=3 时,j=3 成立,此时 if成立,不再执行其后的语句了;当 j=4时,退出第二个循环,执行循环外部的语句,最终 x为 8,故选 B选项。36.下列程序的输出结果是( )。#includestdio.h#includestring.hvoid fun(int b)static int i=0;dobi+=bi+1;while(+i2);main()int k, a5=1, 3, 5, 4, 9;fun(

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

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

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