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

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

1、二级 C 语言分类模拟题 566 及答案解析(总分:43.50,做题时间:90 分钟)一、选择题(总题数:30,分数:43.50)1.若有以下定义和语句 #include stdio.h char s110=“abcd!“,*s2=“/n123/“; printf(“%d%d/n“,strlen(s1),strlen(s2); 则输出结果是_。(分数:1.00)A.10 7B.10 5C.5 5D.5 82.有以下程序: #include stdio.h main( ) int a =2,4,6,8, *p=a,i; for(i=0;i4;i+) ai=*p+; printf(“%d/n“,a

2、2); 程序的输出结果是_。(分数:1.00)A.2B.8C.4D.63.下列叙述中正确的是_。(分数:1.00)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定4.以下叙述中正确的是_。(分数:1.00)A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然

3、后再打开,才能读到第 1 个数据D.C 语言中的文件是流式文件,凶此只能顺序存取数据5.有以下程序: #include stdio.h #define N 2 #define M N+1 #define NUM (M+1) * M/2 main( ) printf(“%d/n“,NuM); 程序运行后的输出结果是_。(分数:5.00)A.4B.8C.9D.66.下列程序段正确的是_。(分数:1.00)A.#include stdio.hmain() int i, j;int(i)=j;B.#include stdioh;main()C.include stdiohmain() int i, j

4、;D.#include stdiohmain()7.以下叙述中正确的是_。(分数:2.00)A.在 C 语言中,逻辑真值和假值分别对应 1 和 0B.关系运算符两边的运算对象可以是 C 语言中任意合法的表达式C.对于浮点变量 x 和 y,表达式:x= =y 是非法的,会出编译错误D.分支结构是根据算术表达式的结果来判断流程走向的8.设有以下函数:void fun(int n,char*s).,则下列对函数指针的定义和赋值均正确的是_。(分数:1.50)A.void(*pf)(int,char);pf=B.void*pf();pf=fun;C.void*pf();*pf=fun;D.void(*

5、pf)(int,char*);pf=fun;9.有以下程序: #includestdio.h main() int a=0,b=0; for(;a5;a+) if(a%2=0)continue; b+=a; break; printf(“%d/n“,b); 程序运行后的输出结果是_。(分数:1.00)A.1B.4C.0D.1010.若有以下程序: #include stdio.h int *f(int *s,int *t) int *k; if(*s*t) k=s; s=t; t=k; return s; main( ) int i=3,j=5, *p= r=f(p,q); printf(“%

6、d,%d,%d,%d,%d/n“,i,j,*p,*q,*r); 则程序的输出结果是_。(分数:2.00)A.3,5,5,3,5B.3,5,3,5,5C.5,3,5,3,5D.5,3,3,5,511.C 语言函数返回值的类型是由_决定的。(分数:1.00)A.return 语句中的表达式类型B.调用函数的主调函数类型C.调用函数时临时D.定义函数时所指定的函数类型12.有以下程序: #includestdio.h main() char ch=“B“; while(ch“E“) pfintf(“%d“,ch-“A“); ch+; printf(“/n“); 程序运行后的输出结果是_。(分数:1.

7、00)A.123B.ABCC.abcD.01213.下列关于栈的叙述正确的是_。(分数:1.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据14.在 16 位 IBM-PC 机上使用 C 语言,若有如下定义 struct data int i; char ch; double f; b; 则结构变量 b 占用内存的字节数是(分数:1.00)A.1B.2C.7D.1115.下列叙述中正确的是_。(分数:1.00)A.每一个结点有两个指针域的链表一定是非线性结构B.所有结点的指针域都为非空的链表一定是非线性结构C.循环链表是循环队列的链式存储结构

8、D.线性结构的存储结点也可以有多个指针16.以下选项中,能正确表示 a10 或 a0 的关系表达式是_。(分数:1.00)A.a=10 or a=0B.a=10|a=0C.a=10int d;程序运行时输入:c=1,d=2回车,能把字符 1 输入给变量 e、整数 2 输入给变量 d 的输入语句是_。(分数:1.00)A.scanf(“c=%d d=%d“,B.scanf(“c=%c d=%d“,C.scanf(“c=%d,d=%d“,D.scanf(“c=%c,d=%d“,19.不合法的 main 函数命令行参数表示形式是 _(分数:1.00)A.main(int a, char *c)B.m

9、ain(int arc,char *arv)C.main(int argc,char *argv)D.main(int argv,char*argc)20.以下选项中不能用作 C 程序合法常量的是_。(分数:1.00)A.1.234B.“/123“C.123D.“/x7D“21.以下结构体类型说明和变量定义中正确的是_。(分数:2.00)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.s

10、tructint n;char c;REC;REC t1,t2;22.有下列二叉树,对此二叉树中序遍历的结果为 _ 。 (分数:2.00)A.BDYEACFXZB.DYBEAFCZXC.ABCDEFXYZD.ABDYECFXZ23.设有定义: int a=1, b=2, c=3; 以下语句中执行效果与其他三个不同的是_。(分数:1.00)A.if(ab) c=a, a=b, b=c;B.if(ab) c=a, a=b, b=c;C.if(ab) c=a; a=b; b=c;D.if(ab) c=a; a=b; b=c;24.结构化程序所要求的基本结构不包括_。(分数:1.00)A.顺序结构B.

11、GOTO 跳转C.选择(分支)结构D.重复(循环)结构25.某系统结构图如下图所示: (分数:1.00)A.0B.1C.2D.326.设已有声明“int x=1,2,3,4,5,6),*p=”,则值为 3 的表达式是_。(分数:2.00)A.*+pB.*(p+)C.+*PD.(*p)+27.有以下程序 #includestdio.h main() FILE*fp;int a10=1,2,3,i,n; fp=fopen(“d1.dat“,“w“); for(i=0;i3;i+) fprintf(fp,“%d“,ai); fprintf(fp,“/n“); fclose(fp); fp=fopen

12、(“d1.dat“,“r“); fscanf(fp,“%d“, fclose(fp); printf(“%d/n“,n); 程序的运行结果是_。(分数:2.00)A.12300B.123C.1D.32128.以下是 while 语句的基本形式: while(表达式) 语句; 其中“表达式”_。(分数:2.50)A.必须是逻辑表达式B.必须是关系表达式C.必须是逻辑表达式或关系表达式D.可以是任意合法的表达式29.语句“pfintf(“a/bhow“are“y/bou/n“);”的输出结果是_。(分数:2.50)A.a/bhow“are“y/bouB.a/bhow“are“y/bouC.how“

13、are“youD.ahow“are“y/bou30.在 32 位编译器上,设有定义 char *str1=“Hello“, str2=“Hello“;, 则以下语句 printf(“%d%d“, sizeof(str1), sizeof(str2); 的输出结果是_。(分数:1.00)A.5 6B.5 5C.6 6D.4 6二级 C 语言分类模拟题 566 答案解析(总分:43.50,做题时间:90 分钟)一、选择题(总题数:30,分数:43.50)1.若有以下定义和语句 #include stdio.h char s110=“abcd!“,*s2=“/n123/“; printf(“%d%d

14、/n“,strlen(s1),strlen(s2); 则输出结果是_。(分数:1.00)A.10 7B.10 5C.5 5 D.5 8解析:解析 s1 的长度为 5,s2 字符串末尾“/”表示一个字符,所以长度也为 5,答案选择 C。2.有以下程序: #include stdio.h main( ) int a =2,4,6,8, *p=a,i; for(i=0;i4;i+) ai=*p+; printf(“%d/n“,a2); 程序的输出结果是_。(分数:1.00)A.2B.8C.4D.6 解析:解析 本题通过语句“*p=a”将一维数组 a 的首地址的值赋值给变量 p,即 p 的值为 2。执

15、行 for循环,ai=*p+,指将 p 的值赋给 ai后,再进行自增操作,因此 4 次循环后 a2的值为 6。因此 D 选项正确。3.下列叙述中正确的是_。(分数:1.00)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定 解析:解析 循环队列有队头和队尾两个指针,但是循环队列仍是线性结构,因此 A 错误;在循环队列中需要队头与队尾两个指针来共同反映队列中元素的动态变化情况,因此 B 与 C 错误,故本

16、题答案为 D。4.以下叙述中正确的是_。(分数:1.00)A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失 B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1 个数据D.C 语言中的文件是流式文件,凶此只能顺序存取数据解析:解析 B 选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。C 选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第 1 个数据,可以用 fseek()函数进行重新

17、定位即可。D 选项中,C 语言中的文件可以进行随机读写。故本题答案为 A。5.有以下程序: #include stdio.h #define N 2 #define M N+1 #define NUM (M+1) * M/2 main( ) printf(“%d/n“,NuM); 程序运行后的输出结果是_。(分数:5.00)A.4B.8 C.9D.6解析:解析 本题考查宏定义。宏定义只是做简单的替换,执行语句 NUM=(N+1+1)*N+1/2=8,故选项 B正确。6.下列程序段正确的是_。(分数:1.00)A.#include stdio.hmain() int i, j;int(i)=j;

18、B.#include stdioh;main()C.include stdiohmain() int i, j;D.#include stdiohmain() 解析:解析 选项 A 错在调用库函数 int 时,将它放在赋值号的左边;选项 B 中在第一行使用 include命令时,最后放了一个分号:选项 C 在使用 include 命令时,缺少一个“#“号。7.以下叙述中正确的是_。(分数:2.00)A.在 C 语言中,逻辑真值和假值分别对应 1 和 0B.关系运算符两边的运算对象可以是 C 语言中任意合法的表达式 C.对于浮点变量 x 和 y,表达式:x= =y 是非法的,会出编译错误D.分支

19、结构是根据算术表达式的结果来判断流程走向的解析:解析 A 选项中,在 C 语言中,逻辑真值对应非 0;C 选项中,表达式:x=y 是合法的;D 选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。因此 B 选项正确。8.设有以下函数:void fun(int n,char*s).,则下列对函数指针的定义和赋值均正确的是_。(分数:1.50)A.void(*pf)(int,char);pf=B.void*pf();pf=fun;C.void*pf();*pf=fun;D.void(*pf)(int,char*);pf=fun; 解析:解析 函数的参数可以是指针类型,它的作用是将

20、一个变量的地址传送到另一个函数中。函数名代表函数的入口地址,指向函数的指针应该定义为 void(*pf)()。如果定义为 void*pf(),则表示函数 pf的返回值是一个基类型为 void 的指针,因此 D 选项正确。9.有以下程序: #includestdio.h main() int a=0,b=0; for(;a5;a+) if(a%2=0)continue; b+=a; break; printf(“%d/n“,b); 程序运行后的输出结果是_。(分数:1.00)A.1 B.4C.0D.10解析:解析 for 语句中,当 a=0 时,满足 for 循环中 if 语句的条件,执行 co

21、ntinue 继续下一次循环。执行 a+1 后进入 for 语句循环,此时 a=1 不满足 if 条件,执行 b=b+a,此时 b=1,接着执行 break 语句,终止循环,最后输出 b=1,故答案为 A 选项。10.若有以下程序: #include stdio.h int *f(int *s,int *t) int *k; if(*s*t) k=s; s=t; t=k; return s; main( ) int i=3,j=5, *p= r=f(p,q); printf(“%d,%d,%d,%d,%d/n“,i,j,*p,*q,*r); 则程序的输出结果是_。(分数:2.00)A.3,5,

22、5,3,5B.3,5,3,5,5 C.5,3,5,3,5D.5,3,3,5,5解析:解析 在主函数中分别给整型变量 i、j 和指针型变量 p、q 赋初值,并声明指针变量 r;调用 f函数,并将实参变量 p 和 q 的值传递给形参变量 s 和 t,而且 f 函数是指针型函数,即函数的返回值是一个地址。在 f 函数中,如果条件成立,则将指针变量 s 和 t 互换,并且将指针 s 的地址返回主函数。最后输出 i,j,*p,*q,*r 的值,即 3,5,3,5,5。因此 B 选项正确。11.C 语言函数返回值的类型是由_决定的。(分数:1.00)A.return 语句中的表达式类型B.调用函数的主调函

23、数类型C.调用函数时临时D.定义函数时所指定的函数类型 解析:解析 函数值的类型应当是在定义函数时指定的。在定义函数时对函数值说明的类型一般应该和return 语句中的表达式类型致,如果不致,则以函数类型为准,即函数类型决定返回值的类型。12.有以下程序: #includestdio.h main() char ch=“B“; while(ch“E“) pfintf(“%d“,ch-“A“); ch+; printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.123 B.ABCC.abcD.012解析:解析 while 循环条件满足 ch“E“,输出 ch-“A“,即将字符

24、的 ASCII 码相减输出,%d 表示输出十进制整数。循环开始 ch=“B“,printf(“%d“,ch-“A“)=1,继续执行循环直到 ch=“E“,输出 123。13.下列关于栈的叙述正确的是_。(分数:1.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据 C.只能在栈底插入数据D.不能删除数据解析:解析 栈是只允许在同一端进行插入和删除运算的线性表,按“先进后出”组织数据,因此本题答案为 B。14.在 16 位 IBM-PC 机上使用 C 语言,若有如下定义 struct data int i; char ch; double f; b; 则结构变量 b 占用内存的字节数

25、是(分数:1.00)A.1B.2C.7D.11 解析:解析 结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量 i所占用的内存是 2 字节,字符型变量 ch 所占用的内存是 1 字节,双精度型变量 f 所占用的内存是 8 字节,三者相加即可。15.下列叙述中正确的是_。(分数:1.00)A.每一个结点有两个指针域的链表一定是非线性结构B.所有结点的指针域都为非空的链表一定是非线性结构C.循环链表是循环队列的链式存储结构D.线性结构的存储结点也可以有多个指针 解析:解析 一个非空的数据结构如果满足以下两个条件:有且只有一个根节点;每一个节点最多有一个前件,也最多有一个后

26、件,则称为线性结构,在数据结构中习惯称为线性表。双向链表节点具有两个指针域,属于线性结构,A 选项错误。循环链表所有节点的指针域都为非空,属于线性结构,B 选项错误。循环链表是链表,循环队列属于队列,队列只能在队尾入队,在排头退队,链表可以在任何位置插入、删除,C 选项错误。双向链表节点具有多个指针域,D 选项正确。16.以下选项中,能正确表示 a10 或 a0 的关系表达式是_。(分数:1.00)A.a=10 or a=0B.a=10|a=0C.a=10int d;程序运行时输入:c=1,d=2回车,能把字符 1 输入给变量 e、整数 2 输入给变量 d 的输入语句是_。(分数:1.00)A

27、.scanf(“c=%d d=%d“,B.scanf(“c=%c d=%d“,C.scanf(“c=%d,d=%d“,D.scanf(“c=%c,d=%d“, 解析:解析 scanf()函数中,%d 对应的参数是整数型地址,%c 对应参数为 char 型地址,因此 A,C 选项错误;如果输入地址有多个,应该用逗号隔开,因此 B 选项错误,故答案为 D 选项。19.不合法的 main 函数命令行参数表示形式是 _(分数:1.00)A.main(int a, char *c)B.main(int arc,char *arv)C.main(int argc,char *argv) D.main(in

28、t argv,char*argc)解析:20.以下选项中不能用作 C 程序合法常量的是_。(分数:1.00)A.1.234 B.“/123“C.123D.“/x7D“解析:解析 整数不能用逗号隔开,所以 A 错误。21.以下结构体类型说明和变量定义中正确的是_。(分数:2.00)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,

29、t2;解析:解析 B 选项和 C 选项中,REC 后不应加分号,D 选项,没有 typedef,REC 不能作为类型名。所以答案选择 A。22.有下列二叉树,对此二叉树中序遍历的结果为 _ 。 (分数:2.00)A.BDYEACFXZB.DYBEAFCZX C.ABCDEFXYZD.ABDYECFXZ解析:解析 对二叉树的中序遍历是指:首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,注意依旧按照“左于树根结点右子树”的顺序。本题的遍历顺序是这样的: 首先访问左子树;BDEY;在左子树 BDEY 中,也按中序遍历,先访问左子树 DY;在左子树 DY 中,也按中序遍历,先访问左

30、子树,左子树没有,则访问根结点 D,然后访问右子树 Y;接着访问根 B,再访问右于树 E:访问左子树 BDEY 后,接着访问根结点 A,接着访问右子树 CFXZ;右子树 CFXZ 的访问顺序同理可得:FCZX。23.设有定义: int a=1, b=2, c=3; 以下语句中执行效果与其他三个不同的是_。(分数:1.00)A.if(ab) c=a, a=b, b=c;B.if(ab) c=a, a=b, b=c;C.if(ab) c=a; a=b; b=c; D.if(ab) c=a; a=b; b=c;解析:解析 因为 a 小于 b,所以所有选项中的条件都为假。C 选项中实际执行了 a=b;

31、b=c;两个操作,而 A、B、D 选项由于条件不成立,什么也没有做。所以选择 C 选项。24.结构化程序所要求的基本结构不包括_。(分数:1.00)A.顺序结构B.GOTO 跳转 C.选择(分支)结构D.重复(循环)结构解析:解析 结构化程序包含的基本结构为顺序结构、循环结构、分支结构。25.某系统结构图如下图所示: (分数:1.00)A.0B.1C.2 D.3解析:解析 扇入指的是调用一个给定模块的模块个数。题干系统中,第 2 层模块扇入均为 1,第 3 层中功能模块 3.1 扇入为 2,其余为 1,故最大扇入为 2,故 C 选项正确。26.设已有声明“int x=1,2,3,4,5,6),

32、*p=”,则值为 3 的表达式是_。(分数:2.00)A.*+pB.*(p+) C.+*PD.(*p)+解析:27.有以下程序 #includestdio.h main() FILE*fp;int a10=1,2,3,i,n; fp=fopen(“d1.dat“,“w“); for(i=0;i3;i+) fprintf(fp,“%d“,ai); fprintf(fp,“/n“); fclose(fp); fp=fopen(“d1.dat“,“r“); fscanf(fp,“%d“, fclose(fp); printf(“%d/n“,n); 程序的运行结果是_。(分数:2.00)A.12300

33、B.123 C.1D.321解析:28.以下是 while 语句的基本形式: while(表达式) 语句; 其中“表达式”_。(分数:2.50)A.必须是逻辑表达式B.必须是关系表达式C.必须是逻辑表达式或关系表达式D.可以是任意合法的表达式 解析:解析 本题考查 while 表达式。while(表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(=)误写为赋值号(=)时不会报错的,但是其值恒为 1。29.语句“pfintf(“a/bhow“are“y/bou/n“);”的输出结果是_。(分数:2.50)A.a/bhow“are“y/bouB.a/bhow“are“y/bouC.how“are“you D.ahow“are“y/bou解析:30.在 32 位编译器上,设有定义 char *str1=“Hello“, str2=“Hello“;, 则以下语句 printf(“%d%d“, sizeof(str1), sizeof(str2); 的输出结果是_。(分数:1.00)A.5 6B.5 5C.6 6D.4 6 解析:解析 本题主要考查指向字符串的指针和字符数组。str1 为一个字符指针,所以 sizeof 为4;str2 为字符数组,其中包含 6 个字符,所以答案为 D 选项。

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

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

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