10年专升本计科类专业 2.docx
- 文档编号:7942988
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:28
- 大小:107.39KB
10年专升本计科类专业 2.docx
《10年专升本计科类专业 2.docx》由会员分享,可在线阅读,更多相关《10年专升本计科类专业 2.docx(28页珍藏版)》请在冰点文库上搜索。
10年专升本计科类专业2
2010年福建省高职高专升本科入学考试
软件工程
计算机科学与技术专业知识试卷
数字媒体艺术
第一部分C语言程序设计(共100分)
一、单项选择题(本大题共30小题,每小题2分,共60分)
1.在C语言中,浮点型常量的表示方法错误的是()
A12.565B0.0C1.2521e2D5.3^8
2.下面程序执行后的结果是()
#include
Voidmain()
{
floatb=189.22;
printf(“%2d,(int)b);
}
A189.22B189C18D89_
3.如果对a,b,c三个变量赋予同一个初值5,如下语句错误的是()
Ainta,b,c;a=b=c=5;
Binta=5,b=5,c=5;
Cinta=5;b=5;c=5;
Dinta=5,b=a,c=b;
4.设所有变量均是int类型,运行完表达式((a=4*6,a-3),a+22)后a的值为()
解析:
程序运行后先计算a=4*6=24,此时a-3=24-3=21,根据逗号表达式取最后一个表达式的值,所以
(a=4*6,a-3)=21,a+22=24+22=46
A46B43C0D20
5.下列不能够正确得到a,b两个值中最大值,并把最大值赋予max的语句为()
Aif(a>b)max=a;elsemax=b;
Ba>b?
max=b:
max=a;相当于if(a>b)max=b;elsemax=a;这明显不是求最大值而是最小值
Ca>b?
max=a:
max=b;
Da
max=b:
max=a;
6.已知floatx=6.5;inta=8;foaty=3.5;,则表达式x+a%3*(int)(x+y)%2/4最后的值是多少()
8%3=2;2*(int)(x+y)=20;20%2=0;0/4=0;x+0=6.5
A10B6.5C31.5D0
7.关于算法的描述,错误的是()
A算法应具有零个或多个输入/输出
B算法中的每一个步骤都必须是确定的
C算法可以是有限的,也可以是无限不停止的
D算法的输出可以是屏幕上显示,也可以是通过打印机打印
8.设a,b初值分别是3和5,则如下程序执行完后,a和b的值分别是()
if((a=b)>0)b=a++;elsea=++b;
3明显不等于5所以执行a=++b=6,所以,a=6,b=5;
A6,5
B5,6
C5,5
D3,6
9.设a,b都是整数类型,要在键盘上输入a,b的值,则格式化输入函数应为()
Ascanf(“%d,%d”,*a,*b);
Bscanf(“%d,%d”,a,b);
Cscanf(“%d,%d,&a,&b);
Dscanf(“%d,%d”,%a,%b);
10.已知a和b值分别是4和5,关于如下逻辑表达式,值为0的是()
在c语言中大于=1表示为真,||其中一个为真,就是真,所以a,b,c为真
D选项a>b为假,!
(a>b)为真,!
!
(a>b)为假
Aa‖bB!
a‖bC(a&&b)‖0D!
!
(a>b)
11.以下程序的输出结果是()
#includ
Voidmain()
{inttop=5;
inttmp=0;
do
{tmp*=top;}while(--top);
Printf(“%d,%d\n”,top,tmp);
}
A0,120
B1,120
C0,0
D1,0
12已知有定义inta[10],如下对数组a第5个元素引用中(数组的首元素为第1个元素),正确的表达式是()
Aa[0]+4
B*a+4
C*(a+4)
Da[5]
13.假设二维数组a定义为floata[3][4],下列对数组第二行、第二列元素引用方法中,错误的为()
floata[3][4]定义了一个3行4列的二维数组,第二行、第二列a[1][1]
A*(a[0]+5)Ba[2][2]Ca[1][1]D*(a[1]+1)
14.以下程序输出结果正确的是()
#include
Voidmain()
{
intsum=0;
for(intn=0;n<10;n++)
{
if(n%2==0)
continue;
if(n%5==0)
Break;
Sum+=n;
}
1,3,5,7,9
printf(“%d,%d”,sum,n)
}
A4,5
B45,10
C2,1
D5,8
15.如下对字符串赋初值的方式中,错误的是()
Achart[10]={‘h’,‘e’,‘r’,‘e’};
Bchart[]=“here”
Cchart[]={“here”};
Dchart[10]=‘here’;
16.如下常用字符串操作中,实现两个字符串连接操作的是()
Astrcmp
Bstrcat
Cstrcpy
Dstrstr
17.以下程序的输出结果正确的是()
intf(inta,int*b)
{if(a>*b)*b=a;return*b;}
main()
{inta=9;intb=6;
intc=f(a,&b);
printf(“%d,%d,%,a,b,c);
}
A9,6,9
B9,9,6
C9,6,6
D9,9,9
18.一维数组a的定义为inta[10],对于如下函数定义,不能用f(a)调用的为()
Aintf(int*x)
Bintf(intx[])
Cintf(intx[10])
Dintf(intx)
19.以下程序的输出结果正确的是()
intp=1;intq=2;
intf(intp){p++;q++;returnp;}
intg(intx){p+=x;returnp;}
voidmain()
{f(3);
g(5);
printf(“%d,%d”,p,q);
}
A6,3
B7,3
C6,2
D7,2
20.当函数中的局部变量在函数调用结束后不消失而保留原值,在下次调用该函数时,该变量已有值,那么申明该变量时需要使用何种关键字加以修饰()
Aregister
Bconst
Cstatic
Dextern
21.以下程序的输出结果正确的是()
voidmain()
{inta[5]={0,1,2,3,4}
Printf(“%d,%d,%d,%d,*a,*(a+3)+1,a[2]+2,a[3]);
}
A0,3,2,3
B0,4,4,
C0,1,2,3
D2,3,2,3
22假设变量a,b初始值为4,5,通过swap(a,b)可以实现a和b值互换的函数定义为()
Avoidswap(intp1,intp2){inttmp;tmp=*p1;*p1=*p2;*p2=tmp;}
Bvoidswap(int*p1,int*p2){int*tmp;*tmp=*p1;*p1=*p2;*p2=tmp;}
Cvoidswap(intp1,intp2){inttmp;tmp=p1,p1=p2;p2=tmp;}
Dvoidswap(int*p1,int*p2){inttmp=*p1;*p1=*p2;*p2=tmp;}
23.以下表达式中,不能够实现结构体stu中age域值加1的表达式是()
Astu.age++
B++stu..age
Cstu.age+1
Dstu..age+=1
24.要打开一个文本文件,并且向文本文件中写入相关信息,那么如下打开文件方式正确的是()
ALEfp=fopen(“filename.txt”,”w”);
BFILEfp=fopen(“filename.txt”,”r”);
CFILEfp=fopen(“filename.txt”,”rb”);
DFILEfp=fopen(“filename.txt”,”wb”);
25.以下程序的输出结果正确的是()
intf(intn)
{if(n<=1)returnn;elsereturn(n+f(n-1));}
Voidmain()
{printf(“%d”,f(5));
}
A10
B5
C120
D15
26.有如下宏定义
#defineA100
#defineB2*A
对于表达式printf(“A=%d,B=%d”,A,B);宏展开后语句为()
Aprintf(“A=%d,B=%d”,100,2*A);
Bprintf(“100=%d,2*A=%d”,100,2*A);
Cprintf(“A=%d,B=%d”,100,2*100);
Dprintf(“A=%d,B=%d”,100,200)
27.关于结构的叙述中,错误的是()
A一个结构体变量的指针就是该变量所占据的内存起始位置
B一个结构体变量中可以存放一组数据
C结构体变量可以作为函数传递的参数
D用结构体变量作实参时,采用的不是“值传递”的方式
28.以下程序的输出结果正确的是()
structroom
{charroomName[20];
intL;
intW;
}r[2]={“101”,3,4,”102”,4,4};
main()
{
printf(“%sareais%d”,r[1].roomName,r[1].L*r[1].W);
}
A.printf(“%sareais%d”,r[1].roomName,r[1].L*r[1].W);语句错误
B102areais16
C101areais12
D102areais12
29.C语言提供的数据类型中,属于构造类型的是()
(1)整型
(2)字符型(3)浮点型(4)枚举类型(5)结构体类型(6)共用体类型(7)指针类型
A
(1)
(2)(3)
B(5)(6)
C(4)(5)(6)
D(7)
30.组成结构程序设计的三种基本控制结构中,不包括()
A顺序结构
B选择结构
C循环结构
D嵌套结构
二、程序阅读题(本大题共4小题,每小题5分,共20分)
阅读下列程序,写出程序运行输出结果。
31.#include
Voidmain()
{
charch[20]=”Example354”;
for(inti=0;i<10;i++)
ch[i]=(ch[i]>=’A’&&ch[i]<=’Z’)?
(ch[i]+32):
ch[i];
printf(“%s\n”,ch);
}
答案:
example354
32.include
Voidmain()
{
longintf1;f2;
inti;
f1=1;f2=1;
printf(“%101d\n”,f1);
printf(“%101d\n”,f2);
for(i=1;i<=6;i++)
{f2=f1+f2;
F1=f2-f1;
Printf(“%101d\n”,f2);
}
}
答案:
1
1
2
3
5
8
13
21
33.#include
Voidmain()
{
intf[][3]={{1,2,3,},{4,5,6},{7,8,9}};
inttmp;
for(inti=0;i<3;i++)
{
for(intj=0;j
{mp=f[i][j];f[i][j]=f[j][i];f[j][i]=tmp;}
}
for(i=0;i<=3;i++)
{printf(“%3d%3d%3d\n”,f[i][0],f[i][1],f[i][2]);}
}
答案:
147
258
369
34.#include
intf(intn)
{staticintf=1;f=f*n;returnf;}
voidmain()
{
for(inti=1;i<=5;i++)
Printf(“%d!
=%d\n”,i,f(i));
}
答案:
1!
=1
2!
=2
3!
=6
4!
=24
5!
=120
三、完善下列程序(本大题共2小题,每空4分,共20分)
35.下面程序首先输入一个十进制数,通过程序的转化,输出一个与之对应的八进制数。
#include
Voidmain()
{
inti,j=0,k,a[100];
scanf(“%d”,&i);
do
{
k=____
(1)_____;
i=____
(2)_____;
a[j++]=k;
}while(i>0);
for(____(3)_____)
{printf(“%1d”,a[j]);}
}
答案:
(1)i%8
(2)i/8(3)j--;j>=0;j—
36.下面程序求两个数的最大公约数,并输入该公约数。
#include
intMin(intL,intR)
{if(L>R)returnR;elsereturnL;}
Voidmain()
{
intL,R;
intResult;
scanf(“%d,%d”,&L,&R);
intmin=____(4)_____;
for(inttmp=1;tmp<=min;tmp++)
{
if(____(5)_____)
Result=tmp;
}
printf(“%d”,Result);
}
答案:
(4)Min(L,R)(5)L%tmp==0&&R%tmp==0
第二部分数据结构(共100分)
A.单项选择题(本大题共12小题,每小题2分,共24分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将正确的答案代码填写在答案题纸相应的位置上。
1.采用单链表方法存储线性表的特点是()
A数据元素的物理存储顺序与逻辑顺序相同
B不需要额外的存储空间来表示数据元素之间的逻辑关系
C插入和删除运算比较方便
D可以随机存取表中的数据元素
2.如果某线性表中最经常地操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储发方式最节省运算时间
A仅有头指针单链表
B仅有头指针的单循环链表
C仅有头指针双向链表
D仅有尾指针的单循环链表
3.已知一个栈以及一个输入序列(A,B,C,D,E),每个元素按照A,B,C,D,E顺序进栈后可立即出栈,也可在栈中停留一段时间后再出栈,则不能够得到的序列为()
AA,B,C,D,E
BB,A,E,D,C
CC,B,A,D,E
DD,C,A,B,E
4.设初始序列为5,7,4,3,8,6,从后往前冒泡,则执行第一趟冒泡排序算法后得到的序列为()
A3,5,7,4,6,8
B3,4,5,6,7,8
C5,4,3,7,6,8
D5,4,3,6,7,8
5.如图1所示的二叉树,对应中序遍历的结果是()
图1
AADCDF
BCDEAF
CACDEF
DCEDFA
6.二叉链表是用指针实现二叉树的存储结构,具有n个结点二叉树对应的二叉链表中指针域为空的个数为()
A2n-1
Bn-1
Cn+1
D2n+1
7.若二叉搜索树中各关键码值互不相同,那么最小值的结点()
A一定是分支结点
B一定是叶子
B一定无右孩子
D一定无左孩子
8.给定N个权值,则构造的哈夫曼树中的结点总数为()
AN
B2N-1
C2N
D2N+1
9.有n个顶点的连通图G的最小生成树有()条边。
An-1
Bn
Cn+1
D0
10.设单链表的类型定义如下:
typedefstructnode{
intelement;
structnode*next;
}LinkNode*p,*s;
设p指向链表某一个结点,将s指向的结点插入到p结点之后的操作是:
()
Ap->next=s;s->next=p->next;
Bs->next=p->next;p->next=s;
Cs->next=p;p->next=s;
Dp->next=s->next;s->next=p;
11.对于快速排序算法,下列说法正确的是()
A初始序列基本有序的情况,快速排列的性能较差
B快速排序算法最好情况下的时间复杂是O(
)
C快速排序需要的附加空间复杂度是O
(1)
D快速排序是一种选择排序方法。
12.设某个图的邻接表执行从顶点A出发的广度优先搜索算法,则经历的结点顺序为()
图2
AABCDE
BAEDBC
CABCED
DACBDE
二、填空题(本大题共6小题,每空两分,共16分)
请将答案写在答题纸相应的位置。
13.各时间复杂度表达式为:
n!
、n²
、
、n,按照渐进阶从低到高的顺序排列,则排列在第一位的表达式是__log2n________。
14.对同样的一组数据,合并、简单选择、直接插入和堆排序中,_合并___排序对内存容量要求最大。
15.一个无向图的连通分支定义为该图的___极大_______连通子图,任何连通图有_____1_____个连通分支。
16.一颗二叉树有11个度为0的结点,可以知道该二叉树中度为2的结点个数为__10________个。
17.设循环队中队头和队尾指针分别为front、rear,其中队头指向队列第一个元素的前一个位置,队尾指向最后一个元素,那么当fornt和rear的关系为__front=rear________,说明循环队列为空。
18.二叉树是有限结点集合,这个集合要么是空集,要么是由一个根结点和两棵分别称为_左子树_和___右子树__的互不相交的二叉树组成。
三、应用题(本大题共4小题,每小题10分,共40分)
19.根据图3所示树,画出对应儿子链表表示法和左儿子右兄弟表示法的示意图。
图3
5分)儿子链表表示法
(5分)左儿子右兄弟表示法为:
20.已知一颗二叉树的中序遍历的结点序列为:
BDCEAFHG,后序遍历的结点序列为:
DECBHGFA,画出对应的二叉树,并写出该二叉树,并写出该二叉树的前序遍历序列。
5分)二叉树
(5分)前序遍历序列:
ABCDEFGH
21.给定元素序列:
(50,25,80,20,76,93),画出按照该序列构造的二叉搜索树。
22.对于给定的一组数据:
(20,39,79,61,15,58),给出对改组数据进行简单选择排序的每一趟过程。
10分)【解答】{20,39,79,61,15,58}
第一趟:
15,39,79,61,20,58
第二趟:
15,20,79,61,39,58
第三趟:
15,20,39,61,79,58
第四趟:
15,20,39,58,79,61
第五趟:
15,20,39,58,61,79
评分标准:
每一趟2分
四、算法设计题(本大题共2小题,每小题10分,共20分)
23.线性表采用顺序存储结构,类型定义如下:
#defineMAXSIZE 100
typedefstruct{
intdata[MAXSIZE];
intlen;\*表中数据元素的个数*/
}seqlist;
设某顺序表L存放的数据已经递增有序。
完成下面算法,将x插入到表L的适当位置上,并且保持表L的递增有序,插入成功返回1,否则返回0。
intinsert_L(seqlist*L,_____①_____)
{
inti;
printf(“\n插入之前的元素序列:
“);
for(i=0;i
printf(“%d”,L->data[i]);
if_____②_____return0;
i=L->len-1;
while(i>=0&&L->data[i]>x)
{_____③_____;
i--;
}_____④_____;
L->len++;
printf(“\n插入之后的元素序列:
“);
for(i=0;i
printf(“%d”,L->data[i]);
_____⑤_____;
}
(1)intx
(2)L->len==MAXSIZE
(3)L->data[i+1]=L->data[i](4)L->data[i+1]=x(5)return1
24.假设循环单链表中既无头结点也无头指针,p指向该链表中某一个结点。
(1)写出该循环单链表用C语言描述的数据类型;
(2)设计一个算法删除p指向结点的前驱结点,成功返回1,失败(p结点为空或没有前驱)返回0。
(1)typedefstructnode{
datatypedata;
structnode*next;
}clinknode;
(2)intdeleteprior(clinknode*p)
{clinknode*q=p->next,*s;
if(p==NULL||p->next==p)return0;/*p为空或只有一个结点*/
if(q->next=p)/*只有两个结点*/
{p->next=p;free(q);return1;}
while(q->next->next!
=p)q=q->next;/*寻找p的前驱的前驱*/
s=q->next;q->next=p;free(s);
return1;
}
评分标准:
数据类型定义正确,得5分;算法完全正确,得5分;思路基本正确,但存在细节性错误,最多扣3分;思路基本不正确,得分不能多于3分,根据表达情况酌情给分。
表达答案的含义即可,不必与以上答案完全一致。
第三部分关系数据库与SQL语言(共100分)
一、单项选择题(本大题共20小题,每小题2分,共40分)
1.在数据库技术领域,术语DBMS指的是()
A.数据库管理系统
B.数据库系统
C.对象关系数据库系统
D.分布式数据库
2.以下常见软件中,属于数据库管理系统的是()
A.word2007
B.Oracle10G
C.Visio200
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10年专升本计科类专业 10 年专升 类专业