计算机c二级复习题.docx
《计算机c二级复习题.docx》由会员分享,可在线阅读,更多相关《计算机c二级复习题.docx(23页珍藏版)》请在冰豆网上搜索。
![计算机c二级复习题.docx](https://file1.bdocx.com/fileroot1/2023-7/24/871f8466-e178-4367-8ca2-88487c3e5294/871f8466-e178-4367-8ca2-88487c3e52941.gif)
计算机c二级复习题
第三套
一、选择题
1.下列叙述中正确的是______。
A、线性表是线性结构
B、栈与队列是非线性结构
C、线性链表是非线性结构
D、二叉树是线性结构
根据数据结构中各数据元素之间前后间关系的复杂程度,一般将数据结构分为两大类型:
线性结构与非线性结构。
如果一个非空的数据结构满足下列两个条件:
(1)有且只有一个根结点;
(2)每一个结点最多有一个前件,也最多有一个后件。
则称该数据结构为线性结构,又称线性表。
所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。
本题答案是A。
2.下面概念中,不属于面向对象方法的是______。
A、对象
B、继承
C、类
D、过程调用
面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。
面向对象方法从对象出发,发展出对象,类,消息,继承等概念。
本题答案为D。
3.在关系数据库中,用来表示实体之间联系的是______。
A、树结构
B、网结构
C、线性表
D、二维表
在关系数据库中,用二维表来表示实体之间联系。
本题答案为D。
4.程序流程图(PFD)中的箭头代表的是______。
A、数据流
B、控制流
C、调用关系
D、组成关系
程序流程图(PFD)是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图,其箭头代表的是控制流。
本题答案为B。
5.在一棵二叉树上第5层的结点数最多是______。
A、8
B、16
C、32
D、15
根据二叉树的性质:
二叉树第i(i≥1)层上至多有2i-1个结点。
得到第5层的结点数最多是16。
本题答案为B。
6.数据处理的最小单位是______。
A、数据
B、数据元素
C、数据项
D、数据结构
数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。
本题答案为C。
7.在下列选项中,哪个不是一个算法一般应该具有的基本特征______。
A、确定性
B、可行性
C、无穷性
D、拥有足够的情报
作为一个算法,一般应具有以下几个基本特征。
1、可行性
2、确定性
3、有穷性
4、拥有足够的情报
本题答案为C。
8.将E-R图转换到关系模式时,实体与联系都可以表示成______
A、属性
B、关系
C、键
D、域
关系是由若干个不同的元组所组成,因此关系可视为元组的集合,将E-R图转换到关系模式时,实体与联系都可以表示成关系。
本题答案为B。
9.软件调试的目的是______。
A、发现错误
B、改正错误
C、改善软件的性能
D、挖掘软件的潜能
由程序调试的概念可知:
程序调试活动由两部分组成,其一是根据错误的迹象确定程序中错误的确切性质、原因和位置。
其二,对程序进行修改,排除这个错误。
所以程序调试的目的就是诊断和改正程序中的错误。
本题答案为B。
10.在结构化方法中,软件功能分解属于下列软件开发中的______阶段。
A、详细设计
B、需求分析
C、总体设计
D、编程调试
总体设计过程通常由两个主要阶段组成:
系统设计,确定系统的具体实现方案;结构设计,确定软件结构。
为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。
分析员结合算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能。
本题答案为C。
二、填空题
1.与结构化需求分析方法相对应的是______方法。
标准答案为:
结构化设计
2.面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个______。
标准答案为:
实体
3.顺序存储方法是把逻辑上相邻的结点存储在物理位置______的存储单元中。
标准答案为:
相邻
4.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体"项目主管"与实体"项目"的联系属于______的联系。
标准答案为:
一对多或1对多或一对n或1:
N或1:
n或1:
n或1:
N或一对m或1:
M或1:
m或1:
m或1:
N
5.软件维护活动包括以下几类:
改正性维护、适应性维护、______维护和预防性维护。
标准答案为:
完善性
6.有以下程序
main()
{intn=0,m=1,x=2;
if(!
n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf("%d\n",x);
}
执行后输出的结果是______。
标准答案为:
-4
因为n=0,所以!
n为真,执行x-=1;即x=x-1,因为x=2,所以x=x-1=2-1=1;
m=1,为真,执行x-=2;即x=x-2,由上得出x=1,所以x=x-2=1-2=-1;
x=-1,为真,执行x-=3;即x=x-3,由上得出x=-1,所以x=x-3=-1-3=-4。
7.以下程序运行结果是______。
#include
typedefstructstudent{
charname[10];
longsno;
floatscore;
}STU;
main()
{STU
a={"Zhangsan",2001,95},b={"Shangxian",2002,90},
c={"Anhua",2003,95},d,*p=&d;
d=a;
if(strcmp(a.name,b.name)>0)d=b;
if(strcmp(c.name,d.name)>0)d=c;
printf("%ld%s\n",d.sno,p->name);
}
标准答案为:
2002Shangxian
strcmp()函数的功能是比较两个字符串的大小,因为a.name=Zhangsan,b.name=Shangxian,所以strcmp(a.name,b.name)>0为真,执行d=b;此时d.name=Shangxian,接着比较c.name与d.name,因为c.name=Anhua,所以strcmp(c.name,d.name)>0不成立,为假,不执行d=c;。
所以d.name=Shangxian,d.sno=2002。
8.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指内存空间中,形成一个新字符串s。
请填空。
voidsstrcpy(char*s,char*t)
{while(*s++=______);}
main()
{charstr1[100],str2[]="abcdefgh";
sstrcpy(str1,str2);
printf("%s\n",str1);
}
标准答案为:
*t++
要使sstrcpy()函数实现字符串复制,必须将t字符串中的每个字符逐个拷到s字符串中,所以可以使用*s=*t;s++;t++。
或者可以写成*s++=*t++,本题只有一个空,可以填入*t++。
9.已知字符A的ASCII码值为65,以下语句的输出结果是______。
charch='B';
printf("%c%d\n",ch,ch);
标准答案为:
B66
printf函数的一般格式为
printf(格式控制,输出表列)
"格式控制"是用双引号括起来的字符串,也称"转换控制字符串"。
1、d格式符,用来输出十进制整数。
2、c格式符,用来输出一个字符。
已知字符A的ASCII码值为65,则字符B的ASCII码值为66,所以本题输出结果为:
B66
10.下面rotate函数的功能是:
将n行n列的矩阵A转置为A',例如:
|1234|
|5678|
当A=|9101112|
|13141516|
|15913|
|261014|
则A'=|371115|
|481216|
请填空。
#defineN4
voidrotate(inta[][])
{inti,j,t;
for(i=0;ifor(j=0;______;j++)
{t=a[i][j];
______;
a[j][i]=t;
}
}
标准答案为:
j<=i或i>=j与a[i][j]=a[j][i]
将矩阵转置就是将行列数互换,即第二行第三列的数与第三行第二列的数进行互换。
所以第一个空应当填入j<=i,第二空填入a[i][j]=a[j][i]
11.下面程序的运行结果是:
______。
intf(inta[],intn)
{if(n>1)returna[0]+f(&a[1],n-1);
elsereturna[0];
}
main()
{intaa[3]={1,2,3},s;
s=f(&aa[0],3);printf("%d\n",s);
}
本题考查的是递归调用。
aa[3]={1,2,3},n=3,满足条件n>1,执行a[0]+f(&a[1],n-1);后为1+f(&a[1],2),此时n=2,仍满足条件n>1,继续调用a[0]+f(&a[1],n-1);,因为此时传递的是a[1]的地址,这时的a[0]应当为原数组中的a[1],即为2,执行a[0]+f(&a[1],n-1);后为1+2+f(&a[1],1),因为第二次调用后数组中的元素为2,3,所以此次的a[1]应当为3,调用后的a[0]为3。
所以最后结果为1+2+3=6。
12.函数fun的功能是计算x^n。
doublefun(doublex,intn)
{inti;doubley=1;
for(i=1;i<=n;i++)y=y*x;
returny;
}
主函数中已经正确定义m、a、b变量并赋值,并调用fun函数计算:
m=a^4+b^4-(a+b)^3。
实现这一计算的函数调用语句为______。
标准答案为:
fun(a,4)+fun(b,4)-fun((a+b),3)或fun(b,4)+fun(a,4)-fun((a+b),3);
函数fun的功能是计算x的n次方,所以a的4次方的调用函数应当为fun(a,4),b的4次方的调用函数应当为fun(b,4),(a+b)的3次方的调用函数应当为fun((a+b),3),所以,实现m=a^4+b^4-(a+b)^3这一计算的函数调用语句为:
fun(a,4)+fun(b,4)-fun((a+b),3);。
13.以下程序给指针p分配三个double型动态内存单元,请填空。
#include
main()
{double*p;
p=(double*)malloc(______);
p[0]=1.5;p[1]=2.5;p[2]=3.5;
printf("%f%f%f\n",p[0],p[1],p[2]);
}
标准答案为:
3*sizeof(double)或sizeof(double)*3或24
malloc(size)在内存的动态存储区中分配一个长度为size的连续空间。
此函数的值(即"返回值")是一个指针,它的值是该分配域的起始地址。
如果此函数未能成功地执行,则返回值为0。
本题中要求分配三个double型动态内存单元,所以size处应当为3*sizeof(double)。
14.以下sum函数的功能是计算下列级数之和。
S=1+x+x^2/2!
+x^3/3!
+…+x^n/n!
请给函数中的各变量正确赋初值。
doublesum(doublex,intn)
{inti;
doublea,b,s;
______
for(i=1;i<=n;i++)
{a=a*x;b=b*i;s=s+a/b;}
returns;
}
标准答案为:
a=1.0;b=1.0;s=1.0;或a=1.0;s=1.0;b=1.0;或b=1.0;s=1.0;a=1.0;或s=1.0;a=1.0;b=1.0;
各种数值型数据间进行混合运算时,不同类型的数据要先转换成同一类型,然后进行运算。
如果一个数据是float型或double型,则另一数据要先转换为double型,结果为double型。
第四套
一、选择题
1.下列叙述中,不属于软件需求规格说明书的作用的是______。
A、便于用户、开发人员进行理解和交流
B、反映出用户问题的结构,可以作为软件开发工作的基础和依据
C、作为确认测试和验收的依据
D、便于开发人员进行需求分析
软件需求规格说明书(SRS,SoftwareRequirementSpecification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。
它有以下几个方面的作用:
①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。
本题答案为D。
2.面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______。
A、模拟现实世界中不同事物之间的联系
B、强调模拟现实世界中的算法而不强调概念
C、使用现实世界的概念抽象地思考问题从而自然地解决问题
D、鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考
面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是,使用现实世界的概念抽象地思考问题从而自然地解决问题。
它强调模拟现实世界中的概念而不强调算法,它鼓励开发者在软件开发的绝大部分中都用应用领域的概念去思考。
本题答案为C。
3.按条件f对关系R进行选择,其关系代数表达式为______。
A、
B、
C、бf(R)
D、∏f(R)
选择运算是一个一元运算,关系R通过选择运算(并由该运算给出所选择的逻辑条件)后仍为一个关系。
这个关系是由R中那些满足逻辑条件的元组所组成。
如果关系的逻辑条件为f,则R满足f的选择运算可以写成:
бf(R)。
本题答案为C。
4.在计算机中,算法是指______。
A、查询方法
B、加工方法
C、解题方案的准确而完整的描述
D、排序方法
计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:
可行性、确定性、有穷性和拥有足够的情报。
本题答案为C。
5.用树形结构来表示实体之间联系的模型称为______
A、关系模型
B、层次模型
C、网状模型
D、数据模型
层次模型是最早发展出来的数据库模型。
它的基本结构是树形结构,这种结构方式在现实世界中很普遍,如家族结构、行政组织机构,它们自顶向下、层次分明。
本题答案为B
6.单个用户使用的数据视图的描述称为______。
A、外模式
B、概念模式
C、内模式
D、存储模式
外模式是用户的数据视图,也就是用户所见到的数据模式;全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;存储模式即为内模式。
本题答案为A。
7.设有下列二叉树:
对此二叉树中序遍历的结果为______。
A、ABCDEF
B、DBEAFC
C、ABDECF
D、DEBFCA
所谓中序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。
本题答案为B。
8.在单链表中,增加头结点的目的是______。
A、方便运算的实现
B、使单链表至少有一个结点
C、标识表结点中首结点的位置
D、说明单链表是线性表的链式存储实现
头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点目的是为了便于运算的实现。
本题答案为A。
9.软件开发的结构化生命周期方法将软件生命周期划分成______。
A、定义、开发、运行维
B、设计阶段、编程阶段、测试阶段
C、总体设计、详细设计、编程调试
D、需求分析、功能定义、系统设
通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
它可以分为软件定义、软件开发及软件运行维护三个阶段。
本题答案为A。
10.在软件工程中,白箱测试法可用于测试程序的内部结构。
此方法将程序看做是______。
A、循环的集合
B、地址的集合
C、路径的集合
D、目标的集合
软件的白盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
本题答案为C。
二、填空题
1.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:
前序遍历、______遍历和后序遍历。
标准答案为:
中序
2.如果一个工人可管理多个设施,而一个设施只被一个工人管理,则实体"工人"与实体"设备"之间存在______联系。
标准答案为:
一对多或1对多或一对n或1:
N或1:
n或1:
n或1:
N或一对m或1:
M或1:
m或1:
m或1:
N
实体之间的对应关系称为联系,它反映现实世界事物之间的相互关联。
两个实体间的联系可以归结为三种类型:
一对一联系表现为某一实体与另一实体一一对应相关联;一对多联系表现为某一实体与相关多个实体相关联;多对多联系表现为多个实体与相关多个实体相联系。
3.软件的需求分析阶段的工作,可以概括为四个方面:
______、需求分析、编写需求规格说明书和需求评审。
标准答案为:
需求获取
4.数据结构包括数据的逻辑结构、数据的______以及对数据的操作运算
标准答案为:
存储结构
5.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。
标准答案为:
数据存储
6.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和,请填空。
main()
{inti,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)scanf("%d",______);
fro(i=0;i<20;i++)
{if(a[i]>0)
{count++;
sum+=______;
}
}
printf("sum=%d,count=%d\n",sum,count);
}
标准答案为:
&a[i]与a[i]
本题考查的是数组的输入输出。
scanf的格式为:
scanf(格式控制,地址表列),首先第一空要求填写的是地址,如果填a的话,虽然a也是地址,但a表示a[]的首地址,那么scanf输入的数永远是存放到a[0]中去了,所以填a不正确,应该填&a[i],这样才能保证将从键盘输入的数依次存入a[]中去。
第二空要求填写的主要是求和功能,sum+=______相当于sum=sum+______,所以就应该是sum=sum+a[i]进行求和。
7.以下程序中,for循环体执行的次数是______。
#defineN2
#defineMN+1
#defineKM+1*M/2
main()
{inti;
for(i=1;i{...}
...
}
标准答案为:
4或四或4次或四次
本题考查的是宏定义。
解题过程:
(1)首先计算出k的值
1)宏定义的M带入K
2)表达式为:
N+1+1*N+1/2
3)将宏定义的N带入K
4)表达式为:
2+1+1*2+1/2
5)从左到右计算的结果为:
3+2+0=5
(2)因为k=5所以循环4次。
8.以下程序运行后的输出结果是______。
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
}
printf("%d%d\n",a,b);
}
标准答案为:
21
本题考查的是switch语句。
解题过程:
(1)x=1则,switch(y)
(2)因为y=0所以:
case0:
a++;break;结果a=1
(3)继续switch(x),case2;结果a=2,b=1
(4)输出结果a=2,b=1
又因输出格式两个%d之间是空格,所以输出的两个数字之间也必为空格。
9.以下程序运行后的输出结果是______。
main()
{
inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0,j=0,s=0;
while(i++<4)
{
if(i==2||i==4)continue;
j=0;
do{s+=a[i][j];j++;}while(j<4);
}
printf("%d\n",s);
}
标准答案为:
92
本题考查的是循环的嵌套。
解题过程:
(1)当i=0时执行while
1)i<4,i=1
2)因为i=1,所以不执行continue
3)j赋值0
4)执行dowhile
①s=0+a[1][0]=5,j=1,因为j<4,所以继续循环
②s=5+a[1][1]=5+6=11,j=2,因为j<4,所以继续循环
③s=11+a[1][2]=11+7=18,j=3,因为j<4,所以继续循环
④s=18+a[1][3]=18+8,j=26,因为j=4,所以终止循环
(2)当i=1时,i<4执行while,i=2,因为i=2,所以执行continue,结束本次while循环
(3)当i=2时,i<4执行while,i=3
1)因为i=3,所以不执行continue
2)j赋值0
3)执行dowhile
①s=26
②s=26+a[3][0]=26+15=41,j=1,因为j<4,所以继续循环
③s=41+a[3][1]=41+16=57,j=2,因为j<4,所以继续循环
④s=57+a[3][2]=57+17=74,j=3,因为j<4,所以继续循环
⑤s=74+a[3][3]=74+18=92,j=4,因为j=4,所以终止循环
(4)i=3时,i<4执行while,i=4因为i=4,所以执行continue,结束本次循环
(5)当i=4时,i=4结束while循环
(6)结果输出s=92。
10.以下程序中,函数SumColumMin的功能是:
求出M行N列二维数组每列元素中的最小值,并计算它们的和值。
和值通过形参传回主函数输出。
请填空。
#defineM2
#defineN4
voidSumColumMin(inta[M][N],int*sum)
{inti,j,k,s=0;
for(i=0;i{k=0;
for(j=1;jif