1、计算机二级(C)28 及答案解析(总分:645.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:40,分数:60.00)1.以下选项中非法的表达式是( )。(分数:1.50)A.0=0;i-) sp; sum( printf(“%d/n”,aa0); 执行后的输出结果是( )。 (分数:1.50)A.4B.3C.2D.129.有以下程序: main( ) int i=0,x=0; for (;) if(i=3|i=5) continue; if (i=6) break; i+; s+=i; ; printf(“%d/n“,s); 程序运行后的输出结果
2、是( )。 (分数:1.50)A.10B.13C.21D.程序进入死循环30.在 Windows 环境下,为了复制一个对象,在用鼠标拖动该对象时应同时按住( )。(分数:1.50)A.Alt 键B.Esc 键C.Shift 键D.Ctrl 键31.已有定义:int i,a10,*p;,则合法的赋值语句是( )。(分数:1.50)A.p=100;B.p=a5;C.p=a2+2;D.p=a+2;32.在 Windows 菜单中,暗淡的命令名项目表示该命令( )。(分数:1.50)A.暂时不能使用B.正在执行C.包含下一层菜单D.包含对话框33.以下函数的功能是:通过键盘输入数据,为数组中的所有元素
3、赋值。 #define N 10 void arrin(int xN) int i=0; while(iN) scanf(“%d“,_); 在下划线处应填入的是( )。 (分数:1.50)A.x+iB.*sp=“right!“;B.char s10;s=“right!“;C.char s10;*s=“right!“;D.char *sp=“right!“;36.以下程序段中与语句 k=ab?(bc?1:0):0;功能等价的是( )。(分数:1.50)A.if(ab) else k=0;B.if(ab)|(bc) k=1 else k=0;C.if(ab) k=1; else if(bc) k=
4、1; else k=0;37.有以下程序: 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.738.有以下程序: #include main() FILE *fp; int i,k,n; fp=fopen(“data.dat“,“w+“); for(i=1;iA.0 0B.123 45C.1 4D.1 239.所谓 “裸机”是指( )。(分数
5、:1.50)A.单片机B.单板机C.不装备任何软件的计算机D.只装备操作系统的计算机40.有以下程序: #define N 20 fun(int a,int n,int m) int i,j; for(i=m;i=n;i-)ai+1=ai; main() int i,aN=1,2,3,4,5,6,7,8,9,10; fun(a,2,9); for(i=0;iA.10234B.12344C.12334D.1223441.软件工程的理论和技术性研究的内容主要包括软件开发技术和( )。(分数:-1.00)A.消除软件危机B.软件工程管理C.程序设计自动化D.实现软件可重用42.在软件测试设计中,软件
6、测试的主要目的是( )。(分数:-1.00)A.实验性运行软件B.证明软件正确C.找出软件中全部错误D.发现软件错误而执行程序43.需求分析阶段的任务是确定( )。(分数:-1.00)A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能44.算法的时间复杂度是指( )。(分数:-1.00)A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数45.为用户与数据库系统提供接口的语言是( )。(分数:-1.00)A.高级语言B.数据描述语言(DDL)C.数据操纵语言(DML)D.汇编语言46.在结构化程序设计思想提出之前,在程序设计
7、中曾强调程序的效率。与程序的效率相比,人们更重视程序的( )。(分数:-1.00)A.安全性B.一致性C.可理解性D.合理性47.非空的循环单链表 head 的尾结点(由 p 所指向),满足( )。(分数:-1.00)A.pnext=NULLB.p=NULLC.pnext=headD.p=head48.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )。(分数:-1.00)A.可重用性差B.安全性差C.非持久性D.冗余性49.下列不属于静态测试方法的是( )。(分数:-1.00)A.代码检查B.白盒法C.静态结构分析D.代码质量度量50.在软件工程中,白箱测试法可用于测试程
8、序的内部结构。此方法将程序看做是( )。(分数:-1.00)A.路径的集合B.循环的集合C.目标的集合D.地址的集合三、填空题(每空 2 分,共 40 分)(总题数:15,分数:600.00)51.从 Windows 环境进入 MSDOS 方式后,返回 Windows 环境的 DOS 命令为 1。(分数:40.00)填空项 1:_52.以下程序运行后的输出结果是 1 。 ; main2 struct NODE s3=1,/0,2,/0,3,/0,*p,*q,*r; int sum=0; s0.next=s+1; s1.next=s+2; s2.next=s; p=s; q=p-next; r=
9、q-next; sum+=q-next-num; sum+=r-next-next-num; printf(“%d/n“,sum); (分数:40.00)填空项 1:_53.以下程序用于判断 a、b、c 能否构成三角形,若能,输出 YES,否则输出 NO。当给 a、b、c 输入三角形三条边长时,确定 a、b、c 能构成三角形的条件是需同时满足三 个条件:a+bc,a+cb,b+ca。请填空。 main1 float a,b,c; scanf(“%f%f%f“, if(= 2)printf(“YES/n“); /*a、b、c 能构成三角形*/ else printf(“NO/n“); /*a、b
10、、c 不能构成三角形*/ (分数:40.00)填空项 1:_54.在 64 位高档微机中,CPU 能同时处理 1 个字节的二进制数据。(分数:40.00)填空项 1:_55.在面向对象方法中,类的实例称为 1。(分数:40.00)填空项 1:_56.有以下程序: int sub(int n) return(n/10+n%10); main1 int x,y; scanf(“%d“, y=sub(sub(sub(x); printf(“%d/n“,y); 若运行时输入 1234,程序的输出结果是 2。 (分数:40.00)填空项 1:_57.下面程序的运行结果是: 1 int f( int a
11、, int n) if(n1) return a0+f( else return a0; main ( ) int aa3=1,2,3,s; s=f( ; printf(“%d/n”,s); (分数:40.00)填空项 1:_58.以下函数 fun 的功能是返回 str 所指字符串中以形参 c 中字符开头的后续字符串的首 地址,例如:str 所指字符串为:Hello!,c 中的字符为 e,则函数返回字符串:ello!的首地址。若 str 所指字符串为空串或不包含 c 中的字符,则函数返回 NULL。请填空。 char *fun(char *str, char c) int n=0;char *
12、p=str; if(p!=NULL) while(pn!=c if(pn= /0) return NULL; return( 1); (分数:40.00)填空项 1:_59.下面程序的运行结果是: 1。 fun(int t,int n) int i,m; if(n=1) return t0; else if(n=2) m=fun(t,n-1); return m; main2 int a=11,4,6,3,8,2,3,5,9,2; printf(“%d/n“,fun(a,10); (分数:40.00)填空项 1:_60.以下程序中给指针 p 分配三个 double 型动态内存单元,请填空。 #
13、 include stdlib.h main ( ) double *p; p=(double *) malloc( 1); p0=1.5;p1=2.5;p2=3.5; printf(“%f%f%f/n”,p0,p1,p2); (分数:40.00)填空项 1:_61.有以下程序 main( ) int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf(“%d/n”,x); 执行后输出结果是 1。 (分数:40.00)填空项 1:_62.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。 1( double,double)
14、; main( ) double x,y; scanf(“%lf%lf“, printf(“%lf/n“,max(x,y); double max(double a,double b) return(ab ? a:b); (分数:40.00)填空项 1:_63.有以下程序: #includestdio.h main( ) char c; while( (c=getchar1 )!=?) putchar(- - c); 程序运行时,如果从键盘输入 Y? N?回车,则输出结果为 2。 (分数:40.00)填空项 1:_64.以下 sum 函数的功能是计算下列级数之和。 (分数:40.00)填空项
15、1:_65.计算机软件分为系统软件和应用软件,操作系统属于 1。(分数:40.00)填空项 1:_66.在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为 1。(分数:-1.00)填空项 1:_67.用的黑箱测试有等价分类法、 1、因果图法和错误推测法 4 种。(分数:-1.00)填空项 1:_68.对软件是否能达到用户所期望的要求的测试称为 1。(分数:-1.00)填空项 1:_69.长度为 n 的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为 1。(分数:-1.00)填空项 1:_70.数据库保护分为:安全性控制、 1、并发
16、性控制和数据的恢复。(分数:-1.00)填空项 1:_计算机二级(C)28 答案解析(总分:645.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:40,分数:60.00)1.以下选项中非法的表达式是( )。(分数:1.50)A.0=0;i-) sp; sum( printf(“%d/n”,aa0); 执行后的输出结果是( )。 (分数:1.50)A.4 B.3C.2D.1解析:29.有以下程序: main( ) int i=0,x=0; for (;) if(i=3|i=5) continue; if (i=6) break; i+; s+=i;
17、; printf(“%d/n“,s); 程序运行后的输出结果是( )。 (分数:1.50)A.10B.13C.21D.程序进入死循环 解析:30.在 Windows 环境下,为了复制一个对象,在用鼠标拖动该对象时应同时按住( )。(分数:1.50)A.Alt 键B.Esc 键C.Shift 键D.Ctrl 键 解析:31.已有定义:int i,a10,*p;,则合法的赋值语句是( )。(分数:1.50)A.p=100;B.p=a5;C.p=a2+2;D.p=a+2; 解析:32.在 Windows 菜单中,暗淡的命令名项目表示该命令( )。(分数:1.50)A.暂时不能使用 B.正在执行C.包
18、含下一层菜单D.包含对话框解析:33.以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。 #define N 10 void arrin(int xN) int i=0; while(iN) scanf(“%d“,_); 在下划线处应填入的是( )。 (分数:1.50)A.x+iB.*sp=“right!“;B.char s10;s=“right!“;C.char s10;*s=“right!“;D.char *sp=“right!“; 解析: 选项 A 定义了字符型的指针变量 sp,则*sp 存储的是第一个字符,而给它赋的是字符串,故错;选项 B 表示代表数组的首地址,而题中给它赋
19、的是字符串,所以错误;选项 C 定义了一个字符型的数组 s10,再通过*s 给数组元素赋初值,这时是与选项 A 相同的错误。36.以下程序段中与语句 k=ab?(bc?1:0):0;功能等价的是( )。(分数:1.50)A.if(ab) else k=0; B.if(ab)|(bc) k=1 else k=0;C.if(ab) k=1; else if(bc) k=1; else k=0;解析:37.有以下程序: main() int k=5,n=0; while(k0) switch(k) default : break; case 1 : n+=k; case 2 : case 3 : n
20、+=k; k-; printf(“%d/n“,n); 程序运行后的输出结果是_。 (分数:1.50)A.0B.4C.6D.7 解析:在 switch 语句中,表达式的值与某一个 case 后面的常量表达式的值相等时,就执行此 case 后面的语 句,若所有的 case 中的常量表达式的值都没有与表达式的值匹配的,就执行 default 后面的语句,各个 case 和 default 的出现次序不影响执行结果。所以在本题中,当 k=5 和 k=4 的时候,case 都没有与其匹配的值, 所以执行了 default 语句;当 k=3 时,执行“case 3 : n+=k;”得 n=3,然后执行 d
21、efault;当 k=2 时,执行“case2 : case 3 : n+=k;”得 n=5,然后执行 default;当 k=1 时,执行“case 1 : n+=k; case 2 : case 3 : n+=k;” 使得 n 加两次 k,得到 n=7。38.有以下程序: #include main() FILE *fp; int i,k,n; fp=fopen(“data.dat“,“w+“); for(i=1;iA.0 0B.123 45C.1 4D.1 2 解析:语句“fprintf(fp,“%d “,i);”的作用是将变量 i 的值按“%d”的格式输出到 fp 指向的文件上;“re
22、wind(fp)” 的作用是使指针重新返回文件的开头;“fscanf(fp,“%d%d“, for(i=m;i=n;i-)ai+1=ai; main() int i,aN=1,2,3,4,5,6,7,8,9,10; fun(a,2,9); for(i=0;iA.10234B.12344C.12334 D.12234解析:本题函数 fun 的作用是将指定的数组元素(从下标 n 到下标 m)向后移一位。由函数调用“fun(a,2,9);”可知,函数 fun 用于将 a2 到 a9的各元素依次向后移一位,移完后,a 数组中各元素的值分别为 1,2,3,3,4,5,6,7,8,9,10,故输出的前 5
23、 个数组元素为 12334。41.软件工程的理论和技术性研究的内容主要包括软件开发技术和( )。(分数:-1.00)A.消除软件危机B.软件工程管理 C.程序设计自动化D.实现软件可重用解析:软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可 重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究 的内容主要包括:软件开发技术和软件工程管理。42.在软件测试设计中,软件测试的主要目的是( )。(分数:-1.00)A.实验性运行软件B.证明软件正确C.找出软件中全部错误D.发现软件错误而执行程序
24、解析:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。 43.需求分析阶段的任务是确定( )。(分数:-1.00)A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能 解析:需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。注意:选项 A)软件开发方法是在总体阶段完成任务;选项 B)软件开
25、发工具是在实现阶段需完成的任务;选项 C)软件开发费用是在可行性研究阶段需完砀任务。44.算法的时间复杂度是指( )。(分数:-1.00)A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数 D.算法程序中的指令条数解析:算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。45.为用户与数据库系统提供接口的语言是( )。(分数:-1.00)A.高级语言B.数据描述语言(DDL)C.数据操纵语言(DML) D.汇编语言解析:DBMS 提供数据操纵语言(DM
26、L)实现对数据库中数据的操作,数据操纵语言(DML)是用户(包括应用程序)与数据库系统的接口。数据操纵语言通常包括检索和更新功能。46.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的( )。(分数:-1.00)A.安全性B.一致性C.可理解性 D.合理性解析:结构化程序设计方法设计出的程序具有明显的优点。其一,程序易于理解、使用和维护;其二,提交了编程工作的效率,降低了软件开发成本。其中,人们更重视前者。47.非空的循环单链表 head 的尾结点(由 p 所指向),满足( )。(分数:-1.00)A.pnext=NULLB.p=NULLC.pne
27、xt=head D.p=head解析:循环链表就是将链表的最后一个结点指向链表头结点(或第一个结点),即 Pnext=head。48.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )。(分数:-1.00)A.可重用性差B.安全性差C.非持久性D.冗余性 解析:文件系统所管理的数据文件基本上是分散的,相互独立的,因此相对于数据库系统,以此为基础的数据处理存在 3 个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。49.下列不属于静态测试方法的是( )。(分数:-1.00)A.代码检查B.白盒法 C.静态结构分析D.代码质量度量解析:静态测试包括代码
28、检查、静态结构分析和代码质量度量等。其中白盒测试属于动态测试。50.在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是( )。(分数:-1.00)A.路径的集合 B.循环的集合C.目标的集合D.地址的集合解析:软件的白盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。三、填空题(每空 2 分,共 40 分)(总题数:15,分数:600.00)51.从 Windows 环境进入 MSDOS 方式后,返回 Windows 环境的 DOS 命令为 1。(分数:40.00)填空项 1:_ (正确答
29、案:exit)解析:52.以下程序运行后的输出结果是 1 。 ; main2 struct NODE s3=1,/0,2,/0,3,/0,*p,*q,*r; int sum=0; s0.next=s+1; s1.next=s+2; s2.next=s; p=s; q=p-next; r=q-next; sum+=q-next-num; sum+=r-next-next-num; printf(“%d/n“,sum); (分数:40.00)填空项 1:_ (正确答案:5)解析:程序通过语句“s0.next=s+1; s1.next=s+2; s2.next=s;”将结构体变量 s 中各结点链接成
30、了一个 循环链表,即最后一个结点的指针域指向了头结点(s2.next=s;),整个链表形成一个环,并通过语句“p=s; q=p-next; r=q-next;”将结构体指针变量 p、q、r 指向了各结点,故本题输出的 sum=3+2=5。53.以下程序用于判断 a、b、c 能否构成三角形,若能,输出 YES,否则输出 NO。当给 a、b、c 输入三角形三条边长时,确定 a、b、c 能构成三角形的条件是需同时满足三 个条件:a+bc,a+cb,b+ca。请填空。 main1 float a,b,c; scanf(“%f%f%f“, if(= 2)printf(“YES/n“); /*a、b、c
31、能构成三角形*/ else printf(“NO/n“); /*a、b、c 不能构成三角形*/ (分数:40.00)填空项 1:_ (正确答案:(a+bc) main1 int x,y; scanf(“%d“, y=sub(sub(sub(x); printf(“%d/n“,y); 若运行时输入 1234,程序的输出结果是 2。 (分数:40.00)填空项 1:_ (正确答案:10)解析:本题考查的是函数的调用,函数 sub 调用后的返回值仍被作为实参传递给函数 sub 的形参,此种调 用连续进行 3 次,第一次调用:sub(1234)的返回值为 1234/10+1234%10,即 127;第
32、二次调用:sub(127)的 返回值为 127/10+127%10;即 19;第三次调用:sub(19)的返回值为 19/10+19%10,即 10。所以程序输出的 结果是 10。57.下面程序的运行结果是: 1 int f( int a , int n) if(n1) return a0+f( else return a0; main ( ) int aa3=1,2,3,s; s=f( ; printf(“%d/n”,s); (分数:40.00)填空项 1:_ (正确答案:6)解析:58.以下函数 fun 的功能是返回 str 所指字符串中以形参 c 中字符开头的后续字符串的首 地址,例如:
33、str 所指字符串为:Hello!,c 中的字符为 e,则函数返回字符串:ello!的首地址。若 str 所指字符串为空串或不包含 c 中的字符,则函数返回 NULL。请填空。 char *fun(char *str, char c) int n=0;char *p=str; if(p!=NULL) while(pn!=c if(pn= /0) return NULL; return( 1); (分数:40.00)填空项 1:_ (正确答案:strn 或 *(str+n) 或 pn 或 p+n)解析:此题主要是将形参 c 中的字符与 str 中的字符相比较,返加以形参 c 中字符开头的后续字符
34、串,题目 中的变量 n 起到了记录形参 c 中字符所在 str 字符串中的位置,固返回的结果用 strn或其等效形式表示。59.下面程序的运行结果是: 1。 fun(int t,int n) int i,m; if(n=1) return t0; else if(n=2) m=fun(t,n-1); return m; main2 int a=11,4,6,3,8,2,3,5,9,2; printf(“%d/n“,fun(a,10); (分数:40.00)填空项 1:_ (正确答案:11)解析:此题主要考核的知识点是数组名作为函数参数及函数调用和参数的传递。调用实参可知 n=10,形参 数组
35、t 指向实参 a 的首地址 t0=11。执行 fun-|_|-函数的 if-else 语句,因为 n=10 所以执行 else 语句,在满足 if(n=2) 的条件下:m=fun(t0,9), m=fun(t0,8), m=fun(t0,7),m=fun(t0,2),.m=fun(t0,1),当 n=1 时满足 if(n=1)的条件,所以执行此处的 return 语句,返回数组首地址指向的值 t0,所以答案为 11。60.以下程序中给指针 p 分配三个 double 型动态内存单元,请填空。 # include stdlib.h main ( ) double *p; p=(double *)
36、 malloc( 1); p0=1.5;p1=2.5;p2=3.5; printf(“%f%f%f/n”,p0,p1,p2); (分数:40.00)填空项 1:_ (正确答案:sizeof(double)*3)解析:61.有以下程序 main( ) int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf(“%d/n”,x); 执行后输出结果是 1。 (分数:40.00)填空项 1:_ (正确答案:-4)解析:62.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。 1( double,double); main( )
37、double x,y; scanf(“%lf%lf“, printf(“%lf/n“,max(x,y); double max(double a,double b) return(ab ? a:b); (分数:40.00)填空项 1:_ (正确答案:double max)解析:63.有以下程序: #includestdio.h main( ) char c; while( (c=getchar1 )!=?) putchar(- - c); 程序运行时,如果从键盘输入 Y? N?回车,则输出结果为 2。 (分数:40.00)填空项 1:_ (正确答案:X)解析:64.以下 sum 函数的功能是计
38、算下列级数之和。 (分数:40.00)填空项 1:_ (正确答案:a=1;b=1;s=1)解析:65.计算机软件分为系统软件和应用软件,操作系统属于 1。(分数:40.00)填空项 1:_ (正确答案:系统软件)解析:计算机软件可分为系统软件和应用软件,操作系统属于系统软件。66.在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为 1。(分数:-1.00)填空项 1:_ (正确答案:消息)解析:在面向对象技术中,主要用到对象(object)、类(class)、方法(method)、消息 (message)、继承(inheritance)、封装(encapsulation)等基
39、本概念。其中消息是用来请求对象执行某一处理或回答某些信息的要求。 67.用的黑箱测试有等价分类法、 1、因果图法和错误推测法 4 种。(分数:-1.00)填空项 1:_ (正确答案:边值分析法)解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法 4 种。 68.对软件是否能达到用户所期望的要求的测试称为 1。(分数:-1.00)填空项 1:_ (正确答案:有效性测试)解析:69.长度为 n 的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为 1。(分数:
40、-1.00)填空项 1:_ (正确答案:n/2)解析:在线性表的任何位置插入一个元素的概率相等,即概率为 p=1/(n+1),则插入一个元素时所需移动元素的平均次数为 E=1/(n+1)(n-i+1)=n/2。70.数据库保护分为:安全性控制、 1、并发性控制和数据的恢复。(分数:-1.00)填空项 1:_ (正确答案:完整性控制)解析:安全性控制:防止未经授权的用户有意或无意存取数据库巾的数据,以免数据被泄露、更改或破坏;完整性控制:保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作;并发控制:正确处理好多用户、多任务环境下的并发操作,防止错误发生;恢复:当数据库被破坏或数据不正确时,使数据库能恢复到正确的状态。