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

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

1、二级 C 语言笔试-401 及答案解析(总分: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.对长度为 n 的线性表进行顺序查找,在最坏情况下需要比较的

2、次数为A) log2n B) n2 C) n D) n+1(分数:1.00)A.B.C.D.4.下列选项中不符合良好程序设计风格的是A) 数据说明的次序要规范化B) 程序中要有必要的注释C) 对所有输入的数据都要进行检查,确保数据的合法性D) 程序的效率第一,清晰第二(分数:1.00)A.B.C.D.5.程序流程图(PFD) 中的菱形代表的是A) 数据流 B) 控制流C) 加工步骤 D) 逻辑条件(分数:1.00)A.B.C.D.6.在软件开发中,需求分析阶段产生的主要文档是A) 软件需求规格说明书 B) 数据库说明书C) 集成测试计划 D) 概要设计说明书(分数:1.00)A.B.C.D.7

3、.下列选项中属于软件生命周期中开发阶段任务的是A) 详细设计 B) 运行维护C) 可行性研究 D) 需求分析(分数:1.00)A.B.C.D.8.数据库管理系统中负责数据完整性、安全性定义的语言是A) 数据定义语言 B) 数据管理语言C) 数据操纵语言 D) 数据控制语言(分数:1.00)A.B.C.D.9.“商品”与“顾客”两个实体集之间的联系一般是A) 一对一 B) 多对一 C) 一对多 D) 多对多(分数:1.00)A.B.C.D.10.有三个关系 R,S 和 T 如下图,其中关系 T 由关系 R 和 S 通过某种操作得到,该操作为(分数:1.00)A.B.C.D.11.下面各选项中,均

4、是 C 语言合法标识符的选项是A) 33 we auto B) _23 me _3ewC) _43 3e_ else D) ER -DF 32(分数:1.00)A.B.C.D.12.以下不合法的字符常量是A) /“ B) /018 C) /xcc D) /(分数:1.00)A.B.C.D.13.阅读以下程序:#include stdio.hmain()int case;float printF;printf(“请输入 2 个数:“);scanf(“%d%f“,printf(“%d%f/n“,case,printF);该程序在编译时产生错误,其出错原因是A) 定义语句出错,case 是关键字,不

5、能用作用户自定义标识符B) 定义语句出错,printF 不能用作用户自定义标识符C) 定义语句无错,scanf 不能作为输入函数使用D) 定义语句无错,printf 不能输出 case 的值(分数:1.00)A.B.C.D.14.以下选项中正确的定义语句是A) double a;b; B) double a=b=7;C) double a=7,b=7; D) double,a,b;(分数:1.00)A.B.C.D.15.现有格式化输入语句,scanf(“x=%d,sumy=%d,linez=%dL“, B) scanf(“%d%d%d“,C) scanf(“%d%d%d“,x,y,z); D)

6、 read(“%d%d%d“,(分数:1.00)A.B.C.D.17.下列程序段的输出结果是int n=c;switch(n+)default: printf(“error“);break;case a: case A: case b: case B: printf(“good“);break;case c: case C: printf(“pass“);case d: case D: printf(“warn“);A) passwarn B) passerror C) goodpasswarn D) pass(分数:1.00)A.B.C.D.18.已知int x=0;while(x=1)则以

7、下叙述正确的是A) 循环控制表达式不合法 B) 循环控制表达式的值为 0C) 循环控制表达式的值为 1 D) 以上说法都不对(分数:1.00)A.B.C.D.19.若变量已正确定义,有以下程序段:i=0;do printf(“%d,“,i); while(i+);printf(“%d/n“,i);其输出结果是A) 0,0 B) 0,1C) 1,1 D) 程序进入无限循环(分数:1.00)A.B.C.D.20.有以下程序:main()int i,j;or(i=1;i4;i+)for(j=i;j4;j+)printf(“%d*%d=%d“,i,j,i*j);printf(“/n“);程序运行后的输

8、出结果是A) 1*1=1 1*2=2 1*3=3 2*1=2 2*2=43*1=3B) 1*1=1 1*2=2 1*3=32*2=4 2*3=63*3=9C) 1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9D) 1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9(分数:1.00)A.B.C.D.21.若变量 x、y 已正确定义并赋值,以下符合 C 语言语法的表达式是A) +x, y=x- B) x+1=y C) x-x+10=x+y D) double(x)/10(分数:1.00)A.B.C.D.22.下列选项中,能正确定义数组的语句是A) int num0

9、2008; B) int num;C) int N=2008; int numN; D) #define N 2008int numN;(分数:1.00)A.B.C.D.23.以下能正确定义赋初值的语句是A) int n1=n2=10; B) char c=32;C) float f=f+1.1; D) double x=12.3E2.5;(分数:1.00)A.B.C.D.24.若已定义 x 和 y 为 double 类型,则表达式 x=1,y=x+5/2 的值是A) 2 B) 3.0 C) 3 D) 3.5(分数:1.00)A.B.C.D.25.如果 int c=3,d=4,k=0,下列描述

10、正确的是A) cd!=k 和 c(d!=k)的执行顺序是一样的B) cprintf(“s=d%/n“,s);则程序运行后的输出结果是A) t B) t*10 C) t*100 D) t+10(分数:1.00)A.B.C.D.29.若有定义 int a9,*p=a;,则 p+5 表示A) 数组元素 a5的值 B) 数组元素 a5的地址C) 数组元素 a6的地址 D) 数组元素 a0的值加上 5(分数:1.00)A.B.C.D.30.以下结构体类型说明和变量定义中正确的是A) typedef structint n;char c; REC;REC t1,t2;B) struct REC;int n

11、;char c;REC t1,t2;C) typedef struct REC; int n=0; char c=A;t1,t2;D) structint n;char c;REC;REC t1,t2;(分数:1.00)A.B.C.D.31.有下面程序段:#include “stdio.h“#include “string.h“main()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);则程序段的输出结果

12、是A) 18 B) 19 C) 20 D) 21(分数:1.00)A.B.C.D.32.设 p1 和 p2 是指向一个 int 型一维数组的指针变量,k 为 int 型变量,则不能正确执行的语句是A) k=*p1+*p2 B) p2=k;C) p1=p2; D) k=*p1*(*p2);(分数:1.00)A.B.C.D.33.下列函数的功能是fun(char*a,char*b)while(*b=*a)!=/O) a+;b+;A) 将 a 所指字符串赋给 b 所指空间B) 使指针 b 指向 a 所指字符串C) 将 a 所指字符串和 b 所指字符串进行比较D) 检查 a 和 b 所指字符串中是否有

13、/0(分数:1.00)A.B.C.D.34.有以下程序:#include stdio.h#include string.hmain()char x=“STRING“;x0=0;x1=/0;x2=0;printf(“%d%d/n“ ,sizeof(x),strlen(x);程序运行后的输出结果是A) 6 1 B) 7 0 C) 6 3 D) 7 1(分数:1.00)A.B.C.D.35.以下程序的输出结果是int f()static int i=0;int s=1;s+=i;i+;return s;main()int i,a=0;for(i=0;i5;i+)a+=f();printf(“%d/n

14、“,a);A) 20 B) 24 C) 25 D) 15(分数:1.00)A.B.C.D.36.若有语句:char *line5;,以下叙述中正确的是A) 定义 line 是一个数组,每个数组元素是一个基类型为 char 的指针变量B) 定义 line 是一个指针变量,该变量可以指向一个长度为 5 的字符型数组C) 定义 line 是一个指针数组,语句中的*号称为间址运算符D) 定义 line 是一个指向字符型函数的指针(分数:1.00)A.B.C.D.37.有以下程序:#include stdio.h#include string.hvoid fun( char *s, int n)char

15、 *t;int i,j;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(strlen(si)strlen(sj) t=si;si=sj;sj=t;main()char *ss=“bcc“,“bbcc“,“xy“,“aaaacc“,“aabcc“;fun(ss,5);printf(“%s,%s/n“,ss0,ss4);程序的运行结果是A) xy, aaaacc B) aaaacc,xy C) bcc,aabcc D) aabcc,bcc(分数:1.00)A.B.C.D.38.有以下程序:#include stdio.hvoid fun(int p)int d=2;p=d+;

16、 printf(“%d“,p);main()int a=1;fun(a);printf(“%d/n“,a);程序运行后的输出结果是A) 32 B) 12 C) 21 D) 22(分数:1.00)A.B.C.D.39.有以下程序#include stdio.h#include stdlib.hmain()int *a,*b,*c;a=b=c=(int *)malloc(sizeof(int);*a=1;*b=2,*c=3;a=b;printf(“%d,%d,%d/n“,*a,*b,*c);程序运行后的输出结果是A) 3,3,3 B) 2,2,3 C) 1,2,3 D) 1,1,3(分数:1.00

17、)A.B.C.D.40.设有以下语句:char x=3,y=6,2;z=xy2;则 z 的二进制值是A) 00010100 B) 00011011C) 00011100 D) 00011000(分数:1.00)A.B.C.D.二、填空题(总题数:13,分数:60.00)41.设循环队列的容量为 55,如果头指针 front=50(指向队头元素的前一位置),尾指针 rear=15(指向队尾),则该循环队列中共有 1 个元素。(分数:4.00)填空项 1:_42.深度为 7 的满二叉树中,叶子结点的个数为 1。(分数:4.00)填空项 1:_43.仅由 1、选择(分支)和重复(循环)结构构成的程序

18、是结构化程序。(分数:4.00)填空项 1:_44.常用的黑盒测试方法有等价类划分法、 1 和错误推测法 3 种。(分数:4.00)填空项 1:_45.数据库系统在其内部分为概念模式、内模式和外模式。其中 1 给出了数据库物理存储结构与物理存取方法。(分数:4.00)填空项 1:_46.阅读下面程序,则执行后的输出结果是_。#include “stdio.h“main()int x,y,z;x=1;y=2;z=3;if(xy) if(xz) printf(“%d“,x);else printf(“%d“,y);printf(“%d/n“,z);(分数:4.00)填空项 1:_47.以下程序的运

19、行结果是_。#include stdio.hlong fib(int g)switch(g)case 0: return 0;case 1:case 2: return1;return(fib(g-1)+fib(g-2);main()long k;k=fib(5);printf(“k=%5ld/n“,k);(分数:4.00)填空项 1:_以下程序的功能是调用函数 fun 计算:m=1-2+3-4+9-10,并输出结果,请填空。int fun(int n)int m=0,f=1,i;for(i=1;i=n;i+)m+=i*f;f=_;return m;main() printf(“m=%d/n“

20、,_);(分数:8.00)填空项 1:_填空项 1:_48.有以下程序:#include stdio.hstruct STUint num;float TotalScore;void f(struct STU p)struct STU s2=20044,550,20045,537;p.num=s1.num; p.TotalScore=s1.TotalScore;main()struct STU s2=20041,703,20042,580;f(s0);printf(“%d%3.0f/n“,s0.num, s0.TotalScore);程序运行后的输出结果是_。(分数:4.00)填空项 1:_4

21、9.有以下程序:#include stdio.hmain()int a33=1,2,3,4,5,6,7,8,9;int b3=0,i;for(i=0;i3;i+) bi=ai2+a2i;for(i=0;i3;i+) printf(“%d“,bi);printf(“/n“);程序运行后的输出结果是_。(分数:4.00)填空项 1:_50.以下程序中函数 f 的功能是在数组 x 的 n 个数(假定 n 个数互不相同)中找出最大数和最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。#include stdio.hvoid f(int x, int n)int p0,p1,i,

22、j,t,m;i=j=x0;p0=p1=0;for(m=0;mn;m+)if(xmi) i=xm;p0=m;else if(xmj) j=xm;p1=m;t =xp0;xp0=xn-1;xn-1=t;t=xp1;xp1=x0;_=t;main()int a10,u;for(u=0;u10;u+) scanf(“%d“,f(a,10);for(u=0;u10;u+)printf(“%d“,au);printf(“/n“);(分数:4.00)填空项 1:_51.有以下程序:#include stdio.hint a=5;void fun(int b)int a=10;a+=b;printf(“%d“

23、,a);main()int c=20;fun(c);a+=c;printf(“%d/n“,a);程序运行后的输出结果是_。(分数:4.00)填空项 1:_以下程序打开新文件 f.txt,并调用字符输出函数将 a 数组中的字符写入其中,请填空。#include stdio.hmain()_*fp;char a5=1,2,3,4,f5,i;f=fopen(“_“,“w“);for(i=0;15;i+)fputc(ai,fp);fclose(fp);(分数:8.00)填空项 1:_填空项 1:_二级 C 语言笔试-401 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,

24、分数:40.00)1.下列叙述中正确的是A) 一个算法的空间复杂度大,则其时间复杂度也必定大B) 一个算法的空间复杂度大,则其时间复杂度必定小C) 一个算法的时间复杂度大,则其空间复杂度必定小D) 上述三种说法都不对(分数:1.00)A.B.C.D. 解析:解析 算法的复杂度主要包括时间复杂度和空间复杂度。算法的时间复杂度是指执行算法所需要的计算工作量,可以用执行算法过程中所需基本运算的执行次数来度量;算法的空间复杂度是指执行这个算法所需要的内存空间。根据各自的定义可知,算法的时间复杂度与空间复杂度并不相关。2.下列关于栈的描述错误的是A) 栈按“先进后出”组织数据B) 栈是特殊的线性表,只能

25、在一端插入或删除数据C) 栈具有记忆功能D) 栈只能顺序存储(分数:1.00)A.B. C.D.解析:解析 栈是限定在一端进行插入与删除的线性表,允许插入和删除元素的一端称为栈顶,另一端称为栈底。栈顶元素是最后被插入的元素,也是最先被删除的元素,即栈是按照“先进后出”的原则组织数据的。栈具有记忆功能,带链的栈的结点存储顺序与其逻辑顺序可以不一致。3.对长度为 n 的线性表进行顺序查找,在最坏情况下需要比较的次数为A) log2n B) n2 C) n D) n+1(分数:1.00)A.B.C. D.解析:解析 对线性表进行顺序查找,最坏的情况是待查数据在表中不存在,所以比较的次数与表中的元素一

26、样多。4.下列选项中不符合良好程序设计风格的是A) 数据说明的次序要规范化B) 程序中要有必要的注释C) 对所有输入的数据都要进行检查,确保数据的合法性D) 程序的效率第一,清晰第二(分数:1.00)A.B.C.D. 解析:解析 当今主导的程序设计风格是“清晰第一,效率第二”的观点。结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,而实际应用中,人们更重视程序的可理解性。5.程序流程图(PFD) 中的菱形代表的是A) 数据流 B) 控制流C) 加工步骤 D) 逻辑条件(分数:1.00)A.B.C.D. 解析:解析 程序流程图是软件设计过程中常用的图形描述工具之一。构成程序流程图的最基本

27、符号有:“”或“”,表示控制流;“口”,表示加工步骤;“”,表示逻辑条件。6.在软件开发中,需求分析阶段产生的主要文档是A) 软件需求规格说明书 B) 数据库说明书C) 集成测试计划 D) 概要设计说明书(分数:1.00)A. B.C.D.解析:解析 软件需求规格说明书是需求分析阶段最后的成果,它是作为需求分析的一部分而制定的可交付文档。概要设计说明书、数据库说明书、集成测试计划都是概要设计阶段需要编写的文档。7.下列选项中属于软件生命周期中开发阶段任务的是A) 详细设计 B) 运行维护C) 可行性研究 D) 需求分析(分数:1.00)A. B.C.D.解析:解析 软件生命周期分为软件定义、软

28、件开发及软件运行维护 3 个阶段。定义阶段包括问题定义、可行性研究和需求分析,开发阶段包括概要设计、详细设计、实现和测试,运行维护即软件的运行和维护。8.数据库管理系统中负责数据完整性、安全性定义的语言是A) 数据定义语言 B) 数据管理语言C) 数据操纵语言 D) 数据控制语言(分数:1.00)A.B.C.D. 解析:解析 数据定义语言负责数据的模式定义和数据的物理存取构建;数据操纵语言负责数据的操纵;数据控制语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。无数据管理语言的说法。9.“商品”与“顾客”两个实体集之间的联系一般是A) 一对一 B) 多对一 C) 一对多 D)

29、 多对多(分数:1.00)A.B.C.D. 解析:解析 “商品”与“顾客”两个实体集之间的买与被买联系是多对多的,因为一种商品可以被多个顾客购买,而一个顾客可以买多个商品。10.有三个关系 R,S 和 T 如下图,其中关系 T 由关系 R 和 S 通过某种操作得到,该操作为(分数:1.00)A.B.C.D. 解析:解析 两个相同结构关系的并是由属于这两个关系的元组组成的集合。11.下面各选项中,均是 C 语言合法标识符的选项是A) 33 we auto B) _23 me _3ewC) _43 3e_ else D) ER -DF 32(分数:1.00)A.B. C.D.解析:解析 合法的标识

30、符由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,用户定义的标识符不能与关键字相同。选项 A),数字不能为第一个字母,auto 为关键字;选项 C)中,也是数字不能为第一个字母,else 为关键字;选项 D)中负号不合法。12.以下不合法的字符常量是A) /“ B) /018 C) /xcc D) /(分数:1.00)A.B. C.D.解析:解析 在 C 语言中,用单引号扩起来的一个字符表示字符常量,转义字符由反斜杠“/”+特定字符组成。选项 B)表示是八进制数码,出现 8 属于非法字符,所以正确答案是选项 B)。13.阅读以下程序:#include stdio.hmain()in

31、t case;float printF;printf(“请输入 2 个数:“);scanf(“%d%f“,printf(“%d%f/n“,case,printF);该程序在编译时产生错误,其出错原因是A) 定义语句出错,case 是关键字,不能用作用户自定义标识符B) 定义语句出错,printF 不能用作用户自定义标识符C) 定义语句无错,scanf 不能作为输入函数使用D) 定义语句无错,printf 不能输出 case 的值(分数:1.00)A. B.C.D.解析:解析 标识符不能与 C 编译系统已经预定义的、具有特殊用途的保留标识符(即关键字)同名,否则程序在编译时会出现错误。题目源程序

32、中使用了已经预定义的关键字 case,所以将出现错误。14.以下选项中正确的定义语句是A) double a;b; B) double a=b=7;C) double a=7,b=7; D) double,a,b;(分数:1.00)A.B.C. D.解析:解析 定义变量 a 和变量 b 为 double 类型,并对其赋初值。变量之间应以“,”分隔,定义关键字与变量名之间应以空格分隔,语句应以“;”结尾。15.现有格式化输入语句,scanf(“x=%d,sumy=%d,linez=%dL“, B) scanf(“%d%d%d“,C) scanf(“%d%d%d“,x,y,z); D) read(

33、“%d%d%d“,(分数:1.00)A.B. C.D.解析:解析 本题考查格式输入函数 scanf 的使用。scanf 函数的一般格式是:scanf(格式控制,地址表列),该格式中,地址表列中应是变量地址,而不是变量名。17.下列程序段的输出结果是int n=c;switch(n+)default: printf(“error“);break;case a: case A: case b: case B: printf(“good“);break;case c: case C: printf(“pass“);case d: case D: printf(“warn“);A) passwarn

34、B) passerror C) goodpasswarn D) pass(分数:1.00)A. B.C.D.解析:解析 本题的考查点是 switch()语句。当用户输入的字符时,会进入一个多分支选择语句,根据n 的值,来确定下一步执行的选择语句;最后的结果应当为 passwarn。本题需要注意的是,当 case 语句没有跟随 break 语句时,不会跳出 switch,而是继续执行下一个 case 语句,直至遇到 break 语句。18.已知int x=0;while(x=1)则以下叙述正确的是A) 循环控制表达式不合法 B) 循环控制表达式的值为 0C) 循环控制表达式的值为 1 D) 以上

35、说法都不对(分数:1.00)A.B.C. D.解析:解析 x=1 是将 x 赋值为 1,所以循环控制表达式的值为 1。判断 x 是否等于 1 时,应用 x=1,注意“=”与“=”的用法。19.若变量已正确定义,有以下程序段:i=0;do printf(“%d,“,i); while(i+);printf(“%d/n“,i);其输出结果是A) 0,0 B) 0,1C) 1,1 D) 程序进入无限循环(分数:1.00)A.B. C.D.解析:解析 对于 dowhile 循环,程序先执行一次循环体,再判断循环是否继续。本题先输出一次 i的值“0,”,再接着判断表达式 i+的值,其值为 0,所以循环结

36、束。此时变量 i 的值经过自加已经变为1,程序再次输出 i 的值“1”。20.有以下程序:main()int i,j;or(i=1;i4;i+)for(j=i;j4;j+)printf(“%d*%d=%d“,i,j,i*j);printf(“/n“);程序运行后的输出结果是A) 1*1=1 1*2=2 1*3=3 2*1=2 2*2=43*1=3B) 1*1=1 1*2=2 1*3=32*2=4 2*3=63*3=9C) 1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9D) 1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9(分数:1.00)A.B. C.D.

37、解析:解析 本题考查的是循环嵌套。在一个循环体内又完整地包含了另一个循环,称为循环嵌套。外循环 i 的值分别为 1、2、3,当 i=1,内循环 j=1 时,输出 1*1=1;当内循环 j=2 时,输出 1*2=2;当内循环 j=3 时,输出 1*3=3,此时跳出内层循环,打印换行符“/n”。当 i=2,内循环 j=2 时,输出 2*2=4;当内循环 j=3 时,输出 2*3=6,此时跳出内层循环,打印换行符“/n”。当 i=3,内循环 j=3 时,输出3*3=9。21.若变量 x、y 已正确定义并赋值,以下符合 C 语言语法的表达式是A) +x, y=x- B) x+1=y C) x-x+10

38、=x+y D) double(x)/10(分数:1.00)A. B.C.D.解析:解析 赋值表达式左边必须是一个变量,而选项 B)、C)中赋值号左边都是表达式,选项 D)进行强制类型转换时,应写为(double)x/10。22.下列选项中,能正确定义数组的语句是A) int num02008; B) int num;C) int N=2008; int numN; D) #define N 2008int numN;(分数:1.00)A.B.C.D. 解析:解析 选项 A)不符合 C 语言的语法要求;选项 B,中没有指定数组的大小;选项 C)中数组的大小不能用变量来指定。23.以下能正确定义赋

39、初值的语句是A) int n1=n2=10; B) char c=32;C) float f=f+1.1; D) double x=12.3E2.5;(分数:1.00)A.B. C.D.解析:解析 A)选项表达式本身就错误,不能给表达式赋值。C)选项中不能让变量 f 给 f 赋值。D)选项不是正确的浮点数表示形式。所以,本题答案为 B)。24.若已定义 x 和 y 为 double 类型,则表达式 x=1,y=x+5/2 的值是A) 2 B) 3.0 C) 3 D) 3.5(分数:1.00)A.B. C.D.解析:解析 题目中定义变量 x 和 y 为双精度 double 类型,根据给定算数表达

40、式的优先级应先计算5/2,结果为 2,将值代入后,y 的值由 x 和 y 的数据类型得出结果为 3.0,整个逗号表达式的值为后y=x+5/2 的值,即 3.0。25.如果 int c=3,d=4,k=0,下列描述正确的是A) cd!=k 和 c(d!=k)的执行顺序是一样的B) cprintf(“s=d%/n“,s);则程序运行后的输出结果是A) t B) t*10 C) t*100 D) t+10(分数:1.00)A.B. C.D.解析:解析 1、12、123、1234、12345 可以写成1=0*10+1、12=1*10+2、123=12*10+3、123=123*10+4、12345=1

41、234*10+5按照这种规律后一项可以等于前一项乘以 10 再加上循环变量。这属于循环里面比较难的题目,需要考生找出其数据的内在规律,并转化为计算机语言,基本上都是累加和累积两种。29.若有定义 int a9,*p=a;,则 p+5 表示A) 数组元素 a5的值 B) 数组元素 a5的地址C) 数组元素 a6的地址 D) 数组元素 a0的值加上 5(分数:1.00)A.B. C.D.解析:解析 本题考查了通过指针来引用一维数组元素的方法。题中*p=a;这一赋值语句是指针 p 指向了数组 a 的首地址,p+5 是指针 p 向后移动了 5 个 int 类型的存储单元,所以 p+5 指向了数组元素

42、a5。30.以下结构体类型说明和变量定义中正确的是A) typedef structint n;char c; REC;REC t1,t2;B) struct REC;int n;char c;REC t1,t2;C) typedef struct REC; int n=0; char c=A;t1,t2;D) structint n;char c;REC;REC t1,t2;(分数:1.00)A. B.C.D.解析:解析 本题考查的是 typedef 的用法和结构体变量的定义方法。typedef 可用于声明结构体类型,其格式为“typedef struct结构元素定义结构类型;”。本题正确答

43、案为 A)。31.有下面程序段:#include “stdio.h“#include “string.h“main()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.B. C.D.解析:解析 字符串连接函数 strcat 的调用形式:str-cat(s1,s2)。此函数将 s2 所指字符串的内容连接到 s1 所指字符串

44、后面,并自动覆盖 s1 字符串末尾的尾标,函数返回 s1 的地址值。本题中首先将二维数组中各行的字符串都复制到了指针 p 所指向的堆数但 k 的地址空间,然后用 strcat 函数求出 k 数但的长度;即 19。32.设 p1 和 p2 是指向一个 int 型一维数组的指针变量,k 为 int 型变量,则不能正确执行的语句是A) k=*p1+*p2 B) p2=k;C) p1=p2; D) k=*p1*(*p2);(分数:1.00)A.B. C.D.解析:解析 本题主要考查了一维数组指针的赋值和用指针引用数组元素进行运算。选项 B)中 p2 为指向 int 型变量的指针,而 k 为 int 型

45、变量,不能将 int 型变量直接赋值给指向 int 型变量的指针,所以选项 B)错误,应为 p2=82k。33.下列函数的功能是fun(char*a,char*b)while(*b=*a)!=/O) a+;b+;A) 将 a 所指字符串赋给 b 所指空间B) 使指针 b 指向 a 所指字符串C) 将 a 所指字符串和 b 所指字符串进行比较D) 检查 a 和 b 所指字符串中是否有/0(分数:1.00)A. B.C.D.解析:解析 表达式*b=*a 是将 a 所指的字符赋给 b 所指的空间,然后,指针 a 和 b 依次后移,直到到达指针 a 所指字符串的结尾。34.有以下程序:#include

46、 stdio.h#include string.hmain()char x=“STRING“;x0=0;x1=/0;x2=0;printf(“%d%d/n“ ,sizeof(x),strlen(x);程序运行后的输出结果是A) 6 1 B) 7 0 C) 6 3 D) 7 1(分数:1.00)A.B. C.D.解析:解析 sizeof 是返回字符串在内存中所占用的空间,是真正的长度。strlen 是返回字符串的长度,strlen 遇到/0就结束,而且不包括/0。程序中 x0=0,给数组的第一个元素赋值为 0,所以 strlen返回 0。因此答案为 B)。35.以下程序的输出结果是int f()

47、static int i=0;int s=1;s+=i;i+;return s;main()int i,a=0;for(i=0;i5;i+)a+=f();printf(“%d/n“,a);A) 20 B) 24 C) 25 D) 15(分数:1.00)A.B.C.D. 解析:解析 函数的静态局部变量在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。36.若有语句:char *line5;,以下叙述中正确的是A) 定义 line 是一个数组,每个数组元素是一个基类型为 char 的指针变量B) 定义 line 是一个指针变量,该变量可以指向一个长度为 5 的字符型数组C) 定义 line 是一个指针数组,语句中的*号称为间址运算符D) 定义 line 是一个指向字符型函数的指针(分数:1.00)A. B.C.D.解析:解析 C 语言中比*优先级高,因此 line

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

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

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