(7)线性表的顺序存储结构和线性表的链式
存储结构分别是
A)顺序存取的存储结构、顺序存取的存储
结构 B)随机存取的存储结构、顺序存取
的存储结构
C)随机存取的存储结构、随机存取的存储
结构 D)任意存取的存储结构、任意存取
的存储结构 (8)树是结点的集合,它的根结点数目是 A)有且只有1 B)1或多于1 C)0或1 D)至少2 (9)下列有关数据库的描述,正确的是
A)数据库是一个DBF文件 B)数据
库是一个关系 C)数据库是一个结构化的
数据集合 D)数据库是一组文件
(10)数据库、数据库系统和数据库管理系统
之间的关系是
A)数据库包括数据库系统和数据库管理
系统 B)数据库系统包括数据库和数据库管理系统 C)数据库管理系统包括数据库和数据库系统 D)三者没有明显的包含关系 (11)以下4个选项中,不能看作一条语句的是 A); B)a=5,b=2.5,c=3.6; C)if(a<5); D)if(b!=5)x=2;y=6; (12)下面四个选项中,均是不合法的用户标识符的选项是
A)A P_0 do B)float la0_A C)b-a goto int D)_123 temp int
(13)以下选项中不属于字符常量的是
A)′C′ B)′′C′′ C)′\\xCC′ D) ′\\072′
(14)设变量已正确定义并赋值,以下正确的
表达式是
A)x=y*5=x+z B)int(15.8%5)
C)x=y+z+5,++y D)x=25%5.0
(15)若变量已正确定义并赋值,以下符合C
语言语法的表达式是
A)a:=b+1 B)a=b=c+2 C)int 18.5%3 D)a=a+7=c+b
(16)以下程序的运行结果是 int k=0; void fun(int m) {m+=k;k+=m;printf(\ k=%d \
main()
{int i=4;
fun(i++); printf(\ k=%d\\n\
} A)m=4 k=5 i=5 k=5 B)m=4 k=4 i=5 k=5 C)m=4 k=4 i=4 k=5 D)m=4 k=5 i=4 k=5
(17)已有定义:char c;,程序前面已在命令行
中包含ctype.h文件,不能用于判断c中的字符
是否为大写字母的表达式是
A)isupper(c) B)′A′<=c<=′Z′ C)′A′<=c&&c<=′Z′ D)c<=(′z′-32)&&(′a′-32)<=c
(18)设有: int a=1,b=2,c=3,d=4,m=2,n=2; 执行 (m=a>b)&&(n=c>d)后,n的值是 A)1 B)2 C)3 D)4 (19)若变量已正确定义,有以下程序段 int a=3,b=5,c=7;
if(a>b) a=b; c=a;
if(c!=a) c=b; printf(\其输出结果是 A)程序段有语法错 B)3,5,3 C)3,5,5 D)3,5,7 (20)若有定义:float x=1.5;int a=1,b=3,c=2;,则正确的switch语句是 A)switch(x) {case 1.0:printf(\ case 2.0:printf(\ B)switch((int)x);
{case 1:printf(\ case 2:printf(\ C)switch(a+b)
{case 1:printf(\ case 2+1:printf(\ D)switch(a+b) {case1:printf(**\\n);} casec:printf(**\\n);}
(21)有以下程序
#include
main0 { int y=9;
for( ; y>0;y--) if(y%3==0) printf(\ } 程序的运行结果是 A)741 B)963 C)852 D)875421
(22)以下描述中正确的是
A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C)在do-while循环体中,是先执行一次循环,再进行判断 D)do-while循环中,根据情况可以省略while (23)有以下程序 #include
{ int a[ ]={1,2,3,4},y,?*p=&a[3]; --p; y=?*p;printf(\\\n\ }
程序的运行结果是
A)y=0 B)y=1 C)y=2 D)y=3
(24)以下数组定义中错误的是
A)int x[][3]={0}; B)int x[2][3]={{l,2},{3,4},{5,6}}; C)int x[][3]={{l,2,3},{4,5,6}}; D)int x[2][3]={l,2,3,4,5,6};
(25)下面说明不正确的是
A)char a[10]=\ B)char a[10],*p=a;p=\ C)char *a;a=\D)char a[10],*p;p=a=\
(26)若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是
A)a[2][!1] B)a[2][3] C)a[0][3] D)a[1>2][!1] (27)若要求从键盘读入含有空格字符的字符串,应使用函数
A)getc() B)gets() C)getchar() D)scanf()
(28)阅读下列程序段,则程序的输出结果为 #include \
#define M(X,Y)(X)*(Y) #define N(X,Y)(X)/(Y) main()
{ int a=5,b=6,c=8,k; k=N(M(a,b),c); printf(\ A)3 B)5 C)6 D)8 (29)在16位IBM-PC机上使用C语言,若有如下定义 struct data { int i; char ch; double f; } b;
则结构变量b占用内存的字节数是 A)1 B)2 C)7 D)11 (30)有以下程序 #include
{FILE *fp; int i,a[6]={l,2,3,4,5,6}; fp=fopen(\ fwrite(a,sizeof(int),6,fp);
fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/
fread(a,sizeof(int),3,fp); fclose(fp); for(i=0;i<6;i++)printf(\ }
程序运行后的输出结果是
A)4,5,6,4,5,6, B)1,2,3,4,5,6, C)4,5,6,1,2,3, D)6,5,4,3,2,1, (31)有以下程序 #include
for(i=1;i<5;i++) printf(\ printf(\ }
程序的运行结果是
A)1 2 3 4 B)2 3 4 4 C)4 3 3 2 D)1 1 2 3
(32)有以下程序 #include
void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/ { int t,i,j;
for(i=0;i if(a[i] main() { int c[10]={1,2,3,4,5,6,7,8,9,0},i; fun(c+4,6); for(i=0;i<10;i++) printf(\ printf(\ } 程序的运行结果是 A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4, C)0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0, (33)下面程序的输出结果是 #include { char *p1=\ strcpy(str+2,strcat(p1,p2)); printf(\A)xyzabcABC B)zabcABC C)xyabcABC D)yzabcABC (34)以下函数返回a所指数组中最小的值所 在的下标值 fun(int *a, int n) { int i,j=0,p; p=j; for(i=j;i if(a[i] return(p);} 在横线处应填入的是 A)i=p B)a[p]=a[i] C)p=j D)p=i (35)下列程序的运行结果为 #include void abc(char*str) { int a,b; for(a=b=0;str[a]!='\\0';a++) if(str[a]!='c') str[b++]=str[a]; str[b]='\\0';} void main() { char str[]=\ abc(str); printf(\ A)str[]=abdef B)str[]=abcdef C)str[]=a D)str[]=ab (36)有以下程序 #include #include typedef struct{ char name[9]; char sex; float score[2]; }STU; void f(STU a) { STU b={\0,90?0}; int i; strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i<2;i++) a.score[i]=b.score[i]; } main() { STU c={\ f(c); printf(\ore[0],c.score[1]); } 程序的运行结果是 A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,90 (37)有以下程序 #include main() { FILE ?*fp; int a[10]={1,2,3},i,n; fp=fopen(\ for(i=0;i<3;i++) fprintf(fp,\ fprintf(fp,\ fclose(fp); fp=fopen(\ fscanf(fp,\ fclose(fp); printf(\ } 程序的运行结果是 A)12300 B)123 C)1 D)321 (38)已知 int a=1,b=3则a^b的值为 A)3 B)1 C)2 D)4 (39)阅读下列程序,则运行结果为 #include \ fun() { static int x=5; x++; return x;} main() { int i,x; for(i=0;i<3;i++) x=fun(); printf(\ A)5 B)6 C)7 D)8 (40)有以下程序 #include while((*t++=*s++)!=0); } main() { char ss[10]=\ fun(ss,aa); printf(\ } 程序的运行结果是 A)accxyy,bbxxyy B)acc,bbxxyy C)accxxyy,bbxxyy D)accbbxxyy,bbxxyy 二、填空题 请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。 ( 1)需求分析的最终结果是产生【1( 2 】。 ) 为了便于对照检查 ,测试用例应由输入数 据和预期的【2】两部分组成。 (3)数据结构分为逻辑结构与存储结构,线性链表属于【3】。 (4)某二叉树中度为2的结点有18个,则该二叉树中有【4】个叶子结点。 (5)【5】是数据库设计的核心。 (6)已有定义:char c=′ ′;int a=1,b;(此处c的初值为空格字符),执行b=!c&&a;后b的值为? 【6】 ?。 (7)设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【7】。 (8)下面程序的功能是:计算1 10之间的奇数之和与偶数之和,请填空。 #include { int a,b,c,I; a=c=0; for(I=0;I<=10;I+=2) {a+=I; 【8】 ; c+=b; } printf(\偶数之和=%d\\n\printf(\奇数之和=%d\\n\ (9)以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。 #define N 4 void rotade(int a[][N],int b[][N]) { int I,j; for(I=0;I { b[I][N-1]= 【9】 ; 【10】 =a[N-1][I]; } } (10)以下程序的输出结果是【11】。 #include void swap(int ?*a, int ?*b) { int ?*t; t=a; a=b; b=t; } main() { int i=3,j=5,?*p=&i,?*q=&j; swap(p,q); printf(\ %d\\n\ } (11)下面程序的运行结果是【12】。 #include { char s[SIZE]; int I;for(I=0;I for(I=0;I sub(char*a,int t1,int t2) { char ch; while (t1 (12)以下程序的输出结果是【13】。 #include { int a[5]={2,4,6,8,10},?*p; p=a; p++; printf(\?*p); } (13)设有定义\abc, *p_abc=&abc;\则对结构体成员a的引用方法可以是abc.a和p_abc 【14】 a。 (14)以下程序的运行结果是【15】。 #include { FILE *fp; int a[10]={1,2,3,0,0},i; fp=fopen(\ fwtite(a,sizeof(int),5,fp); fwrite(a,sizeof(int),5,fp); fclose(fp); fp=fopen(\ fread(a,sizeof(int),10,fp); fclose(fp); for(i=0;i<10;i++)printf(\ } 一、选择题 (1)D 【解析】软件是程序、数据与相关文档的集合,相对于计算机硬件而言,软件是逻辑产品而不是物理产品,是计算机的无形部分。 (2)A 【解析】确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求;集成测试的主要目的是发现与接口有关的错误。 (3)C 【解析】对象的基本特点:标识惟一性、分类性、多态性、封装性和模块独立性。 (4)D 【解析】滥用goto 语句将使程序流程无规律,可读性差,因此A)不选;注解行有利于对程序的理解,不应减少或取消,B)也不选;程序的长短要依照实际情况而论,而不是越短越好,C)也不选。 (5)A 【解析】程序执行的效率与很多因素有关,如数据的存储结构、程序所处理的数据量、程序所采用的算法等。顺序存储结构在数据插入和删除操作上的效率比链式存储结构 的效率低。 (6)C 【解析】数据结构概念一般包括数据的逻辑结构、存储结构及数据上的运算集合等。数据的逻辑结构只抽象地反映数据元素之间的逻辑关系,而不管它在计算机中的存储形式。 (7)B 【解析】顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(a1)+(i-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。 (8)C 【解析】树是N(N>0)个结点的有限集合,当?N=0?时称为空树,,对于空树没有根结点,即根结点的个数为0,对于非空树有且只有一个根结点,所以树的根结点数目为0或1。 (9)C 【解析】数据库(DataBase,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,可被各个应用程序所共享。数据库中的数据具有\集成\、\共享\的特点。 (10)B 【解析】数据库系统(Database System,简称DBS),包括数据库(Database,简称DB)和数据库管理系统(Database Management System,简称DBMS)。 (11)D 【解析】选项D)为两条语句。 (12)C 【解析】 C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C)中goto和int是关键字,b-a中'-'不是组成标识符的3种字符之一;选项D)中int是关键字,所以,均是不合法用户标识符的选项是C)。 (13)B 【解析】在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量,而选项B)是用双引号括起来的字符,表示一个字符串常量。 (14)C 【解析】求余运算符\两边的运算对象必须是整型,而选项B)和D)中 \两边的运算对象有浮点整数据,所以选项B)和D)是错误的表达式。在选项A)中赋值表达式的两边出现相同的变量x,也是错误的。选项C)是一个逗号表达式,所以正确答案为C)。 (15)B 【解析】选项A)中包含一个不合法的运算符\选项C)应改为(int)18.5%3;选项D)可理解为两个表达式:a+7=c+b和a=a+7,其中第一个是错的,因为C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。因此,正确答案是选项B),它实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。 (16)B 【解析】由于在main()函数中,变量 i=4,所以就调用fun(4),则输出\k=4\。然后变量k增1等于5,变量i增1等于5,所以main()函数的\k=%d\\n\语句输出\ (17)B 【解析】在本题中,选项B)实际是先计算关系表达式\的值是0还是1,再比较该值与字符'Z'之间的大小关系,显然不能实现题目所要求的功能,而选项A)、C)、D)都可以。 (18)B 【解析】本题考查逻辑与运算的运算规则。其规则是:当运算符前后两个条件表达式都满足时,其最终结果才为真。当发现第一个表达式的值为假,计算机将不再执行后面表达式的运算。 本题中,由于前一个表达式的值为\假\所以,后面的表达式不再进行运算,因而n的值保持不变,仍为2。 (19)B 【解析】两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c的值等于3,变量b的值没有变化,程序输出的结果为3,5,3。 (20)C 【解析】 C语言中,switch语句专用于实现多分支结构程序,其特点是各分支清晰而直观。switch后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。 (21)C 【解析】本题考察变量的自加\和自减\问题。当y 的值为9、6或3时,if语句的条件成立,执行输出语句,输出表达式--y的值,y的自减要先于输出语句执行,故输出结果为8 5 2。 (22)C 【解析】 do while语句的一般形式为:do 循环体语句 while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。 (23)D 【解析】在程序中指针变量p初始指向a[3],执行p减1后,p指向a[2],语句y=*p的作用是把a[2]的值赋给变量y,所以输出为