1、计算机二级(C)18 及答案解析(总分:645.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:40,分数:60.00)1.以下四个程序中,完全正确的是_。 (分数:1.50)A.B.C.D.2.有以下程序 main() int i,s=0,t=1,2,3,4,5,6,7,8,9; for(i=0;iA.45B.20C.25D.363.有以下程序: int f(int b 4) int i,j,s=0; for(j=0;j2) i=3-j; s+=bij; return s; main( ) int a44=1,2,3,4,0,2,4,5,3,6,9
2、,12,3,2,1,0; printf(“%d/n”,f(a); 执行后的输出结果是( )。 (分数:1.50)A.12B.11C.18D.164. 有以下结构体说明和变量定义,如图所示,指针 p、q、r 分别指向一个链表中的三个连续结点。 struct node int data; struct node *next; *p, *q, *r; (分数:1.50)A.r-next=q; q-next=r-next; p-next=r;B.q-next=r-next; p-next=r; r-next=q;C.p-next=r; q-next=r-next; r-next=q;D.q-next=
3、r-next; r-next=q; p-next=r;5.有以下程序: void swap1(int c0,int c1) int t; t=c00; c00=c10; c10=t; void swap2(int *c0,int *c1) int t; t=*c0; *c0=*c1; *c1=t; main() int a2=3,5, b2=3,5; swap1(a,a+1); swap2( printf(“%d %d %d %d/n“,a0,a1,b0,b1); 程序运行后的输出结果是_。(分数:1.50)A.3 5 5 3B.5 3 3 5C.3 5 3 5D.5 3 5 36.在 64
4、位高档微机中,一个字长所占的二进制位数为( )。(分数:1.50)A.8B.16C.32D.647.有以下程序: #include stdio.h main( ) FILE *fp; int i,k=0,n=0; fp=fopen(“d1.dat”,”w”); for(i=1;i4;i+) fprintf(fp,”%d”,i); fclose(fp); fp=fopen(“d1.dat”,”r”); fscanf(fp,”%d%d”, printf(“%d %d/n”,k,n); fclose(fp); 执行后输出结果是( )。 (分数:1.50)A.1 2B.123 0C.1 23D.0 0
5、8.有以下程序: main() int k=5,n=0; while(k0) switch(k) default : break; case 1 : n+=k; case 2 : case 3 : n+=k; k-; printf(“%d/n“,n); 程序运行后的输出结果是_。 (分数:1.50)A.0B.4C.6D.79.有以下程序: main( ) int a=666,b=888; printf(“%d/n“,a,b); 程序运行后的输出结果是( )。 (分数:1.50)A.错误信息B.666C.888D.66688810.以下不合法的字符常量是_。 (分数:1.50)A./018B./
6、“C./D./xcc11.有以下程序: main() int a=2,4,6,8,10,y=0,x,*p; p= for(x=1;xA.10B.11C.14D.1512.下列叙述中正确的是_。 (分数:1.50)A.一个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响13.以下符合 C 语言语法的实型常量是( )。(分数:1.50)A.1.2B.3.14.159EC.0.0005D.E1514.下列程序的输出结果是( )。 ma
7、in( ) int x=0,y=5,z=3; while(z-0B.int a 2=1,2,3,4;C.int a22=1,2,3;D.int a2 =1,2,3,4;17.能将高级语言编写的源程序转换成目标程序的是( )。(分数:1.50)A.编辑程序B.编译程序C.解释程序D.链接程序18.以下程序的功能是进行位运算: main() unsigned char a,b; a=73; b=4 printf(“%d %d/n“,a,b); 程序运行后的输出结果是_。 (分数:1.50)A.4 3B.7 3C.7 0D.4 019.DOS 命令“COPY /?”的功能是( )。(分数:1.50)
8、A.将当前盘当前目录中的所有文件复制到当前盘的根目录下B.将当前盘当前目录中所有以单个字符命名的文件复制到当前盘的根目录下C.以提示方式复制文件D.显示 COPY 命令的帮助信息20.下列数据结构中,能用二分法进行查找的是_。 (分数:1.50)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表21.以下选项中合法的用户标识符是( )。(分数:1.50)A.longB._2TestC.3DmaxD.A.dat22.有以下程序: char fun(char x , char y) if(x main( ) int a=9,b=8,c=7; printf(“%c/n”,fun(fun
9、(a,b),fun(b,c); 程序的执行结果是( )。 (分数:1.50)A.函数调用出错B.8C.9D.723.已知大写字母 A 的 ASCII 码值是 65,小写字母 a 的 ASCII 码是 97,则用八进制表示的字符常量/101是( )。(分数:1.50)A.字符 AB.字符 aC.字符 eD.非法的常量24.从 Windows 环境进入 MSDOS 方式后,返回 Windows 环境的 DOS 命令为( )。(分数:1.50)A.EXITB.QUITC.RETD.MSDOS25.有以下程序: main( ) int f1 (int x, int y) return xy?x:y;
10、int f2 (int x, int y) return xy?y:x; main( ) int a=4,b=3,c=5,d,e,f; d=f1(a,b); d=f1(d,c); e=f2(a,b); e=f2(e,c); f=a+b+c-d-e; printf(“%d,%d,%d/n“,d,f,e); 执行后输出的结果是( )。 (分数:1.50)A.3,4,5B.5,3,4C.5,4,3D.3,5,426.下列叙述中正确的是( )。(分数:1.50)A.在 Windows 环境下,最大化的窗口是不能移动的B.在 Windows 环境下,应用程序窗口最小化后,该应用程序暂停执行C.在 Win
11、dows 环境下,只有最小化的窗口才能关闭D.在 Windows 环境下,不能关闭最小化窗口27. 有以下说明和定义语句: struct student int age; char num8; struct student stu3=20,“200401“,21,“200402“,10/9,“200403“; struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是( )。 (分数:1.50)A.(p+)-numB.p-numC.(*p).numD.stu3.age28.数据的存储结构是指_。 (分数:1.50)A.存储在外存中的数据B.数据所占的存储空间量C
12、.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示29.若 fp 已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为( )。 (分数:1.50)A.0B.1C.-1D.一个非 0 值30.以下数组定义中错误的是_。 (分数:1.50)A.int x3=0;B.int x23=1,2,3,4,5,6;C.int x3=1,2,3,4,5,6;D.int x23=1,2,3,4,5,6;31.有以下程序: #include string.h main(int argc ,char *argv ) int i,len=0; for(i=1;iargc;i+=
13、2) len+=strlen(argvi); printf(“5d/n”,len); 经编译链接后生成的可执行文件是 ex.exe,若运行时输入以下带参数的命令行 ex abcd efg h3 k44 执行后输出结果是( )。 (分数:1.50)A.14B.12C.8D.632.一个算法应该具有“确定性”等 5 个特性,下面对另外 4 个特性的描述中错误的是( )。(分数:1.50)A.有零个或多个输入B.有零个或多个输出C.有穷性D.可行性33.以下定义语句中正确的是( )。(分数:1.50)A.char a=Ab=B;B.float a=b=10.0;C.int a=10,*b=D.flo
14、at *a,b=34.以下能正确定义数组并正确赋初值的语句是(分数:1.50)A.int N=5,bNN;B.int a12=1,3;C.int c2 =1,2,3,4;D.int d32=1,2,3,4;35.以下叙述中错误的是_。 (分数:1.50)A.用户所定义的标识符允许使用关键字B.用户所定义的标识符应尽量做到“见名知意”C.用户所定义的标识符必须以字母或下划线开头D.用户定义的标识符中,大、小写字母代表不同标识36.对如下二叉树 (分数:1.50)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA37.有以下程序: main( ) int a33,*p,i; p= f
15、or(i=0;iA.3B.6C.9D.238.有以下程序: main() int num44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j; for(i=0;i0 ? p/10 : p%3); (分数:40.00)_66.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件 的 1。 (分数:-1.00)填空项 1:_67.在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为 1。(分数:-1.00)填空项 1:_68.数据结构包括数据的逻辑结构、数据的 1 以及对数据的操作运算。(分数:-1.00)填空项 1:_69
16、.面向对象的模型中,最基本的概念是对象和 1。(分数:-1.00)填空项 1:_70.数据模型按不同应用层次分成 3 种类型,它们是概念数据模型、 1 和物理数据模型。(分数:-1.00)填空项 1:_计算机二级(C)18 答案解析(总分:645.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:40,分数:60.00)1.以下四个程序中,完全正确的是_。 (分数:1.50)A.B.C. D.解析:C 程序中注释用“/*”和“*/”括起来,它可以出现在程序中任何合适的地方。选项 A 中“main();” 是一个函数声明语句,下面的大括号及其内容作为一个
17、语句块,应放在程序的大括号中,故选取项 A 错误; 选项 B 中的注释语句不正确,因为程序在编译时认别到两次“/*”作为注释的开始,但未识别到“*/”作 为注释的结束,故选项 B 错误;选项 D 的“include”前缺少“#”,故选项 D 错误。2.有以下程序 main() int i,s=0,t=1,2,3,4,5,6,7,8,9; for(i=0;iA.45B.20C.25 D.36解析:此题考核的是指针与数组间的应用,数组可以通过指针实现对数组元素的操作,*(t+i)相当于 ti。执行 for()循环语句,i 分别为 0、2、4、6、8,有数组可知 t0=1;t2=3;t4=5;t6=
18、7;t8=9 进行求和 运算结果为 25。3.有以下程序: int f(int b 4) int i,j,s=0; for(j=0;j2) i=3-j; s+=bij; return s; main( ) int a44=1,2,3,4,0,2,4,5,3,6,9,12,3,2,1,0; printf(“%d/n”,f(a); 执行后的输出结果是( )。 (分数:1.50)A.12B.11C.18D.16 解析:4. 有以下结构体说明和变量定义,如图所示,指针 p、q、r 分别指向一个链表中的三个连续结点。 struct node int data; struct node *next; *p
19、, *q, *r; (分数:1.50)A.r-next=q; q-next=r-next; p-next=r; B.q-next=r-next; p-next=r; r-next=q;C.p-next=r; q-next=r-next; r-next=q;D.q-next=r-next; r-next=q; p-next=r;解析:5.有以下程序: void swap1(int c0,int c1) int t; t=c00; c00=c10; c10=t; void swap2(int *c0,int *c1) int t; t=*c0; *c0=*c1; *c1=t; main() int
20、 a2=3,5, b2=3,5; swap1(a,a+1); swap2( printf(“%d %d %d %d/n“,a0,a1,b0,b1); 程序运行后的输出结果是_。(分数:1.50)A.3 5 5 3B.5 3 3 5C.3 5 3 5D.5 3 5 3 解析:函数 swap1、swap2 的作用均为交换两个数。主调函数“swap1(a,a+1)”使得数组 a 的首地址赋给形参 c0,使得 c0 指向 a0所在的存储单元,a1的地址赋给形参 c1,使得 c1 指向 a1所在的存储单元, 故交换 c00与 c10后,a0与 a1值也发生了变化;主调函数“swap2(”起着同样的作用,
21、 使得指针变量 c0 指向了 b0存储单元,c1 指向了 b1存储单元,并在 swap2 函数中发生了交换,所以 b0、 b1的值也发生变化,故本程序输出的结果是 5353。6.在 64 位高档微机中,一个字长所占的二进制位数为( )。(分数:1.50)A.8B.16C.32D.64 解析:7.有以下程序: #include stdio.h main( ) FILE *fp; int i,k=0,n=0; fp=fopen(“d1.dat”,”w”); for(i=1;i4;i+) fprintf(fp,”%d”,i); fclose(fp); fp=fopen(“d1.dat”,”r”);
22、fscanf(fp,”%d%d”, printf(“%d %d/n”,k,n); fclose(fp); 执行后输出结果是( )。 (分数:1.50)A.1 2B.123 0 C.1 23D.0 0解析:8.有以下程序: main() int k=5,n=0; while(k0) switch(k) default : break; case 1 : n+=k; case 2 : case 3 : n+=k; k-; printf(“%d/n“,n); 程序运行后的输出结果是_。 (分数:1.50)A.0B.4C.6D.7 解析:在 switch 语句中,表达式的值与某一个 case 后面的常
23、量表达式的值相等时,就执行此 case 后面的语 句,若所有的 case 中的常量表达式的值都没有与表达式的值匹配的,就执行 default 后面的语句,各个 case 和 default 的出现次序不影响执行结果。所以在本题中,当 k=5 和 k=4 的时候,case 都没有与其匹配的值, 所以执行了 default 语句;当 k=3 时,执行“case 3 : n+=k;”得 n=3,然后执行 default;当 k=2 时,执行“case2 : case 3 : n+=k;”得 n=5,然后执行 default;当 k=1 时,执行“case 1 : n+=k; case 2 : cas
24、e 3 : n+=k;” 使得 n 加两次 k,得到 n=7。9.有以下程序: main( ) int a=666,b=888; printf(“%d/n“,a,b); 程序运行后的输出结果是( )。 (分数:1.50)A.错误信息B.666 C.888D.666888解析:10.以下不合法的字符常量是_。 (分数:1.50)A./018 B./“C./D./xcc解析:C 语言的字符常量是用单引号(即撇号)括起来的一个字符。如a,A,?,$等都是字符常量。注意:a和A是不同的字符常量。除了以上形式的字符常量外,C 还允许用一个“/“开头的字符序列。如/ddd表示 1 到 3 位八进制数所代表
25、的字符,而八进制是由 0 到 7 这几个数字组成的,所以选项 A 是不合法的字符常 量。11.有以下程序: main() int a=2,4,6,8,10,y=0,x,*p; p= for(x=1;xA.10B.11C.14 D.15解析: 本题通过语句“p=”将指针变量 p 指向了存储单元 a1,即使得 p0的值为 4,然后通过两次 for 循环,使得 y 的值分别加上 p1和 p2,那么 y=6+8,所以输出的 y 的值为 14。12.下列叙述中正确的是_。 (分数:1.50)A.一个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可
26、以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响 解析:一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。而采用不同的存储结构,其数据处理的效率是不同的。13.以下符合 C 语言语法的实型常量是( )。(分数:1.50)A.1.2B.3.14.159EC.0.0005 D.E15解析:14.下列程序的输出结果是( )。 main( ) int x=0,y=5,z=3; while(z-0B.int a 2=1,2,3,4;C.int a22=1,2,3;D.int a2 =1,2
27、,3,4; 解析:17.能将高级语言编写的源程序转换成目标程序的是( )。(分数:1.50)A.编辑程序B.编译程序 C.解释程序D.链接程序解析:由高级语言编写的程序称为“源程序”,由二进制代码表示的程序称为“目标程序”,而把源程序 转换成机器能够识别的目标程序是由“编译程序”完成的。18.以下程序的功能是进行位运算: main() unsigned char a,b; a=73; b=4 printf(“%d %d/n“,a,b); 程序运行后的输出结果是_。 (分数:1.50)A.4 3 B.7 3C.7 0D.4 0解析:C 语言提供六种位运算符,按优先级由高到低的顺序分别为:取反()
28、左移(numB.p-numC.(*p).numD.stu3.age 解析:28.数据的存储结构是指_。 (分数:1.50)A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示 解析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。29.若 fp 已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为( )。 (分数:1.50)A.0 B.1C.-1D.一个非 0 值解析:30.以下数组定义中错误的是_。 (分数:1.50)A.int x3=0;B.int x23=1,2,
29、3,4,5,6; C.int x3=1,2,3,4,5,6;D.int x23=1,2,3,4,5,6;解析:C 语言中,二维数组中元素的排列顺序是:先按行存放,再按列存放,并且要有足够的空间来保证定义的数组长度始终大于等于需要存放的元素的长度。选项 B 中行数定义为 2 行,但实际却需要存放 3 行 元素故不正确。31.有以下程序: #include string.h main(int argc ,char *argv ) int i,len=0; for(i=1;iargc;i+=2) len+=strlen(argvi); printf(“5d/n”,len); 经编译链接后生成的可执行
30、文件是 ex.exe,若运行时输入以下带参数的命令行 ex abcd efg h3 k44 执行后输出结果是( )。 (分数:1.50)A.14B.12C.8D.6 解析:32.一个算法应该具有“确定性”等 5 个特性,下面对另外 4 个特性的描述中错误的是( )。(分数:1.50)A.有零个或多个输入B.有零个或多个输出 C.有穷性D.可行性解析:33.以下定义语句中正确的是( )。(分数:1.50)A.char a=Ab=B;B.float a=b=10.0;C.int a=10,*b= D.float *a,b=解析:34.以下能正确定义数组并正确赋初值的语句是(分数:1.50)A.in
31、t N=5,bNN;B.int a12=1,3;C.int c2 =1,2,3,4;D.int d32=1,2,3,4; 解析:35.以下叙述中错误的是_。 (分数:1.50)A.用户所定义的标识符允许使用关键字 B.用户所定义的标识符应尽量做到“见名知意”C.用户所定义的标识符必须以字母或下划线开头D.用户定义的标识符中,大、小写字母代表不同标识解析:C 语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。大写字母和小写字母被认为是两个不同的字符,用户在定义标识符时应做到“见名知意”,且不允许使用 关键字作标识符。36.对如下二叉树 (分数:1.50)A.A
32、BCDEFB.DBEAFCC.ABDECFD.DEBFCA 解析:后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点;并且遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。37.有以下程序: main( ) int a33,*p,i; p= for(i=0;iA.3B.6 C.9D.2解析:38.有以下程序: main() int num44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j; for(i=0;i1000/10*10=1000,1000/f(N)1000/(10*10)=1
33、0。52.以下函数的功能是计算 (分数:40.00)_正确答案:(/i 或*1.O/i 或 * l/i 或 * (1.O/i) 或 /(double)i)解析:53.以下 isprime 函数的功能是判断形参 a 是否为素数,是素数,函数返回 1,否则返回 0。 请填空。 int isprime(int a) int i; for(i=2;imax 或 arow)col=max 或 max0 ? p/10 : p%3); (分数:40.00)_正确答案:(3)解析:66.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件 的 1。 (分数:-1.00)填空项 1:_ (正
34、确答案:可重用性)解析:本题考查了继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。67.在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为 1。(分数:-1.00)填空项 1:_ (正确答案:消息)解析:在面向对象技术中,主要用到对象(object)、类(class)、方法(method)、消息 (message)、继承(inheritance)、封装(encapsulation)等基本概念。其中消息是用来请求对象执行某一处理或回答某些信息的要求。 68.数据结构包括数据的逻辑结构、数据的 1 以及对数据的操作运算。(分数:-
35、1.00)填空项 1:_ (正确答案:存储结构)解析:数据结构包括 3 个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。69.面向对象的模型中,最基本的概念是对象和 1。(分数:-1.00)填空项 1:_ (正确答案:类)解析:面向对象模型中,最基本的概念是对象和类。对象是现实世界中实体的模型化;将属性集和方法集相同的所有对象组合在一起,可以构成一个类。70.数据模型按不同应用层次分成 3 种类型,它们是概念数据模型、 1 和物理数据模型。(分数:-1.00)填空项 1:_ (正确答案:逻辑数据模型)解析:数据是现实世界符号的抽象,而数据模型(data model)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型按不同的应用层次分成 3 种类型,它们是概念数据模型(conceptual data model)、逻辑数据模型(logic data model)、物理数据模型(physical data model)。