软件工程基础试题九.docx

上传人:b****5 文档编号:5612922 上传时间:2022-12-29 格式:DOCX 页数:16 大小:34.79KB
下载 相关 举报
软件工程基础试题九.docx_第1页
第1页 / 共16页
软件工程基础试题九.docx_第2页
第2页 / 共16页
软件工程基础试题九.docx_第3页
第3页 / 共16页
软件工程基础试题九.docx_第4页
第4页 / 共16页
软件工程基础试题九.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

软件工程基础试题九.docx

《软件工程基础试题九.docx》由会员分享,可在线阅读,更多相关《软件工程基础试题九.docx(16页珍藏版)》请在冰豆网上搜索。

软件工程基础试题九.docx

软件工程基础试题九

C语言

第一大题(每题1分)

1.已知longi=32768;执行语句printf("%d",i);屏幕显示____。

A)-1B)-32768C)1D)32768

2.已知:

chara;intb;floatc;doubled;执行语句"c=a+b+c+d;"后,变量c的数据类型是。

A)intB)charC)floatD)double

3.用十进制表示表达式"12|012"的值是____。

A)1B)0C)12D)14

4.表达式sizeof(double)是。

A)函数调用B)double型表达式C)int型表达式D)非法表达式

5.若用数组名作为函数调用时的实参,则实际上传递给形参的是。

A)数组首地址B)数组的第一个元素值

C)数组中全部元素的值D)数组元素的个数

6.下面程序的输出结果是____。

#include

main()

{inta=1,*p,**pp;

pp=&p;

p=&a;

a++;

printf("%d,%d,%d\n",a,*p,**pp);

}

A)2,1,1B)2,1,2C)2,2,2D)程序有错误

7.下面程序的输出结果是____。

main()

{char*alpha[7]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX","YZ"};

char**p;

inti;

p=alpha;

for(i=0;i<4;i++)

printf("%c",*(p[i]));

printf("\n");

}

A)AEIMB)BFJNC)ABCDD)DHLP

8.下面程序的输出结果是____。

#include

char*pp[2][3]={"abc","defgh","ijkl","mnopqr","stuvw","xyz"};

main()

{printf("%c\n",***(pp+1));/*①*/

printf("%c\n",**pp[0]);/*②*/

printf("%c\n",(*(*(pp+1)+1))[4]);/*③*/

printf("%c\n",*(pp[1][2]+2));/*④*/

printf("%s\n",**(pp+1));/*⑤*/

}

①A)aB)dC)iD)m

②A)aB)dC)iD)m

③A)hB)lC)qD)w

④A)kB)oC)uD)z

⑤A)ijklB)mnopqrC)stuvwD)xyz

9.下面程序的输出结果是____。

#include"stdio.h"

structstr1

{charc[5];

char*s;

};

main()

{structstr1s1[2]={{"ABCD""EFGH"},{"IJK","LMN"}};

structstr2

{structstr1sr;

intd;

}s2={"OPQ","RST",32767};

structstr1*p[2];

p[0]=&s1[0];

p[1]=&s1[1];

printf("%s",++p[1]->s);/*①*/

printf("%c",s2.sr.c[2]);/*②*/

}

①A)LMNB)MNC)ND)IJK

②A)OB)PC)QD)R

10.以下程序的输出结果是____。

structst

{intx,*y;

}*p;

ints[]={10,20,30,40};

structsta[]={1,&s[0],2,&s[1],3,&s[2],4,&s[3]};

main()

{p=a;

printf("%d\n",++(*(++p)->y));

}

A)10B)11C)20D)21

第二大题(程序填空题,每题2分)

1.下面程序的功能是输入学生的姓名和成绩,然后输出。

#include

structstuinf

{charname[20];/*学生姓名*/

intscore;/*学生成绩*/

}stu,*p;

main()

{p=&stu;

printf("Entername:

");

gets(①);

printf("Enterscore:

");

scanf("%d",②);

printf("Output:

%s,%d\n",③,④);

}

2.下面程序的功能是按学生的姓名查询其成绩排名和平均成绩。

查询时可连续进行,直到输入0时才结束。

#include

#include

#defineNUM4

structstudent

{intrank;

char*name;

floatscore;

};

①stu[]={3,"liming",89.3,

4,"zhanghua",78.2,

1,"anli",95.1,

2,"wangqi",90.6

};

main()

{charstr[10];

inti;

do

{printf("Enteraname");

scanf("%s",str);

for(i=0;i

if(②)

{printf("Name:

%8s\n",stu[i].name);

printf("Rank:

%3d\n",stu[i].rank);

printf("Average:

%5.1f\n",stu[i].score);

③;

}

if(i>=NUM)printf("Notfound\n");

}while(strcmp(str,"0")!

=0);

}

3.下面程序的功能是从终端上输入5个人的年龄、性别和姓名,然后输出。

#include"stdio.h"

structman

{charname[20];

unsignedage;

charsex[7];

};

main()

{structmanperson[5];

data_in(person,5);

data_out(person,5);

}

data_in(structman*p,intn)

{structman*q=①;

for(;p

{printf("age:

sex:

name");

scanf("%u%s",&p->age,p->sex);

②;

}

}

data_out(structman*p,intn)

{structman*q=__③__;

for(;p

printf("%s;%u;%s\n",p->name,p->age,p->sex);

}

4.输入N个整数,储存输入的数及对应的序号,并将输入的数按从小到大的顺序进行排列。

要求:

当两个整数相等时,整数的排列顺序由输入的先后次序决定。

例如:

输入的第3个整数为5,第7个整数也为5,则将先输入的整数5排在后输入的整数5的前面。

程序如下:

#include"stdio.h"

#defineN10

struct

{intno;

intnum;

}array[N];

main()

{inti,j,num;

for(i=0;i

{printf("enterNo.%d:

",i);

scanf("%d",&num);

for(①;j>=0&&array[j].num②num;③)

array[j+1]=array[j];

array[④].num=num;

array[⑤].no=i;

}

for(i=0;i

printf("%d=%d,%d\n",i,array[i].num,array[i].no);

}

5.以下程序的功能是:

读入一行字符(如:

a、...y、z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。

#include

main()

{structnode

{charinfo;

structnode*link;

}*top,*p;

charc;

top=NULL;

while((c=getchar())①)

{p=(structnode*)malloc(sizeof(structnode));

p->info=c;

p->link=top;

top=p;

}

while(top)

{②;

top=top->link;

putchar(p->info);

free(p);

}

}

第三大题(写程序5分)

输入n值,输出如图所示图形。

参考答案

第一大题

1.答案:

B

注释:

长整型数32768在计算机内的表示是1000000000000000,以一般整型进行输出时,此数恰是-32768的补码。

2.答案:

C

3.答案:

D

4.答案:

C

5.答案:

A

6.参考答案:

C

注释:

p是指针,pp是指向指针的指针。

7.参考答案:

A

注释:

对于指向数组的指针变量可以做下标运算,p[i]和alpha[i]都是指向字符串的首地址,*p[i]取出字符串的第一个字符。

8.参考答案:

①D②A③D④D⑤B

注释:

pp是一个二维指针数组,pp+1指向数组的第二维,*(pp+1)是第二维的起始地址,**(pp+1)是第二维第一个元素的地址,***(pp+1)是第二维第一个元素的内容,所以,①的参考答案应选D。

*(pp+1)+1是第二维第二个元素的地址,*(*(pp+1)+1)是第二维第二个元素,(*(*(pp+1)+1))[4]则是第二维第二个元素所指字符串下标为4的元素,即是字符w,故③应当选D。

9.参考答案:

①B②C

10.参考答案:

D

第二大题

1.答案:

①stu.name②&stu.score③p->name④p->score

注释:

这是结构中的最基本概念。

2.答案:

①structstudent②strcmp(stu[i].name,str)==0③break

注释:

程序的主体是一个二重循环,内层for循环完成查找学生的工作。

①处是进行结构数组说明并初始化,按照结构变量说明的格式规定,应该填写:

strcutstudent。

②处为if语句的逻辑条件,应当是当查找到指定的学生后输出学生的情况,因此应当填写:

strcmp(stu[i].name,str)==0。

③处应当将控制退出内层的for循环,只能选择break语句。

3.答案:

①p+n②gets(p->name)③p+n

注释:

本程序是通过函数完成对于结构数组的输入和输出操作。

函数data_in和data_out十分相似,都是通过结构指针p和结构指针q来操作结构数组的元素。

由于指针q在两个函数中的作用相同,所以①和③填写的内容也应该是相同的;由for语句中的循环终止条件"p

②应当完成姓名的输入工作,应当为gets(p->name)。

4.答案:

①j=i-1②>③j--④j+1⑤j+1

注释:

程序的基本思想是:

对于输入的第i个整数num,从数组array中已有的元素中倒序开始查找。

若数组array中的第j个元素的值大于num,则将数组中的元素j向后移动一个位置;否则,就应将num插入到当前位置作为元素j。

因此,程序的基本设计思想就是插入排序。

程序中内层的for循环完成查找插入位置的工作,因此答案①、②和③有密切的关系,要统一考虑。

同样,程序中的答案④和⑤也有密切的关系,要统一考虑。

5.答案:

①!

='\n'②p=top

第三大题

main()

{inti,j,n;

printf("\nPleaseEntern:

");

scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n;j++)

if(j<=i)printf("1");

elseprintf("%3d",j-i+1);

printf("\n");

}

}

 

数据结构

第一大题(每题2分)

1.组成数据的基本单位是()。

(A)数据项(B)数据类型(C)数据元素(D)数据变量

2.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是()。

(A)线性结构(B)树型结构(C)图型结构(D)集合

3.数组的逻辑结构不同于下列()的逻辑结构。

(A)线性表(B)栈(C)队列(D)树

4.二叉树中第i(i≥1)层上的结点数最多有()个。

(A)2i(B)2i(C)2i-1(D)2i-1

5.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为()。

(A)p->next=p->next->next(B)p=p->next

(C)p=p->next->next(D)p->next=p

6.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是()。

(A)6(B)4(C)3(D)2

7.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为()。

(A)100(B)40(C)55(D)80

8.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为()。

(A)3(B)4(C)5(D)1

9.根据二叉树的定义可知二叉树共有()种不同的形态。

(A)4(B)5(C)6(D)7

.10.设有以下四种排序方法,则()的空间复杂度最大。

(A)冒泡排序(B)快速排序(C)堆排序(D)希尔排序

第二大题(5分)

已知二叉树的存储结构为二叉链表,阅读下面算法。

typedefstructnode{

DateTypedata;

Structnode*next;

}ListNode;

typedefListNode*LinkList;

LinkListLeafhead=NULL;

VoidInorder(BinTreeT)

{

LinkLists;

If(T){

Inorder(T->lchild);

If((!

T->lchild)&&(!

T->rchild)){

s=(ListNode*)malloc(sizeof(ListNode));

s->data=T->data;

s->next=Leafhead;

Leafhead=s;

}

Inorder(T->rchild);

}

}

对于如下所示的二叉树

 

 

 

 

 

 

 

 

(1)画出执行上述算法后所建立的结构;

(2)说明该算法的功能。

参考答案:

第一大题:

1.C2.C3.D4.C5.A

6.C7.C8.B9.B10.B

第二大题 

33.

(1)Leafhead

F

 

 

H

 

 

G

 

 

D

(2)中序遍历二叉树,按遍历序列中叶子结点数据域的值构建一个以Leafhead为头指针的逆序单链表(或按二叉树中叶子结点数据自右至左链接成一个链表)。

数据库

前三题每题5分,最后题10分

1.使用数据库系统有什么好处?

2.数据库管理系统的主要功能有哪些?

3.数据库的完整性概念与数据库的安全性概念有什么区别和联系?

4.建立一个关于系、学生、班级、学会等诸信息的关系数据库。

学生:

学号、姓名、出生年月、系名、班号、宿舍区。

班级:

班号、专业名、系名、人数、入校年份。

系:

系名、系号、系办公地点、人数。

学会:

学会名、成立年份、办公地点、人数。

语义如下:

一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。

一个系的学生住在同一宿舍区。

每个学生可参加若干学会,每个学会有若干学生。

学生参加某学会有一个入会年份。

请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。

指出各关系模式的候选码、外部码,有没有全码存在?

参考答案:

1.使用数据库系统有什么好处?

答:

使用数据库系统的好处是由数据库管理系统的特点或优点决定的。

使用数据库系统的好处很多,例如,可以大大提高应用开发的效率,方便用户的使用,减轻数据库系统管理人员维护的负担,等等。

使用数据库系统可以大大提高应用开发的效率。

因为在数据库系统中应用程序不必考虑数据的定义、存储和数据存取的具体路径,这些工作都由DBMS来完成。

用一个通俗的比喻,使用了DBMS就如有了一个好参谋、好助手,许多具体的技术工作都由这个助手来完成。

开发人员就可以专注于应用逻辑的设计,而不必为数据管理的许许多多复杂的细节操心。

还有,当应用逻辑改变,数据的逻辑结构也需要改变时,由于数据库系统提供了数据与程序之间的独立性,数据逻辑结构的改变是DBA的责任,开发人员不必修改应用程序,或者只需要修改很少的应用程序,从而既简化了应用程序的编制,又大大减少了应用程序的维护和修改。

使用数据库系统可以减轻数据库系统管理人员维护系统的负担。

因为DBMS在数据库建立、运用和维护时对数据库进行统一的管理和控制,包括数据的完整性、安全性、多用户并发控制、故障恢复等,都由DBMS执行。

总之,使用数据库系统的优点是很多的,既便于数据的集中管理,控制数据冗余,提高数据的利用率和一致性,又有利于应用程序的开发和维护。

读者可以在自己今后的工作中结合具体应用,认真加以体会和总结。

2.数据库管理系统的主要功能有哪些?

答:

(l)数据库定义功能;

(2)数据存取功能;

(3)数据库运行管理;

(4)数据库的建立和维护功能。

3.数据库的完整性概念与数据库的安全性概念有什么区别和联系?

答:

数据的完整性和安全性是两个不同的概念,但是有一定的联系。

前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(Garba:

eInGarba:

eout)所造成的无效操作和错误结果。

后者是保护数据库防止恶意的破坏和非法的存取。

也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。

4.建立一个关于系、学生、班级、学会等诸信息的关系数据库。

学生:

学号、姓名、出生年月、系名、班号、宿舍区。

班级:

班号、专业名、系名、人数、入校年份。

系:

系名、系号、系办公地点、人数。

学会:

学会名、成立年份、办公地点、人数。

语义如下:

一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。

一个系的学生住在同一宿舍区。

每个学生可参加若干学会,每个学会有若干学生。

学生参加某学会有一个入会年份。

请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。

指出各关系模式的候选码、外部码,有没有全码存在?

解:

(1)关系模式如下:

学生:

S(Sno,Sname,Sbirth,Dept,Class,Rno)

班级:

C(Class,Pname,Dept,Cnum,Cyear)

系:

D(Dept,Dno,Office,Dnum)

学会:

M(Mname,Myear,Maddr,Mnum)

(2)每个关系模式的最小函数依赖集如下:

A、学生S(Sno,Sname,Sbirth,Dept,Class,Rno)的最小函数依赖集如下:

SnoSname,SnoSbirth,SnoClass,ClassDept,DEPTRno

传递依赖如下:

由于SnoDept,而DeptSno,DeptRno(宿舍区)

所以Sno与Rno之间存在着传递函数依赖。

由于ClassDept,DeptClass,DeptRno

所以Class与Rno之间存在着传递函数依赖。

由于SnoClass,ClassSno,ClassDept

所以Sno与Dept之间存在着传递函数依赖。

B、班级C(Class,Pname,Dept,Cnum,Cyear)的最小函数依赖集如下:

ClassPname,ClassCnum,ClassCyear,PnameDept.

由于ClassPname,PnameClass,PnameDept

所以C1ass与Dept之间存在着传递函数依赖。

C、系D(Dept,Dno,Office,Dnum)的最小函数依赖集如下:

DeptDno,DnoDept,DnoOffice,DnoDnum

根据上述函数依赖可知,Dept与Office,Dept与Dnum之间不存在传递依赖。

D、学会M(Mname,Myear,Maddr,Mnum)的最小函数依赖集如下:

MnameMyear,MnameMaddr,MnameMnum

该模式不存在传递依赖。

(3)各关系模式的候选码、外部码,全码如下:

A、学生S候选码:

Sno;外部码:

Dept、Class;无全码

B、班级C候选码:

Class;外部码:

Dept;无全码

C、系D候选码:

Dept或Dno;无外部码;无全码

D、学会M候选码:

Mname;无外部码;无全码

软件工程

5个题,每题5分。

1.应该怎样来划分阶段?

2.某单位拟开发一个计算机房产管理系统,要求系统具有分房、调房、退房和查询统计等功能。

房产科将用户申请表输入系统后,系统首先检查申请表的合法性,对不合法的申请表,系统拒绝接收;对合法的申请表根据类型分别进行处理。

3.比较层次方框图与结构图是的异同?

4.软件测试的基本任务?

5.等价分类法的测试

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1