1、
计算机软件基础
一、填空题
1.程序设计的关键在于设计出一个好的算法 。
2.数据、数据节点和数据项构成了数据组织的三个层次。其中数据项 是具有独立含义的最小标识单位。
3.数据的逻辑结构和物理结构之间的相互运算是通过算法 来实现的。
4.所有节点按1对1的邻接关系构成的整体就是线性 结构。
5.表长为0的线性表称为 空 表。
6.直接插入排序最好情况的时间复杂度为 O
2、件 。 9.算法是有穷的,而程序可以是 无穷的 。 10.实型常量在一般微型机中占用 4 个字节。 11.char型和int型的运算结果为int 型。 12.Getchar<>和putchar<>函数只能输入、输出 1 个字符。 13.源程序必须翻译成机器指令即机器语言,这一工作由编译系统 来完成。 14.字符串的长度为串中字符的个数,但在内存中所占的字节数应比长度多1 。 15.执行:a=3,b=4,a=a+b,b=a+b后,则a和b的值分别为 7 和11。 16.对于scanf<"%2d%3d%4d",&a,&b,&c>语句,若键入:l 23
3、456789,则变量b的值为345 。 17.设intx=10,y,z;执行y=z=x;x=y=-Z后,变量x的结果是 1 。 18.若有说明:Int a[][5]={1,2,3,4,5,6,7,8,9,10>,则数组第一维的大小为2 。 19.在函数定义中,若没有返回值,其类型定义为 空类型 。 20.c语言规定不能嵌套定义函数,但可以嵌套调用 函数。 21.程序中出现的/*…...*/表示注释,可以出现在程序的任何 地方。 22.c语言的数据结构是以 数据类型 的形式描述出来的。 23.%运算符的运算对象就为整数 。 24.getcha
4、r<>函数只能出现在 表达式 的位置,接收该函数的值时可以用字符型或整型变量。 25.请将│x│≤a,写成一个逻辑表达式:x<=a&&x>=-a。 26.在结构化程序的三种基本结构是指 顺序结构 、选择结构和循环结构。 27.在c语言中,二维数组在内存中的排列顺序是按 行 存入。 28.一个完整的c程序可由1个主函数或由1个主函数和 若干个 子函数组成。 29.在c语言中,变量的使用一般遵守"先定义,而使用 "的原则。 30.c语言中有两个专门的指针运算符*和&,它们都是 单 目运算符。 31.在计算机的数据处理中,将字符、声音、 光 、图形和图像均称
5、为数据。 32.在线性表的顺序存储结构中,其相邻的数据节点在物理位置上也是 相邻 的。 33.若在数据处理中,需要经常对数据进行插入、删除运算,则宜将该数据设置为 链式 存储。 34.二叉树的遍历方法有:先序遍历、后序遍历和 中序遍历 。 35.单链表表示法的基本思想是用指针 表示结点间的逻辑关系。 36.C语言规定,数组元素的下标从 0 开始,最大值为长度减1。 37.在C语言中,引用数组元素时,其数组下标的数据类型允许是整型常量或整型 表达式。 38.一个变量的作用域是指该变量在程序中的有效范围,局部变量的作用域就是其所在的 函数 。 39
6、.C语言中访问地址的方式有两种即直接存取方式和 间接存取 方式。 40.运行下列语句:int*p,*q,x[5];p=x;q=p+3;则q指向数值元素 x[3] 。 41.若某问题的空间复杂度为o<1>,则认为该问题所耗空间与问题的 规模 无关。 42.在线性表的链式存储结构中,单链表中每个节点是一个 结构类型 。 43.在三对角阵的压缩存储中,已知Aij=Bk,试建立k与i,j之间的关系为:k=2i+j 。 44.在软件的开发模型中,螺旋模型是一种 风险驱动 模型,它将瀑布模型和原型模型结合起来。 45.设有100个元素,用折半查找法进行查找时,最
7、大比较次数是7 。 二、选择题 1.下列是C语言正确的标识符的是[ D ] A.? a B.a=2 C.a.3 D.a_3 2.下列表达式中,值为1的表达式是 [ D] A.3%5 B.3/5.0 C.3/5 D.3<5 3.设变量a,b,c,d依次为字符型、整型、单精度型、双精度型,则表达式"a+b/c*d"的数据类型为[ D ] A.整型 B.字符型 C.单精度型 D.双精度型 4.能正确表达"0≤a≤10"的表达式是[ A ] A.10>=a&&a>=0 B. <10>=a>l
9、 A.11,10 B.9,10 C.11,9 D.10,9 8.下面有关for循环正确的描述是[ D ] A.for循环只能用语句循环次数已经确定的情况 B.for循环是先执行循环体语句,后判定表达式 C.在for循环中,不能用break语句跳出循环体 D.for语句的循环体中,可以包含多条语句,但要用花括号括起来 9.设有定义"int x[5]={l,2,3>;",则数组x占用的内存字节数是[ D ] A.3 B.5 C.6 D.10 10.若有定义语句"int m, n=2, *p
10、m;",则能完成m=n功能的语句为 [ B ]
A.m=*p; B.*p=*&n; C.m=&n D.m=&p
11.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为[ C ]
A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构
12.单链表的一个存储结点包含 [ D ]
A.数据域或指针域 B.指针域或链域
C.指针域和链域 D.数据域和链域
13.循环队列的队满条件为[ C ]
A.sq.rear+1>%maxsize== 11、front+1>%maxsize
B. 12、1,0>,*p=x;",则值2的表达式为[ A ]
A.* B.* C.*p+4 D.*p+5
17.算法分析的两个主要方面是[ A ]
A.空间复杂度和时间复杂度 B.正确性和简明性
C.可读性和文档性D.数据复杂性和程序复杂性
18.带头结点的单链表Head为空的判定条件是[ B ]
A.Head=NULL; B.Head->next=NULL:
C.Head->next=Head;D.均不正确;
19.一个队列的输入列序为1,2,3,4,则该队列的输出序列是[ B ]
A.4,3,2,l 13、 B.1,2,3,4 C.1,4,3,2 D.3,2,4,1
20.堆 14、 C..3E-2 D.3E-2
24.设有定义"float a=5.0,b=2.5;",则表达式 15、下列给出的符号串中,可以作为C语言标识符是的[ C ]
A.printf B.do C.GOTO D.while
28.在c语言中,合法的字符常量是[ B ]
A.//A// B./\x10/ C./0a/ D.a
29.以下表达式中与表达式"m=n++"功能完全相同的是 [ A ]
A.m=n,n=n+l B.n=n+l,m=n C.m=++n D.m+=n+1
30.若变量a, i已正确定义,且i已正确赋值,非法的表达式是[ C ]
A.a==1 B.++i 16、 C.a=a++=5 D.a= 17、"%d,",x一>;
while>;
A.2, B.1,0, C.2,1, D.2,0,
35.选用数组元素下标时,可能造成程序运行出错的下标是[ B ]
A.0 B.-1 C.正实数 D.整型变量
36.设有语句"chara[]="123",b[]={‘1’,’2’,’3’>;",下列说法正确的是 [ D ]
A.a[3]是不可知的任意字符 B.数组a,b的长度相同
C.b[3]的值为’\0’ D.数组a的长度大于数组b的长度
37.执行程序段"int x=8;while<--x 18、>6>sprintf<"*">后的输出结果是[ A ]
A.* B.** C.***D.****
38.设有定义语句:int a=l,b=2,c=3,d=4;执行下列程序段后x的值是 [ A ]
ifif 19、的循环必须用break语句才能退出。
C.do-while语句构成的循环,当while语句中的表达式值为零时结束循环。
D.do.while语句构成的循环,当while语句中的表达式值为非零时结束循环。
40.以下数组语句中,正确的是[ C ]
A.int a[][3]; B.int b[3][]={0,l,2,3};
C.int c[10][10]= {0};D.int d[3][]={{l,2}, {1,3,0>, {l}};
41.设有语句"int x[8]={5,4,3,2,1},*p=x;",则* 的值为[ C ]
20、A.5 B.4 C.3 D.2
42.计算机内部数据处理的基本单位是[ B ]
A.数据 B.数据元素 C.数据项 D.数据库
43.在一个具有n个结点的有序顺序表中插入一个新结点并仍然有序的时间复杂度是[B]
A.O<1> B.O 21、
C.rear= 22、 C. 39/12 D 43/12
三、简答题
1.软件维护工作可分为哪几类维护工作?
答:软件维护工作可分如下四类维护工作:
1>改正性维护;2>适应性维护;3>完善性维护;4>预防性维护。
2.良好的程序设计风格除了将程序文档化和格式化以外,还需要遵循哪些准则?
答:良好的程序设计风格除了将程序文档化和格式化以外,还需要遵循以下准则:
1>节俭化;2>模块化;3>简单化;4>结构化
3.用文字简述数据x进栈和退栈操作的基本步骤。
答:进栈操作的基本步骤为:
1>先判断栈是否已满,若满,则进行上溢处理,否则进行2>。
2>栈项指针上移1个节点。
3>将 23、x加入到top所指位置。 ‘
退栈操作的基本步骤为:
1>检查栈是否为空,若栈空,则进行下溢处理,否则进行2>。
2>保留被删除元素到变量x中<若不需要保存,则舍去这一步>。
3>栈顶指针下移1个节点。
4.软件测试时,程序中尚未发现的错误的数量往往与在该段程序中己发现的错误的数量成正比。所以软件测试时,除尽早地、不断地进行软件测试外,还应遵循的其它基本原则是什么?
答:软件测试时,还应遵循的其它基本原则是:
1>设计测试用例时,要给出测试的预期结果。
2>开发小组和测试小组分开。
3>要设计非法输入的测试用例。
4>在对程序修改之后要进行回归测试。
5.简述哈夫曼 24、树的性质。
答:由哈夫曼树的生成过程可得如下性质:
1>给定权值的哈夫曼树不唯一,但是WPL,为定值。
2>权值越大的节点离根节点就越近。
3>哈夫曼树中无度为l的节点。
4>哈夫曼树节点总个数刀=2×叶子节点个数一1=2×权值个数.1=2n,.一1。
6.用文字简述将内容为x节点加入顺序队列和出队操作的基本步骤。
答:将内容为x节点加入顺序队列的基本步骤为:
1>先判断队列是否已满,若满则退出,否则进行2>。
2>队尾指针下移1个节点位置。
3>在队尾指针位置加入x。
出队操作的基本步骤为:
1>先判断队列是否己空,若空则退出,否则进行2>。
2>保留队头元素到x变 25、量中。
3>队头指针下移1个节点位置。
四、程序分析题
1.下列程序运行后的输出结果是m=3
Main〔
{intk,m=0;
for +=2;
printf/%d, %d\n//, *p, * > 26、}
3.下列程序运行后的输出结果是s=55
#inlcude 27、];
s2[j]=0;
printf/%s\n",s2>;}
5.下列程序运行后的输出结果是DCBAEF
void fun ;
printf{%s\n//,p>; }
6.下列程序运行后的输出结果是 13
Main<>
{intx=11;
28、 while 29、9,6},s=0,k=0;
for<;k<4; k++> s+=x[k][k];
printf/%d\n//, s> ;}
9.下列程序段的功能是: 计算单链表的表长
int L_lklist<1klist head>
{ p=head;
j=0;
while 30、 printf/%d,//,i++>;
{int i=0;
I+=j*2;
printf/%d,%d,//,i,j>;
}
printf/%d,%d//,i,j>;}
11.下列程序运行后的输出结果是 10
int f 31、功能是 借助栈将一个带头结点的单链表倒置
void list
{Push<&ls,p->data>;p=p->next;}
p=head->next;
while>
{Pop<&ls,&x>;p->data=x;p=p->next; }}
五、程序填空题
1.下面程序是从输 32、入3个数中找出最大数,并输出最大数。
intmax 33、ag=1 ;
for 34、continue ;
flag=l;
for scanf/%c//,p>;
scanf/%c 35、//,&x>;
for< p=str ;p 36、t+1>%maxsize;
*x=sq->data[sq->front] ;
Return<1>;
}}
6.以下运算实现在链队上的入队列,请在处用适当的语句予以填充。
void EnQueue 37、正整数,将其转换成对应八进制整数的字符串,然后输出该字符串。要求用指向字符串的指针变量来处理求出的八进制数字字符。
解:
main<>
{char s[10],*p;
longx;
int y;
p=s+8;
* =/\0/;
scanf/%ld//,&x>;
while 38、子树的叶子数,两者相加就是根结点叶子数,也就是对应二叉树的叶子数。
Int leafcounts2[j++]=s 1[k++






