文档视界 最新最全的文档下载
当前位置:文档视界 › 2009专升本计科真题答案

2009专升本计科真题答案

C01

2009年福建省高职高专升本科入学考试

软件工程
专业知识试卷
计算机科学与技术

(考试时间150分钟,满分300分,共三部分)

答题说明:请将答案写在答题纸相应的位置上。
注意事项:答案写在试卷上一律不给分。


第一部分 C语言程序设计(共100分)


一、单项选择题(本大题共30小题,每小题2分,共60分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将正确答案代码填写在答题纸相应的位置上。

1、下列选项中,合法的C语言标识符是( A )
(A)my_name
(B)$234
(C)my name
(D)23b

2、已知:int x=5; 执行完printf("%d",++x); 后,输出的结果是( C )
(A)4
(B)5
(C)6
(D)不确定

3、已知:int x=5,y=3; 则逻辑表达式(x-y)&&(y-3)的值为( D )。
(A)7
(B)2
(C)1
(D)0

4、已知:int a=3,b=6,c=8; 则执行完语句:a=a>b?a:(b(A)3
(B)6
(C)8
(D)17

5、有如下程序段执行后的结果是( A )。
main()
{
int a=11,b=3;
printf("%d,%d",a/b,a%b);
}
(A)3,2
(B)11,2
(C)3,3
(D)3.3,2

6、有如下程序段:
main()
{
char c;
scanf("%c",&c);
switch(c)
{
case 'A': printf("5");
case 'B': printf("4");
case 'C": printf("3");
case 'D': printf("2");
default: printf("1");
}
}
当运行时输入“B回车”,则输出结果是( D )
(A)4
(B)43
(C)432
(D)4321

7、已知字符'a'的ASCII码值为97,'A'的ASCII码值为65,则如下程序段的运行结果是( B )。
main()
{
char c='d';
int i=c-32;
printf("%c,%d",i,i);
}
(A)d,68
(B)D,68
(C)d,100
(D)D,100

8、如下程序段的执行结果是( C )
main()
{
int x=1,y=100;
while(y>0)
{
x*=2;
y/=3;
}
printf("%d,%d",x,y);
}
(A)8,0
(B)16,0
(C)32,0
(D)64,0

9、如下选项中正确的数组定义是( C )。
(A)#define m 10; static int a[m]={3,4,5,6};
(B)static int a[2]={3,4,5,6};
(C)static int a[10]={3,4,5,6};
(D)int m=4; static int a[m]={3,4,5,6};

10、执行程序段:char str[12]; scanf("%s",str);
如果输入如下字符串(其中□表示空格):
What's□you□name?
则str的值是( A )。
(A)What's
(B)What's□
(C)What's□your
(D)What's□your□name?

11、如下程序段的运行结果是( B )。
main()
{
int i=5,sum=100;
do{ sum=sum+(--i);}while(i>=0);
printf("%d",sum);
}
(A)100
(B)109
(C)105
(D)110

12、如下程序段的运行结果是( A )。
main()
{
int i;
for(i=1;i<=10;i++)
{
if(i%3==0) continue;
printf("%d,",i);
}
}
(A)1,2,4,5,7,8,10,
(B)1,2,3,4,5,6,7,8,9,10,
(C)3,6,9,
(D)1,2,4,5,6,7,8,9,10,

13、若

有说明:int a[5][6]; 则数组a的正确引用是( D )。
(A)a[5][4]
(B)a[3,4]
(C)a(3)(4)
(D)a[3][4]

14、在C语言中,凡不加类型说明的函数,自动( B )。
(A)按无类型void处理
(B)按整型int处理
(C)按字符型char处理
(D)按浮点型float处理

15、如下程序段的输出结果是( D )。
void kk(int a,int b)
{
a=a*b;
printf("%d,%d,",a,b);
}
main()
{
int a=5,b=6;
kk(a,++b);
printf("%d,%d",a,b);
}
(A)30,6,30,6
(B)35,6,35,6
(C)30,7,5,7
(D)35,7,5,7

16、如下程序段的输出结果是( A )。
main()
{
static int a[6]={3,6,9,12,15,18};
int *c=&a[2];
printf("%d,%d",*(c+3),*c+3);
}
(A)18,12
(B)15,18
(C)18,15
(D)15,12

17、如下程序段中语法正确的是( B、A )。 //此题不妥
(A)int *p; p=1000;
(B)int a,*p; p=&a;
(C)int a,*p; *p=&a;
(D)int a=1000,*p; p=a;

18、如下程序段的输出结果是( B )。
int mm(int *a,int b)
{
*a=*a+5;
b*=3;
return *a+b;
}
main()
{
int a=3,b=6;
int c=mm(&a,b);
printf("%d,%d,%d,",a,b,c);
}
(A)3,6,9
(B)8,6,26
(C)8,18,26
(D)3,18,11

19、如下程序段的输出结果是( A )。
main()
{
static int a[2][3]={3,6,9,12,15,18};
int *c=a[1];
printf("%d,%d",*(c+1),*c+1);
}
(A)15,13
(B)6,7
(C)9,10
(D)12,13

20、已有函数定义如下: //此题不妥
void aa(int a,char b,float c){c=(float)(a+b);}
则下列程序段能够进行函数正确调用的是( C )。
(A)main(){ aa(5.0,'a',5);}
(B)main(){ int *a; scanf("%d",&a); aa(a,'a',9);}
(C)main(){ int a=1;char b='b'; float c=1.0; aa(a,b,c);}
(D)main(){ int *a; scanf("%d",a); aa(a,'a',3.0);}

21、有如下定义:
struct student
{
char name[10];
float score;
int age;
}stu1,*p;
则在C语言程序中给变量stu1赋值正确的是( B )。
(A)stu1={"ddd",66.0,55};
(B)strcpy(https://www.docsj.com/doc/bf2442396.html,,"ddd"); stu1.score=66.0; stu1.age=15;
(C)p=&stu1; p->name='ddd'; p->score=66.0; p->age=15;
(D)p=&stu1; https://www.docsj.com/doc/bf2442396.html,="ddd"; p.score=66.0; p.age=15;

22、下面程序段中语法正确的是( D )。
(A)int mm(int x,int y){int x,y; return x+y;}
(B)char str[10]; scanf("%s",&str);
(C)int i,a[10];
for(i=0;i<=10;i++) scanf("%d",&a[i]);
(D)int i,a[10],*p;
for(i=0,p=a; p
23、已知int a;并且a已经被正确赋值,则下列逻辑表达式中与(!a)等价的是( A )。
(A)(a==0)
(B)(a>0)
(C)!(a==1)
(D)(a==1)

24、若变量已经正确定义,要求程序段完成1到100的累加,下列选项中不能完成此功能的程序段是( B、C )。//此题有误
(A)for(i=1,sum=0; i<=100; i++) sum=sum+i;
(B)i=1; sum=0; while(i++<=100) sum=sum+i;
(C)for(i=1;i<=100;i++){sum=0;sum=sum+i;}
(D)i=1;sum=0;do{sum=sum+i;}while(++i<=10

0);

25、已知int k; 且k已经正确赋值,则下列表达式中存在语法错误的是( B )。
(A)2(B)(k<6)++
(C)k<6&&k>2
(D)k==1

26、如下程序段的输出结果是( D )。
main()
{
int i,j,a=0;
for(i=1;i<=5;i++)
for(j=i;j<=5;j++)
a=a+j;
printf("%d",a);
}
(A)10
(B)25
(C)55
(D)75

27、语句:printf("%-8.4d",-36); 执行时的输出结果是(□表示空格)( A )。//选项似乎有错误?
(A)-036□□□□
(B)-036□□□□□
(C)□□□□-036
(D)□□□□□-036

28、如下程序段的输出结果是( A )。
main()
{
int a[10]={34,22,12,66,8,33,22,338,56,99};
int i,x=0;
for(i=1;i<10;i++)
if(a[i]printf("%d",a[x]);
}
(A)8
(B)34
(C)99
(D)338

29、如下程序段的输出结果是( C )。
main()
{
char str[]={'s','t','u','d','e','n','t','\0'};
char *q=str;
while(*q!='\0') q++;
printf("%d",q-str);
}
(A)5
(B)6
(C)7
(D)8

30、如下程序段的输出结果是( B )。
#define n 5
struct student
{
int no;
float score;
}
main()
{
struct student stu[n]={{1,12.5},{2,55.5},{3,90.5},{4,78.0},{5,34.0}};
int i;
float a=0,b;
for(i=0;ib=a/n;
printf("%08.4f",b);
}
(A)0054.1000
(B)054.1000
(C)0054.1
(D)54.10000


二、程序阅读题(本大题共4小题,每小题5分,共20分)
阅读下列程序,请将运行时输出的结果写在答题纸相应的位置上。

31、
/*程序中□表示空格*/
#include
void main()
{
char str1[]="good□morning!",str2[20];
char *p,*q;
for(p=str1; *p!='\0'; p++);
for(q=str2; --p>=str1; q++) *q=*p;
*q='\0';
printf("%s",str2);
}
!gninrom□doog

32、
#include
#define n 10
void de(int a[],int x,int *m)
{
int i=x+1;
for(;i<=*m;i++) a[i-1]=a[i];
*m=*m-1;
}
void main()
{
static int a[n]={32,12,12,56,78,12,78,5,32,12};
int i,j,x,m=n-1;
for(i=0;i<=m;i++)
{
x=a[i];
for(j=i+1;j<=m;j++)
if(a[j]==x) de(a,j,&m);
}
for(i=0;i<=m;i++)
printf("%d,",a[i]);
}
32,12,56,78,5,

33、
#include
void ch(int *a,int *b)
{
int c;
c=*a; *a=*b; *b=c;
}
void main()
{
static int a[10]={32,5,18,56,98,52,78,15,132,112};
int x=0,y=1,i;
if(a[x]>a[y]) ch(&x,&y);
for(i=2;i<10;i++)
if(a[i]else if(a[i]>a[y]) y=i;
ch(&a[x],&a[y]);
for(i=0;i<10;i++) printf("%d,",a[i]);
}
32,132,18,56,98,52,78,15,5,112,

34、
#include
void main()
{
char str[]="0342201411";
static int a[10];
int i;
char *p;
for(i=0;i<10;i++) a[i]=0;
for(p=str; *p!='\0'; p++)
{
i=*p-'0';
a[i]++;
}
for(i=0;i<10;i++) printf("%d,",a[i]);
}
2,3,2,1,2,0,0,0,0,0,


三、完善下列程序(本大题共2小题,每空4分,共20分


请将答案写在答题纸相应的位置上。

35、下面程序求一个二维矩阵的最大值。
#include
#define m 3
#define n 4
int findmax(int a[][n])
{
int i,j,max=a[0][0];
for(i=0;ifor(j=0;jif(a[i][j]>max) max=a[i][j];
__________; //return max
}
void main()
{
int i,j,max,__________; //a[m][n]
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
max=findmax(a);
printf("%d",max);
}

36、下面程序找出100-200之间的全部素数。
#include
#include
void main()
{
int m,k,i;
for(m=101;m<=200;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;__________) //i++
if(m%i==0) __________; //break;
if(i>k) printf("%d",m);
}
}


第二部分 数据结构(共100分)

一、单项选择题(本大题共12小题,每小题2分,共24分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将正确答案代码填写在答题纸相应位置上。

1、要表示高校的校、系、班级的有关数据及其关系,选择( B )比较合适。
(A)线性结构
(B)树结构
(C)图结构
(D)集合结构

2、下列函数中渐进时间复杂度最小的是( A )。
(A)T(n)=nlogn+5000n
(B)T(n)=n*n-8000n
(C)T(n)=n的(log(2n))次方-6000n
(D)T(n)=2n的(log(2n))次方-7000n

3、已知一个栈s以及一个输入序列(A,B,C,D,E),每个元素按照A、B、C、D、E顺序进栈一次,进栈后可立即出栈,也可在栈中停留一段时间后再出栈,则不能得到( D )序列。
(A)A,B,C,D,E
(B)B,A,E,D,C
(C)C,B,A,D,E
(D)D,C,A,B,E

4、平均排序效率最好的排序方法是( B )。
(A)直接插入排序
(B)快速排序
(C)简单选择排序
(D)冒泡排序

5、某链表中最常用的操作是在已知的一个结点之前插入一个新结点和删除其之前一个结点,则采用( A )存储方式最节省运算时间。
(A)双向链表
(B)带头结点的单向链表
(C)带尾指针的单向链表
(D)单向循环链表

6、在逻辑结构不变的情况下,不是导致一个图的遍历序列不唯一的因素是( B、D )。//?
(A)出发点不同
(B)存储(物理)结构不同
(C)遍历方法不同
(D)画法不同

7、散列函数有一个共同的要求,即函数值应当尽量以( D )取其值域的每个值。
(A)最大概率
(B)最小概率
(C)正态分布概率
(D)均等概率

8、下面( B )方法可以判断出一个图中是否存在环(回路)。//?
(A)排序
(B)深度和广度遍历
(C)求最短路径
(D)求关键路径

9、最佳二叉搜索(排序)树是( C )。
(A)关键码个数最小的二叉搜索树
(B)退化为线性的二叉搜索树
(C)搜索中平均比较次数最小的二叉搜索


(D)任何结点的度数为0或2的二叉搜索树

10、( C )是数据的基本单位,即数据集合(对象)中的个体
(A)数据结构
(B)数据项
(C)数据元素
(D)数据对象

11、(线性)表是一个( A )。
(A)有限序列,可以为空
(B)有限序列,不能为空
(C)无限序列,可以为空
(D)无限序列,不能为空

12、树是结点的集合,它( A )根结点。
(A)有0个或1个
(B)有0个或多个
(C)有且只有1个
(D)有1个或1个以上


二、填空题(本大题共7小题,每空2分,共16分)
请将答案写在答题纸相应的位置上。

13、在有n个顶点的有向图中,每个顶点的度最大可达__________。n-1

14、以下程序段的时间复杂度是__________。O(n)
i=0; j=0;
while(i+j<=n)
{
if(i>j) j++;
else i++;
}

15、下图所示的二叉树后序遍历的结果是__________。EDCBIHJGFA

A
/ \
B F
/ \ \
E C G
/ / \
D H J
/
I

16、在一个双向链表中p所指结点之前插入一个由指针s所指的新结点,写出可执行的操作序列:__________。(前指和后指的指针预分别为prior和next)s->prior=p->prior; s->next=p;p->prior->next=s; p->prior=s;

17、(线性)表有两种存储结构:顺序存储结构和链式存储结构,请就这两种存储结构完成下列填充:__________存储密度较大,可以随机存取;__________不可以随机存取,插入和删除操作比较方便。顺序存储结构 链式存储结构

18、递归的程序执行时使用__________来保存各层递归调用时的现场信息,以保证可以正确返回。栈

19、设数组a[M](M为最大空间个数)作为循环队列Q的存储空间,front为队头指针(指向第一个存放数据的位置),rear为队尾指针(指向最后一个存放数据位置的下一个),则判定Q队列的队满条件是__________。rear==front


三、应用题(本大题共4小题,每小题10分,共40分)
请将答案写在答题纸相应的位置上。

20、设字符集D={A,B,C,D,E},各字符使用频率W={10,2,5,6,4}。画出对字符进行哈夫曼编码时所对应的哈夫曼树,并给出各字符的编码。

A:00
B:010
C:10
D:11
E:011

27
/ \
16 \
/ \ \
A 6 11
10 / \ / \
B E C D
2 4 5 6

21、用普里姆(Prim)算法从右图中的顶点1开始逐步构造最小支撑(代价生成)树,要求画出构造的每一步。

①②③④⑤⑥

16
①───────②
│╲ ╱│╲5
│ ╲21 ╱ │ ╲
│ ╲ ╱19 │ ╲
14│ ⑥ │9 ③
│ 26╱ ╲ │ ╱
│ ╱ 11╲ │ ╱
│╱ ╲│╱6
⑤─

──────④
18

22、给定待排序关键字集合为{23,14,48,25,5,19},按关键字非递归递减(从小到大)排序,写出采用冒泡排序的每一趟(最外层循环的每一次)排序结果。

23、(1)图示表示右边有向图的邻接表。(4分)
(2)写出从顶点1开始分别进行深度优先和广度优先遍历的顶点序列各一种。(6分)

②────→④
↗↑╲ ╲
╱ │ ╲ ↘
① │ ╲ ⑥
╲ │ ╲ ↗
↘│ ↘ ╱
③────→⑤



四、算法设计题(本大题共2小题,每小题10分,共20分)
请将答案写在答题纸相应的位置上。

24、假定用一个有头结点循环链表来存储一个有序的线性表,线性表从头到尾为非递减(从小到大)有序(如下图)。用指针current从head开始搜索数据域等于key的元素在线性表中位置,如果搜索成功则current指向搜索到的结点,函数返回该指针;如果搜索不成功,函数返回空指针NULL。请在函数SortedlistLocate(head,ky)内填空,完成下列算法以实现这种搜索,并使得搜索不成功的平均比较次数小于链表长度。


┌───────────────────────────────────────────────────────────────┐
│ ┌──┬──┐ ┌──┬──┐ ┌──┬──┐ ┌──┬──┐ ┌──┬──┐ ┌──┬──┐ ┌──┬──┐ │
head →└→│ ^ │ ─┼─→│ 10 │ ─┼─→│ 20 │ ─┼─→│ 30 │ ─┼─→│ 40 │ ─┼─→│ 50 │ ─┼─→│ 60 │ ─┼─┘
└──┴──┘ └──┴──┘ └──┴──┘ └──┴──┘ └──┴──┘ └──┴──┘ └──┴──┘

current

typedef struct node
{
elemtype data; //数据域
struct node *next; //指针域
}lnode,*linklist;
linklist SortedlistLocate(linklist head,elemtype key)
{
linklist current;
if(__________) return ERROR; //错误提示
current=__________;
while(__________&&__________)
current=current->next //循链搜索其值等于key的结点
if(__________)
return current; //找到,返回结点地址
else return NULL; //未找到,返回空指针
}

25、r[]为一维数组,其中r[0]到r[n-1]为待排序的n个元素,排序好的元素仍放在r[0]到r[n-1]中。请写出对该数组进行非递减排序的直接插入排序算法,取名为InsertSort(Elemtype r[],int n)。



第三部分 关系数据库与SQL语言(共100

分)

一、单项选择题(本大题共20小题,每小题2分,共40分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将正确答案代码填写在答题纸相应位置上。

1、数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是( A )。
(A)DBS包括DB和DBMS
(B)DBMS包括DB和DBS
(C)DB包括DBS和DBMS
(D)DBS就是DB,也就是DBMS

2、下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是( B )Ⅰ.人工管理阶段 //此题不妥Ⅱ.文件系统阶段 Ⅲ.数据库阶段
(A)Ⅰ和Ⅱ
(B)只有Ⅰ
(C)Ⅱ和Ⅲ
(D)只有Ⅱ

3、下面的选项不是关系数据库基本特征的是( A )。
(A)不同的列应有不同的数据类型
(B)不同的列应有不同的列名
(C)与行的次序无关
(D)与列的次序无关

4、从一个数据库文件中取出满足某个条件的所有记录形成一个新的数据库文件的操作是( C )操作
(A)投影
(B)连接
(C)选择
(D)复制

5、现有如下关系:患者(患者编号、患者姓名、性别、出生日期、所在单位)、医疗(患者编号、医生编号、医生姓名、诊断日期、诊断结果),在此两个表的逻辑关系中,医疗关系中的外码是( D )。
(A)医生编号和患者编号
(B)患者姓名
(C)患者编号和患者姓名
(D)患者编号

6、SQL语言中,删除一个视图的命令是( B )。
(A)DELETE
(B)DROP
(C)CLEAR
(D)REMOVE

7、在SQL语言中,修改数据结构应使用的命令是( C )。
(A)CHANGE
(B)CREATE
(C)ALTER
(D)DELETE

8、下述SQL命令中,允许用户定义新关系时,引用其他关系的主码作为外码的是( B )。
(A)INSERT
(B)REFERENCES
(C)DELETE
(D)SELECT

9、规范化理论是关系数据库进行逻辑设计的理论依据,第一范式是指关系中的每一个属性都是( D )。
(A)长度不变的
(B)互不相关的
(C)互相独立的
(D)不可分解的

10、若用如下的SQL语句创建了一个表SC:CREATE TABLE SC(S CHAR(6) NOT NULL, C CHAR(3) NOT NULL, SCORE INTEGER, NOTE CHAR(20));向SC表插入下行时,( A )行可以被插入。
(A)('200823','101',NULL,NULL)
(B)('201009','111',60,必修)
(C)(NULL,'103',80,'选修')
(D)('201132',NULL,86,' ')

11、规范化理论是数据库( C )阶段的指南和工具。
(A)需求分析
(B)概念设计
(C)逻辑设计
(D)物理设计

12、候选码的属性有( D )。 //此题描述不够清楚
(A)多个
(B)0个
(C)1个
(D)1个或多个

13、关系模型中,满足3NF的模式( C )。
(A)可能是2NF
(B)必定是4NF
(C)必定是2NF
(D)必定是BCNF

14、公司中

有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从部门到职员的联系类型是( A )。
(A)一对多
(B)一对一
(C)N对N
(D)多对多

15、能够用条件限定记录的分组的SELECT语句的子句是( B )。
(A)WHERE
(B)HAVING
(C)GROUP BY
(D)ORDER BY

16、关系数据模型的三个组成部分中,不包括( C )。
(A)完整性规则
(B)数据结构
(C)恢复
(D)数据操作

17、在E-R模型中,如果有3个不同的实体型,3个M:N联系,根据E-R模型转换为关系模型的规则,转换为关系的数目是( C )。
(A)4
(B)5
(C)6
(D)7

18、在E-R模型中,用来表示关系的是( D )。
(A)椭圆形
(B)平行四边形
(C)菱形
(D)矩形

19、删除索引用的SQL语句是( B )。
(A)DELETE INDEX
(B)DROP INDEX
(C)DELETE CLUSTERED IINDEX
(D)DROP CLUSTERED IINDEX

20、下列聚合函数中不忽略空值(null)的是( C )。
(A)SUM(列名)
(B)MAX(列名)
(C)COUNT(*)
(D)AVG(列名)


二、填空题(本大题共6小题,每空2分,共20分)
请将答案写在答题纸相应的位置上。

21、数据库系统常见的数据模型有层次模型、网状模型与__________三种。关系模型

22、关系数雎模型中,二维表的列称为__________,二维表的行称为__________。属性 元组

23、数据库管理系统提供四个方面的数据控制功能,包括数据的__________、数据的完整性控制、__________和数据恢复。并发控制 数据安全性

24、E-R图基本成分包含实体型、__________和联系。属性

25、关系模型的三类完整性是指实体完整性、__________和__________。参照完整性 用户自定义完整性

26、数据库设计包括数据库的__________和数据库的__________。结构设计 行为设计 (内模式设计 物理设计)?


三、根据题意,用SQL语句实现以下操作(本大题共25分)
请将答案写在答题纸相应的位置上

27、现有关系数据库三个基本表如下:
学生表STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT),其属性分别为(学号,姓名,性别,年龄,系):

┌─────┬───┬──┬──┬───┐
│ 学号 │ 姓名 │性别│年龄│ 系 │
│ SNO │SNAME │SSEX│ │SDEPT │
├─────┼───┼──┼──┼───┤
│200215121 │ 李勇 │ 男 │ 20 │ CS │
├─────┼───┼──┼──┼───┤
│200215122 │ 刘晨 │ 女 │ 19 │ IS │
├─────┼───┼──┼──┼───┤
│200215123 │ 王敏 │ 女 │ 18 │ IS │
└─────┴───┴──┴──┴───┘

课程表COURSE(CNO,CNAME,CPNO,CREDIT),其属性分别为

(课程号,课程名,先行课,学分):

┌────┬─────┬───┬────┐
│ 课程号 │ 课程名 │先行课│ 学分 │
│ CNO │ CNAME │ CPNO │ CREDIT │
├────┼─────┼───┼────┤
│ 1 │ 数据库 │ 3 │ 4 │
├────┼─────┼───┼────┤
│ 2 │ 操作系统 │ 4 │ 3 │
├────┼─────┼───┼────┤
│ 3 │ 数据结构 │ 7 │ 4 │
├────┼─────┼───┼────┤
│ 4 │ 数据处理 │ │ 2 │
└────┴─────┴───┴────┘

选修表SC(SNO,CNO,GRADE),其属性分别为(学号,课程号,分数):

┌─────┬────┬────┐
│ 学号 │ 课程号 │ 分数 │
│ SNO │ CNO │ GRADE │
├─────┼────┼────┤
│200215121 │ 1 │ 92 │
├─────┼────┼────┤
│200215121 │ 2 │ 85 │
├─────┼────┼────┤
│200215122 │ 3 │ 90 │
└─────┴────┴────┘

用SQL语言实现下列①—⑦小题:

①查询所有学生的学号与姓名(本小题2分);

select SNO,SNAME from STUDENT

②查询成绩优秀(90分及以上)学生的学号、课程号与分数(本小题4分);

select * from SC where GRADE>=90

③计算学生表STUDENT中学生的总人数(本小题4分);

select count(*) from STUDENT

④给学生表STUDENT插入一条记录,记录信息为(学号:200215300;姓名:黄帝;性别:男;年龄:21;系:CS),注意学生表年龄为整型,其余为字符型(本小题4分);

insert into STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT) values('200215300','黄帝','男',21,'CS')

⑤在学生表STUDENT中,“性别”为字符型,请创建一个名字为MEN_VIEW的全体男生信息视图(本小题4分);

create view MEN_VIEW as select SNO,SNAME,SAGE,SDEPT from STUDENT where SSEX='男'

⑥删除选修表SC中没有成绩的记录(注意:成绩为0不算“没有成绩的记录”)(本小题4分);

delete from SC where GRADE=null

⑦对于某门课程,如果所有选课的学生成绩都低于80分,并且该课程的学分大于2,将其改为2(本小题3分)。

update COURSE set GREDIT=2 where GREDIT>2 and CNO not in ( select cno from SC where GRADE>=80 )


四、计算题(本大题共2小题,共15分)请将答案写在答题纸相应的位置上。

28、假设某连锁店数据库中有一关系模式R如下:
R(商店编号,商品编号,库存数量,部门编号,部门负责人)
如果规定:
(1)不同的商店可以销售相同的

商品,但每个商店的每种商品只能在一个部门销售;
(2)每个商店的每个部门只有一个负责人;
(3)每个商店的每种商品只有一个库存数量。
试回答下列①—②小题:
①根据上述规定,写出关系模式R的基本函数依赖;(本小题3分)

(商店编号,商品编号)->(库存数量)
(商店编号,部门编号)->(部门负责人)
(商店编号,商品编号)->(部门编号)
(商店编号,商品编号)->(部门负责人)
(商店编号,商品编号,部门编号)->(部门负责人)

②试问关系模式R最高已经达到第几范式?为什么?(本小题4分)

2NF:完全依赖、3NF:不存在传递依赖、BCNF:决定因素不包含候选键

达到1NF,存在部分依赖


29、用关系代数表达式实现下列①—②小题://此题不妥,没给关系模型怎么做?请按27题的关系模型答题

①检索学生成绩得过满分(100分)的课程的课程号、课程名和学分;(本小题4分)



②检索“国际贸易”系中成绩不及格的学生信息,包括学号、姓名、课程名和分数。(本小题4分)


















相关文档
相关文档 最新文档