计算机软件基础(一) 试卷
(课程代码 2243)
一、单项选择题(本大题共15小题,每小题2分,共30分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.下列合法的C语言标识符是 【 】
A.static B.3abc C.abe_2 D.am&t
2.己知int b=4;,执行语句b+=b++;后,b的值是 【 】
A.8 B.9 C.10 D.11
3.C语言表达式4!=3&&2&&4+1<5的值是 【 】
A.0 B.1 C.2 D.3
4.已知int a[100],*d=a;,下列错误的语句是 【 】
A.a=d; B.*d=a[10]; C.d=a+1;D.d=&a[2];
A.for(i=1,s=0;i<=100;i+ + )s+=i; B.s=0;for(i=1;i<=100;)s=s+i++”;
C.i=1;s=1;while(i<=100){s=s+i;i++;}D.i=2;s=1;while(i<=100){s=s+1;i++;)
6.下列叙述正确的是 【 】
A.while语句的循环体至少执行一次
B.do-while语句的循环体至少执行一次
C.do-while语句的循环体不能是复合语句
D.continue语句能够从循环体内转到循环体外
7.已知char strl[30],*str2=”student_no”;,执行语句strcpy(strl,str2):后,strlen(strl)
的值是 【 】
A.9 B.10 C.29 D 30
8.下列语句正确的是 【 】
A.char s[5];s=”abc”; B.char s[5]=”abcxyz”;
C.char s[]=”l2345”; D.char s[5]=(‘1’,’ 2’,’3’,’4,’5’,’\O’};
9,下列算法的时间复杂度是 【 】
for(int i=1;i<=n;i++)
for(intj=1;j<=n;j++)
a[i][j]=i+j;
A.O(nlogn) B.O(n) C.O(2n) D.O(n)
10.己知指针P和q分别指向某单链表中第一个节点和最后一个节点。假殴指针s指向
另一个单链表中某个节点,则在s所指节点之后插入P所指向的链表席执行的操作
是 【 】
A. q->next=s->next; s->next=p; B. s->nexFp: q->next=s->next;
C.p->next=-s->next;s->next=q: D.s》nexFq:p->next=s->next;
11.按照1、2、3、4、5的次序依次入栈时,不可能的出栈序列是 【 】
A.1、2、3、4、5 B.2、3、4、5、l
C.5、4、3、2、1 D.5、4、l、2、3
12.一棵二叉树的先序遍历序列为ABCDE,中序遍历序列为BADCE.则后序遍历序列
是 【 】
A.BDECA B.BCADE C.ECBDA D.ABDCE
13.下列程序的运行结果是 【 】
intx=1;
int fun(inta)
{static int b=1;
b+=a+x:
return b;
)
Main()
{inti=2;
for(i=0;i<2;i++)printf(”%d”,fun(i));
}
A.2 2 8.2 3 C.2 4 D.2 5
14.己知:
struct person
{char name[20];
int age;
)a-{”Li”,20),*p=&a:
则对结构体变量a中成员age错误的引用是 【 】
A.a.age B.p.age C.(*p).age D.p->age
15.黑盒法用在软件开发过程中的 【 】
A.软件定义阶段 B.软件设计阶段 C.软件编码阶段 D.软件测试阶段
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格上填上正确答案。错填、不填均无分。
16. 已知int a;,表达式((a=4,a*=2),a+6)的值是_______。
17.已知int a=6,b=5,c=4;,表达式a18.己知字母’A’的ASCⅡ码为65,下列程序段的输出结果是_______。
char c;’D’;
printf(”%d",c);
19.已知int n=3,k=3;,执行语句n%=k+1;后,n的值是_______。
20.二维数组A[10][10]采用以行为主序的方法存储,每个元素占4个存储单元,设
A[0] [0]的存储地址是1000,则A[8] [5]的存储地址是_______。
21.在具有m个节点的循环队列中,头指针为front,尾指针为rear,判断循环队列满的
条件是________。
22.己知一个有序表{1,4,9,13,32,41,54,62,75,77,87,95,100),用折半
法查找关键字值15时,查找不成功的比较次数是________。
23.实现递归算法所需的数据结构是________。
24.二叉树的第i(i≥1)层上最多的节点数是________。
25.软件生存周期由软件定义、软件开发和________三个时期组成。
三、解答题(本大题共4小题,每小题4分,共16分)
26.已知关键字序列为{46,57,84,32,73,36,15,48,90,20},要求:
(1)按照已给关键字的先后次序构造一棵二叉排序树:
(2)在等概率的情况下,计算已构造的二叉排序树查找成功的平均查找次数(ASL)
27.写出下列AOV网的所有拓扑排序序列。
28.给定一组权值:4、1、12、2、10,构造对应的哈夫曼树(权值小的为左子树.权
值大的为右子树),并求出该树的带权路径长度。
29.用盒图(N-S图)表示求s=1+3+5+……+(2n-1)的算法,n的值由键盘输入,其
中循环控制用while结构实现。
四、程序分析题(本大题共4小题,每小题4分,共16分)
30.写出下列程序的输出结果(答案写在右侧空白处)
#include main0 {int a[] ={1,2,3,4},i=0; do(switch(a11]) {case 2: case 3:putchar(’A’);break; case 4: case 5:putchat(‘B’); case 6:putchar(’C’);break; default:putchar(‘x’); ) )while(i++<3); ) 31.写出下列程序的输出结果(答案写在右侧空白处) #include main0 {intij,a[3] [4]= {{1,2,3,O),{2,1,5,O},{7,6,1,O}}; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][3]+=a[i][i]; for(i=0;i<3;i++) {for(i=0 j<4j++) printf(”%3d”,a[i][j]); pfintf(”\n”); } } 32.下列程序的功能是用选择法对10个整数按由大到小排序。填空完成程序。 #include main() ( inti,j,m,t; int a[10]={5,7,4,2,3,6,1,0,9,8}; for(j=0;j<9;j++) {m= ___________;① I=j+1; while(i<10)