1、计算机二级(C)31 及答案解析(总分:3040.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:50,分数:3000.00)1.下列关于单目运算符+、-的叙述中正确的是( )。(分数:60.00)A.它们的运算对象可以是任何变量和常量B.它们的运算对象可以是 char 型变量和 int 型变量,但不能是 float 型变量C.它们的运算对象可以是 int 型变量,但不能是 double 型变量和 float 型变量D.它们的运算对象可以是 char 型变量、int 型变量和 float 型变量2.有以下程序段 typedef struct node
2、int data;struct node * next; * NODE; NODE p; 以下叙述中正确的是【 】。 (分数:60.00)A.p 是指向 structnode 结构变量的指针的指针B.NODEp;语句出错C.p 是指向 structnode 结构变量的指针D.p 是 structnode 结构变量3.下列带有通配符的文件名中,能表示文件“ABC.TXT”的是( )。(分数:60.00)A.*BC.?B.A?.*C.?BC.*D.?.?4.有以下程序 main() int i , t3=9,8,7,6,5,4,3,2,1; for(i=0;iA.7 5 3B.3 5 7C.3 6
3、 9D.7 5 15.有以下程序 #include main() char c1,c2,c3,c4,c5,c6; scanf(“cccC“,8az1, printf(“%o %o/n“,mn,n); 程序运行后的输出结果是( )。 (分数:60.00)A.0256 0400B.0256 256C.256 400D.400 4007.在 Windows 菜单中,暗淡(灰色)的命令项表示该命令( )。(分数:60.00)A.暂时不能用B.正在执行C.包含下一层菜单D.包含对话框8.有以下程序: main() int a10=1,2, 3,4,5,6,7,8,9,10,*p= a=/; b=/xbc
4、; c=/0xab; d=“/0127“; printf(“%c%c%c%c/n“,a,b,c,*d); 编译时出现错误,以下叙述中正确的是( )。 (分数:60.00)A.程序中只有 a=/;语句不正确B.b=/xbc;语句不正确C.d=“/0127“;语句不正确D.a=/;和 c=/0xab;语句都不正确14.在多媒体计算机中,CD-ROM 属于( )。(分数:60.00)A.存储媒体B.传输媒体C.表现媒体D.表示媒体15.已知 i,j,k 为 int 型变量,若从键盘输入:1,2,3,使 i 的值为 1,j 的值为 2,k 的值为 3,以下选项中正确的输入语句是( )。(分数:60.0
5、0)A.scanf (“%2d%2d%2d“,i,j,k);B.scanf (“%d %d %d“,i,j,k);C.scanf (“%d,%d,%d“,i,j,k);D.scanf (“i=%d,j=%d,k=%d“,i,j,k);16.有以下程序 main( ) union unsigned int n; unsigned char c; ul; ul.c=A; printf(“%c/n“,ul.n); 执行后输出结果是( )。 (分数:60.00)A.产生语法错B.随机值C.AD.6517.在长度为 64 的有序线性表中进行顺序查找,最坏情况下需要比较的次数为【 】。(分数:60.00)
6、A.63B.64C.6D.718.以下叙述中错误的是【 】。(分数:60.00)A.算法正确的程序最终一定会结束B.算法正确的程序可以有零个输出C.算法正确的程序可以有零个输入D.算法正确的程序对于相同的输入一定有相同的结果19.有以下程序: int a=2; int f(int n) static int a=3; int t=0; if(n%2)static int a=4;t+=a+; else static int a=5; t+=a+; return t+a+; main() int s=a,i; for(i=0;i3;i+) s+=f(i); printf(“%d/n“,s); 程
7、序运行后的输出结果是【 】。 (分数:60.00)A.26B.28C.29D.2420.有以下程序 void f(int b ) int i; for(i=2;iA.1,2,3,4,5,6,7,8,9,10,B.1,2,6,8,10,12,7,8,9,10,C.1,2,3,4,10,12,14,16,9,10,D.1,2,6,8,10,12,14,16,9,10,21.有以下程序 main() int i,j,X=0; for(i=0;iname); (分数:2.00)填空项 1:_54.以下程序的运行结果是 1。 main2 int a=2,b=7,c=5; switch(aO) case
8、1:switch(b填空项 1:_55.在 Windows 环境下,利用菜单命令删除固定硬盘上的文件与文件夹,实际上是将需要删除的文件与文件夹移动到 1 文件夹中。(分数:2.00)填空项 1:_56.以下程序运行后的输出结果是 1。 int f(int a,int n) if(n=1 return f(a,n-1)+an-1); else return 0; main2 int aa5=(1,2,3,4,5),s; s=f(aa,5); printf(“%d/n“,s); (分数:2.00)填空项 1:_57.在数据库系统中,实现各种数据管理功能的核心软件称为 1。(分数:2.00)填空项
9、1:_58.某二叉树中度为 2 的结点有 18 个,则该二叉树中有 1 个叶子结点。(分数:2.00)填空项 1:_59.已知字符 A 的 ASCII 码为 65,以下程序运行后的输出结果是 1。 main2 char a,b; a=A+5-3; b=a+6-2; printf(“%d %c/n“,a,b) ; (分数:2.00)填空项 1:_填空项 1:_60.若 fp 已正确定义为一个文件指针,d1.dat 为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen 1;。 (分数:2.00)填空项 1:_61.若有语句 int i=-19,j=i%4; printf(“%d/n“,
10、j); 则输出的结果是 1。 (分数:2.00)填空项 1:_62.执行以下程序后,输出#号的个数是 1。 #include stdio.h main( ) int i,j; for(i=1; i5; i+) for(j=2; j=i; j+) putchar(#); (分数:2.00)填空项 1:_63.以下程序中,fun 函数的功能是求 3 行 4 列二维数组每行元素中的最大值。请填空。 void fun(int,int,int(*)4,int*); main1 int a 34=1,2,41,36,28,19,33,15,27,3,27,19,1,b3,i; fun(3,4,a,b,);
11、 for(i=0;i3;1+)printf(“%4d“,bi); printf(“/n“); void fun(int m,int n,int ar4,int*br) int i,j,x; for(i=0;im;i+) x=ari0; for(j=0;jn;j+)if(xarij)x=arij; 2=x; (分数:2.00)填空项 1:_64.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中 1 的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。(分数:2.00)填空项 1:_65.以下程序运行后的输出结果是 1。 void fun(
12、int x,int y) x=x+y;y=x-y;x=x-y; printf(“%d,%d,“,x,y); main( ) int x=2,y=3; fun(x,y); printf(“%d,%d/n“,x,y); (分数:2.00)填空项 1:_66.软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于 1 阶段。(分数:2.00)填空项 1:_67.以下程序运行后的输出结果是 1。 #includestring.h main2 char ch=“abc“,x34;int i; for(i=0;i3;1+)strcpy(xi,ch); for(i=0;i3;i+)
13、printf(“%s“, printf(“%o %o/n“,mn,n); 程序运行后的输出结果是( )。 (分数:60.00)A.0256 0400B.0256 256C.256 400 D.400 400解析:7.在 Windows 菜单中,暗淡(灰色)的命令项表示该命令( )。(分数:60.00)A.暂时不能用 B.正在执行C.包含下一层菜单D.包含对话框解析:8.有以下程序: main() int a10=1,2, 3,4,5,6,7,8,9,10,*p= a=/; b=/xbc; c=/0xab; d=“/0127“; printf(“%c%c%c%c/n“,a,b,c,*d); 编译
14、时出现错误,以下叙述中正确的是( )。 (分数:60.00)A.程序中只有 a=/;语句不正确B.b=/xbc;语句不正确C.d=“/0127“;语句不正确D.a=/;和 c=/0xab;语句都不正确 解析:14.在多媒体计算机中,CD-ROM 属于( )。(分数:60.00)A.存储媒体 B.传输媒体C.表现媒体D.表示媒体解析:15.已知 i,j,k 为 int 型变量,若从键盘输入:1,2,3,使 i 的值为 1,j 的值为 2,k 的值为 3,以下选项中正确的输入语句是( )。(分数:60.00)A.scanf (“%2d%2d%2d“,i,j,k);B.scanf (“%d %d %
15、d“,i,j,k);C.scanf (“%d,%d,%d“,i,j,k); D.scanf (“i=%d,j=%d,k=%d“,i,j,k);解析:16.有以下程序 main( ) union unsigned int n; unsigned char c; ul; ul.c=A; printf(“%c/n“,ul.n); 执行后输出结果是( )。 (分数:60.00)A.产生语法错B.随机值C.A D.65解析:17.在长度为 64 的有序线性表中进行顺序查找,最坏情况下需要比较的次数为【 】。(分数:60.00)A.63B.64 C.6D.7解析:顺序查找是从线性表的第一个元素开始依次向后
16、查找,如果线性表中的第一个元素就是要查找的元素,则只需要做一次比较就查找成功;但如果要查找的元素是线性表中的最后一个元素,或者要查找元素不在线性表中,则需要与线性表中所有元素进行比较,这是顺序查找的最坏情况,比较次数为线性表的长度。18.以下叙述中错误的是【 】。(分数:60.00)A.算法正确的程序最终一定会结束B.算法正确的程序可以有零个输出 C.算法正确的程序可以有零个输入D.算法正确的程序对于相同的输入一定有相同的结果解析:算法应该具有下列五个特性:有穷性:一个算法必须在执行有穷步之后结束。确定性:算法中的每一步,必须有确切的含义,在他人理解时不会产生二义性动态性:算法中描述的每一步操
17、作都可以通过已有的基本操作执行有限次实现。输入:一个算法应该有零个或多个输入。输出:一个算法应该有一个或多个输出。这里所说的输出是指与输入有某种特定关系的量。19.有以下程序: int a=2; int f(int n) static int a=3; int t=0; if(n%2)static int a=4;t+=a+; else static int a=5; t+=a+; return t+a+; main() int s=a,i; for(i=0;i3;i+) s+=f(i); printf(“%d/n“,s); 程序运行后的输出结果是【 】。 (分数:60.00)A.26B.28
18、C.29 D.24解析:解本题耍弄清楚这样几点:1、定义“int a=2;“中的全局变量 a,其作用范围是从定义此变量的位置开始到本源文件结束;2、“static int a=3;“中的静态局部变量 a 的作用范围是其所在的函数 f,并对其只赋一次初值,以后每次调用函数时不再重新赋初值,而只是保留上次函数调用结束时的值;3、复合语句“static int a=4;t+=a+; “和“static int a=5;t+=a+;“中定义的两个变量 a 属于复合语句中定义的变量,作用范围只在其本身所在的复合语句内。对于本程序来讲,第三行定义的静态局部变量并不会对四、五两行的复合语句产生作用,这是因为
19、复合语句中也定义了与其同名的静态局部变量。 20.有以下程序 void f(int b ) int i; for(i=2;iA.1,2,3,4,5,6,7,8,9,10,B.1,2,6,8,10,12,7,8,9,10, C.1,2,3,4,10,12,14,16,9,10,D.1,2,6,8,10,12,14,16,9,10,解析:在 main()中,f(a)语句的作用是对数组 a10中从 a2到 a5的各个数字乘以 2,所以数组 a10中的数字就变成了1,2,6,8,10,12,7,8,9,10,最后在屏幕上输出。21.有以下程序 main() int i,j,X=0; for(i=0;i
20、name); (分数:2.00)填空项 1:_ (正确答案:2002ShangXian)解析:54.以下程序的运行结果是 1。 main2 int a=2,b=7,c=5; switch(aO) case 1:switch(b填空项 1:_ (正确答案:# printf(“%d/n“,j); 则输出的结果是 1。 (分数:2.00)填空项 1:_ (正确答案:-3)解析:62.执行以下程序后,输出#号的个数是 1。 #include stdio.h main( ) int i,j; for(i=1; i5; i+) for(j=2; j=i; j+) putchar(#); (分数:2.00)
21、填空项 1:_ (正确答案:6)解析:63.以下程序中,fun 函数的功能是求 3 行 4 列二维数组每行元素中的最大值。请填空。 void fun(int,int,int(*)4,int*); main1 int a 34=1,2,41,36,28,19,33,15,27,3,27,19,1,b3,i; fun(3,4,a,b,); for(i=0;i3;1+)printf(“%4d“,bi); printf(“/n“); void fun(int m,int n,int ar4,int*br) int i,j,x; for(i=0;im;i+) x=ari0; for(j=0;jn;j+)
22、if(xarij)x=arij; 2=x; (分数:2.00)填空项 1:_ (正确答案:bri或*(br+i))解析:二维数组 a 存放 3 行:4 列的数组元素,一维数组 b 用于存放每行的最大数。在函数 fun 中,外层for 循环用于控制行数,内层 for 循环用于控制列数。 64.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中 1 的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。(分数:2.00)填空项 1:_ (正确答案:驱动模块)解析:在进行测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块):
23、其中,驱动模块相当于被测试模块的主程序,它接收测试数据,并传给被测试模块,输出实际测试结果。承接模块通常用于代替被测试模块调用的其他模块,其作用仅做少量的数据操作,是一个模拟子程序,不必将子模块的所有功能带入。 65.以下程序运行后的输出结果是 1。 void fun(int x,int y) x=x+y;y=x-y;x=x-y; printf(“%d,%d,“,x,y); main( ) int x=2,y=3; fun(x,y); printf(“%d,%d/n“,x,y); (分数:2.00)填空项 1:_ (正确答案:3,2,2,3)解析:本题考点是局部变量的作用范围。66.软件生命周
24、期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于 1 阶段。(分数:2.00)填空项 1:_ (正确答案:开发)解析:软件生命周期(SDILC,软件生存周期)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,其中的编码和测试属于开发阶段。67.以下程序运行后的输出结果是 1。 #includestring.h main2 char ch=“abc“,x34;int i; for(i=0;i3;1+)strcpy(xi,ch); for(i=0;i3;i+)printf(“%s“,b=1;s=1)解析:70. E-mail 地址由域名和用户名两部分组成,它们之间用分隔,其中在后面的部分是 1。(分数:2.00)填空项 1:_ (正确答案:域名)解析: