C语言期末考试试卷 (6)
安阳党建网-利物浦大学世界排名
C语言期末考试试卷5
学生数 印数 考核方式 闭卷 考核时间
120 分钟
一、选择题(每小题2分,共70分)
下列各题A)、B)、C)、D)四个选项中
,只有一个选项是正确的,请将正确选项涂写在
答题卡相应位置上,答在试卷上不得分。
(1)数据的逻辑结构可以分为 ( ) 。
A)静态结构和动态结构
B)物理结构和存储结构
C)线性结构和非线性结构 D)紧凑结构和松散结构
(2)对线性表,采用顺序存储的优点是( ) 。
A)便于随机存取
B)便于进行插入和删除操作
C)需要的存储空间不必连续 D)方便线性表的扩充
(3)设具有n个结点的完全二叉树的第1层为根结点,若一个结点i满足2i>n,则该结点
没有( ) 。
A)左子结点 B)右子结点
C)左子结点和右子结点 D)左子结点、右子结点和兄弟结点
(4)快速排序算法的平均时间复杂度为 ( ) 。
A)O(n)
B)O(n2) C)O(nlog2n) D)O(log2n!)
(5)在面向对象的程序设计方法中,描述对象静态和动态特征的三要素是 ( )。
A)封装、继承和重载 B)属性、事件和方法
C)数据、代码和接口
D)内聚、耦合和驱动
(6)软件测试的目的是( ) 。
A)证明软件的正确性 B)找出软件系统中存在的所有错误
C)证明软件系统中存在错误 D)尽可能多地发现软件系统中的错误
(7)软件开发范型的作用是( )。
A)为了控制软件需求的易变性
B)作为一种软件工程方法学
C)作为一种项目管理方法
D)作为需求分析的指导
(8)在数据库三级模式结构中,描述数据库中全体数据的全局逻辑结构和特征的是
(
)。
A)外模式 B)内模式 C)存储模式 D)模式
(9)在数据库技术中,面向对象数据模型是一种( ) 。
A)概念模型
B)结构模型 C)物理模型 D)逻辑模型
(10)数据库(DB)、数据库系统(DBS)、数据库管理系统(DBMS)三者之间的关系是(
) 。
A)DBS包括DB和DBMS B)DBMS包括DB和DBS
C)DB包括DBS和DBMS D)DBS就是DB,也就是DBMS
(11)阅读以下程序
main()
{ int x;
scanf(”%d”,&x);
if(x - -
<5)printf(”%dn”,x);
else
prinff(”%dn”,x++); }
程序运行后,如果从键盘上输入5,则输出结果是 ( ) 。
A)3 B)4
C)5 D)6
(12)假定W,X,Y,z和m均为int型变量,有如下程序段:
w=1;x=2;y=3;z:4;
m=(w
A)4 B)3 C)2
D)1
(13)t为int型变量,进入下面的循环之前,t的值为0。
while(t-1)
{……}
则以下叙述中正确的是( )。
A)循环控制表达式的值为0 B)循环控制表达式的值为1
C)循环控制表达式不合法 D)以上说法都不对
(14)以下程序的输出结果是(
) 。
main()
{ int num=0;
while(num<=2)
{ num++;printf(”%dn”,num);}
}
A)1 B)1 C)1 D)l
2
2 2
3 3
4
(15)以下各选项企图说明一种新的类型名,其中正确的是 ( ) 。
A)typedef vl int; B)typedef v2=int;
C)typedef int v3; D)typedef v4:int;
(16)在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(
A)地址传递 B)单向值传递
C)由实参传给形参,再由形参传给实参 D)传递方式由用户指定
(17)以下函数值的类型是( )
fun(float x)
{ float y;
y=3*x-4:
return y; }
A)int B)不确定 C)void
D)float
(18)设有以下函数:
f(int a)
{
int b=0;
static int c=3;
b++;c++;
return(a+b+c); }
如果在下面的程序中调用该函数,则输出结果是( )。
main()
{ int a=2,i;
for(i=0;i<3;i++)
printf(,f(a)); }
A)7 B)7 C)7
D)7
)。
8 9
10 7
9 11 13 7
(19)以下程序的输出结果是( ) 。
main()
{ char c='Z';
printf(); }
A)a B)Z C)z-25 D)Y
(20)以下选项中,非法的字符常量是
( ) 。
A)'t' B)'17' C))'xaa'
(21)若有说明int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是 (
) 。
A)i=*p; B)*p=*&j; C)i=&j;
D)i=**p;
(22)以下定义语句中,错误的是( ) 。
A)int a[ ]={1,2}; B)char *a[3]; C)char
s[10]=;D)int n=5,
a[n];
(23)假设int型变量占两个字节的存储单元,若有定义int
x[10]={0,2,4};,则数组
x在内存中所占字节数为 。
A)3 B)6 C)10 D)20
(24)以下程序的输出结果是 (
) 。
main()
{ int i,a[10];
for(i=9;i>=0;i- -)
a[ i ]=10 - i:
printf(,a[2],a[5],a[8]); }
A)258
B)741 C)852 D)369
(25)以下数组定义中不正确的是( )
。
A)int a[2][3]; B)int
b[][3]={0,1,2,3};
C)int c[100][100]={0};
D)int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
(26)以下程序的输出结果是( ) 。
main()
{int a[4][4]={{l,3,5},{2,4,6},{3,5,7}};
prinff(,a[0][3],a[1][2],a[2][1],a[3][0]); }
A)0650 B)1470 C)5430 D)输出值不确
(27)以下程序的输出结果是( )。
#include
main()
{char
st[20]=’
printf(,stden(st,sizeof(st)); }
A)9 9 B)5 20 C)13 20 D)20 20
(28)以下程序的输出结果是( )。
amovep(int
*p,int (*a)[3],int n)
{ int i,j;
for(i=0;i
}
main()
{ int
*p,a[3][3]={{1,3,5},{2,4,6}};
p=(int
*)malloc(100);
amovep(p,a,3);
printf(,p[2],p[5]);
free(p);
}
A)56 B)25 C)34 D)程序错误
(29)以下程序的输出结果是(
) 。
struct HAR
{ int x,y;
struct HAR *p;} h[2];
main()
{
h[0].x=l;h[0].y=2;
h[1].x=3;h[1].y=4;
h[0].p=&h[1];h[1].p-h;
printf(,(h[0].p)->x,(h[1].p)->y);
}
A)12 B)23 C)14 D)32
(30)以下程序的输出结果是( ) 。
main()
{ int a,b;
for(a=l,b=l;a<=100;a++)
{ if(b>=10)break;
if(b%3==1)
{ b+=3;continue;}
}
printf(,a);
}
A)101 B)6
C)5 D)4
(31)以下程序的输出结果是 ( ) 。
union myun
{ struct { int x,y,z;}u;
int k;}a;
main()
{
a.u.x=4;a.u.y=5;a.u.z=6;
a.k=0;
printf(,a.u.x);
}
A)4 B)5
C)6 D)0
(32)以下程序的输出结果是( )。
int
a,b;
void fun()
{
a=100;b=200;}
main()
{ int
a=5,b=7;
fun();
printf(,a,b);
}
A)100200 B)57 C)200100 D)75
(33)以下程序的输出结果是 ( ) 。
#define
M(x,y,z) x*y+z
main()
{ int
a=l,b=2,c=3;
printf((a+b,b+c,c+a));
}
A)19 B)17 C)15 D)12
(34)整型变量X和Y的值相等,且为非0值,则以下选项中,结果为0的表达式是( ) 。
A)x||y B)x|y C)x&y D)x^y
(35)下面的程序执行后,文件test.t中的内容是( ) 。
#include
#include
void fun(char *fname,char *st)
{ FILE
*myf;
int i;
myf=fopen(fname,);
for(i=0;i
fclose(myf);
}
main()
{ fun(.t,);
fun(.t,,);
}
A)hello, B)new worldhello,
C)new world D)hello,world
二、填空题(每空2分,共30分)
请将每一个空的正确答案写在答题卡[1]至[15]序号的横线上,答在试卷上不得分。
(1)算法的复杂性指的是 [1] 和空间复杂性。
(2)设栈S的初始状态为空,队列Q的初始状态如下图所示:
a1 a2
a3 a4
↑ ↑
队头 队尾 对栈S和队列Q进行如下两步操作:①Q中的元素依次出队,并压入栈S中,直至Q为空;
②依次弹
出S中的元素并进入Q,直至S为空。在上述两步操作后,队列Q的状态是 [2] 。
(3)面向对象程序设计使用的对象是 [3] 的封装体。
(4)在关系数据库中,关系模型的三类完整性是指 [4] 、参照完整性和用户定义的
完整性。
(5)为数据库建立索引,是一种以牺牲 [5]
换取提高数据库访问速度的策略。
(6)以下函数的功能是求x的y次方,请填空。
double fun(double x,int y)
{ int
i;
double z;
for(i=1,z=x;i
return z;
}
(7)设有以下程序:
main()
{ int a,b,k=4,m=6,*pl=&k,*p2=&m;
a=p1==&m:
b=(*p1)(*p2)+7;
printf(,a);
printf();
}
执行该程序后,a的值为 [7] ,b的值为 [8] 。
(8)若已定义int a[10],l;,以下fun函数的功能是:在第一个循环中给前10个数
组
元素依次赋1,2,3,4, 5,6,7,8,9,
10;在第二个循环中使a数组前10个元素中
的值对称折叠,变成1, 2,3,4,5,5,4,
3,2, 1。请填空。
fun(int a[ ])
{ int
i;
for(i=l;i<=10;i++) [9] =i;
for(i=0;i<5;i++) [10] =a[i]:
}
(9)以下程序运行后的输出结果是 [11] 。
main()
{ char s[ ]=,*p;
for(p=s;p printf();
}
(10)若有定义语句char s[l00],d[100];int
j=0,i=0;,且s中已赋字符串,请
填空以实现字符串拷贝。(注意:不得使用逗号表达式。)
while(s[i])
{ d[j]= [l2]
j++;
d[j]=0;
}
(11)以下程序段用于构成个简单的单向链表,请填空。
struct STRU
{ int x,y,
float rate;
[13] p;
}a,b;
a.x=0;a.y=0;=0;a.p=&b;
b.x=0;b.y=0;=0;b.p=NULL;
(12)若有如下结构体说明:
struct STRU
{ int a,b;
char c;
double d;
struct
STRU pl,p2;
};
请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。
[14]
t[20];
(13)以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾
,然后调
用ftell函数返回当前文件位置指针的具体位置,从而确定立件长度,请填空。
FILE *myf;
long fl;
myf= [15] (,);
fseek(myf,0,SEEK_END);
fl=ftell(myf);
fclose(myf);
printf();