1、为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传 统的程序流程图,通常也把这种图称为A)PAD 图B)N-S 图。结构图D)数据流图【解析】N-S图是由Nassi和Shneid er man提出的一种符合程序化 结构设计原则的图形描述工具。它的提出是为了避免流程图在描述程序 逻辑时的随意性上灵活性。结构化程序设计主要强调的是A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性【解析】结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化及限制使用got。语句,总的来说可使程序结构良好、易 读、易理解、易维护。为了使模块尽可能独立,要求A)模块的内聚程度要尽
2、量高,且各模块间的耦合程度要尽量强B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强【解析】模块的独立程度可以由两个定性标准度量:耦合性和内聚 性。耦合性是衡量不同模块彼此间互相依赖(连接)的紧密程度呐聚性是 衡量一个模块内部各个元素彼此结合的紧密程度。一般来说,要求模块之 间的耦合尽可能地低,而内聚性尽可能地高。需求分析阶段的任务是确定A)软件开发方法B)软件开发工具C)软件开发费用D)软件系统功能【解析】需求分析是软件定义时期的最后一个阶段,它的基本任务 就是详细调查现实世
3、界要处理的对象(组织、部门、企业等),充分了解原 系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功 能。选项A)软件开发方法是在总体设计阶段需完成的任务;选项B)软件开 发工具是在实现阶段需完成的任务;选项C)软件开发费用是在可行性研 究阶段需完成的任务。算法的有穷性是指A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用【解析】算法具有5个特性:有穷性:一个算法必须(对任何合法 的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运 行时间是有限的;确定性:算法中每一条指令必须有确切的含义,读者 理
4、解时不会产生歧义;可行性:一个算法是可行的,即算法中描述的操 作都是可以通过已经实现的基本运算执行有限次来实现;输入:一个 算法有零个或多个输入,这些输入取自于某个特定的对象的集合;输 出:一个算法有一个或多个输出o对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-l)/2的排序方 法是A)快速排序B)冒泡排序C)直接插入排序D)堆排序【解析】在最坏情况下,快速排序、冒泡排序和直接插入排序需要 的比较次数都为n(n-l)/2,堆排序需要的比较次数为nlog2n。如果进栈序列为el,e2,e3,e4,则可能的出栈序列是A)e3,el,e4,e2B)e2,e4,e3,elC)e3,e4,e
5、l,e2D)任意顺序【解析】由栈后进先出”的特点可知:A)中el不可能比e2先出,C)中 el不可能比e2先出,D)中栈是先进后出的,所以不可能是任意顺序。B)中 出栈过程如下图所示:将E-R图转换到关系模式吐实体与联系都可以表示成A)属性B)关系C)键D)域【解析】关系数据库逻辑设计的主要工作是将E-R图转换成指 定RDBMS中的关系模式。首先,从E-R图到关系模式的转换是比较直接 的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属 性,实体集也可以转换成关系。有三个关系R、S和T如下:RBC D aO k l b 1 nlS BCD f 3 h2 a Ok i n 2 x
6、lT BCD a 0 k l由关系R和S通过运算得到关系T,则所使用的运算为A)并B)自然连接C)笛卡尔积D)交【解析】在关系运算中,交的定义如下:设R1和R2为参加运算的两 个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则RI R2为 交运算,结果仍为度等于n的关系,其中,交运算的结果既属于R1,又属于 R2o下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结 构不变C)关系中的每一列称为元组,个元组就是一个字段D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另 一个关系的关键字,则称其为本关系
7、的外关键字【解析】数据处理是指将数据转换成信息的过程,故选项A)叙述错 误;数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻 辑结构,故选项B)叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项C)叙述错误。以下叙述中正确的是A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要有输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出【解析】算法具有的5个特性是:有穷性;确定性;可行性;有0个或多 个输入;有一个或多个输出。所以说用C程序实现的算法可以没有输
8、入但 必须要有输出。下列可用于C语言用户标识符的一组是A)void,d ef ine,WORDB)a3_3,_123,CrC)For,-abc,IF CaseD)2a,DO,sizeof【解析】C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线,排除选项C)和D);C语言中还规定标 识符不能为C语言的关键字,而选项A)中void为关键字,故排除选项A)。以下选项中可作为C语言合法常量的是A)-80B)-080C)-8el.OD)-80.0e【解析】选项B)项中,以0开头表示是一个八进制数,而八进制数的 取值范围是。7,所以-080是不合法的;选项C)和D)中,
9、e后面的指数必须是 整数,所以也不合法。若有语句:char*line5;,以下叙述中正确的是A)定义line是一个数组,每个数组元素是一个基类型为char的指针 变量B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型 数组C)定义line是一个指针数组,语句中的*号称为间址运算符D)定义line是一个指向字符型函数的指针【解析】C语言中口比*优先级高,因止匕line先与5结合,形成line5 形式,这是数组形式,它有5个元素,然后再与line前面的“*”结合,表示此数 组是一个指针数组,每个数组元素都是一个基类型为char的指针变量。以下定义语句中正确的是A)int a=b=0
10、;B)char A=65+l,b=b;C)f loat a=1,*b=&a,*c=&b;D)d ouble a=0.0;b=1.1;【解析】本题考查变量的定义方法。如果要一次进行多个变量的 定义,则在它们之间要用逗号隔开,因此选项A)和D)错误。在选项C)中,变 量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量b,故选项C)错误。有以下程序段char ch;int k;ch=a1;k=12;pr intf(”c,%d,”,ch,ch,k);pr intf(nk=%d nn,k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配
11、输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12【解析】输出格式控制符。表示将变量以字符的形式输出;输出格 式控制符(1表示将变量以带符号的十进制整型数输出,所以第一个输出 语句输出的结果为a,97;第二个输出语句输出的结果为k=12。有以下程序main()int i,s=l;f or(i=l;i=2&c=2&c=2&c=2&cv=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时淇值只能为3或5,所以表达式c!=3和c!=5中至少 有一个为真,即不论c为何值,选项B中的表达式都为“真”。若变量已正确定义,有以下程
12、序段int a=3,b=5,c=7;if(ab)a=b;c=a;if(c!=a)c=b;pr intf(n%d,%d,%d nn,a,b,c);其输出结果是A)程序段有语法错B)3,5,3C)3,5,5D)3,5,7【解析】两个if语句的判断条件都不满足,程序只执行了 c=a这条语 句,所以变量c的值等于3,变量b的值没能变化,程序输出的结果为3,5,3。所 以正确答案为B)。有以下程序#includ e main()int x=l,y=O,a=O,b=O;switch(x)case 1:switch(y)case 0:a+;br eak;case l:b+;br eak;case 2:a+;
13、b+;br eak;case 3:a+;b+;)pr intf(na=%d,b=%d nn,a,b);)程序的运行结果是A)a=l,b=OB)a=2,b=2C)a=l,b=lD)a=2,b=l【解析】本题考查switch语句,首先,x=l符合条件case 1,执行switch(y)语句,y=0符合case。语句,执行a+并跳出switch(y)语句,此时因为 case 1语句后面没有br eak语句,所以向后执行case 2语句,执行a+,b+,然 后跳出 switch(x),得 a=2,b=l。下列程序的输出结果是#includ e std io.hmain()int i,a=0,b=0;f
14、 or(i=l;i10;i+)if(i%2=0)a+;continue;b+;pr intf(na=%d,b=%dn,a,b);A)a=4,b=4B)a=4,b=5C)a=5,b=4D)a=5,b=5【解析】continue语句的作用是跳过本次循环体中余下尚未执行的 语句,接着再一次进行循环条件的判定。当能被2整除时再就会增1,之后执 行continue语句,直接执行到f or循环体的结尾,进行i+,判断循环条件。已知int t=0;while(t=l)则以下叙述正确的是A)循环控制表达式的值为。B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对【解析】t=l是将t赋值为1,
15、所以循环控制表达式的值为1。判断t是否 等于1时,应用t=l,注意与“=的用法。下面程序的输出结果是main()int a10=l,2,3,4,5,6,7,8,90,*p=a;pr intf(d n”,*(p+2);A)3B)4C)1D)2【解析】在C语言中,数组元素是从。开始的。指针变量p指向数组 的首地址,(p+2)就会指向数组中的第3个元素。题目中要求输出的是元素 的值。以下错误的定义语句是A)int x3=0,1,1,2,3);B)int x43=1,2,3,123,1,2,3,123;C)int x 4=123,1,2,3,1,2,3,1,2,3;D)int x 3=1,2,3,4;
16、【解析】本题考查的是二维数组的定义和初始化方法。C语言中,在定义并初始化二维数组时,可以省略数组第一维的长度,但是不能省略 第二维的长度。故选项C)错误。有以下程序void ss(char*s,char t)while(*s)if(*s=t)*s=t-a+A;s+;main()char str l100=nabcd d f ef d bdn,c=,d,;ss(str l,c);pr intf(n%snn,str l);程序运行后的输出结果是A)ABCDDEFEDBDB)abcDDf ef DbDC)abcAAf ef AbAD)Abcd d f ef d bd【解析】在内存中,字符数据以ASC
17、II码存储,它的存储形式与整数 的存储形式类似。C语言中,字符型数据和整型数据之间可以通用,也可以 对字符型数据进行算术运算,此时相当于对它们的ASCII码进行算术运 算,在本题中,s+相当于s=s+l,即让s指向数组中的下一个元素。有如下程序 main()char ch25=n6937,V,8254n,*p2;int i,j,s=O;f or(i=0;i2;i+)pi=chi;f or(i=0;il0?;j+=2)s=10*s+pij-,0,;pr intf(n%d nn,s);该程序的输出结果是A)69825B)63825C)6385D)693825【解析】该题稍微难一点。主要要搞清楚以下
18、几点:定义了一个 指针数组char*p后,程序中第一个循环f or(i=0;iv2;i+)pi=chi;的作 用,是使指针数组的p0元素(它本身是一个指针)指向了二维数组ch的第 一行字符串,并使指针数组的pl元素指向二维数组Ch的第二行字符串,这样,就使指针数组p和二维数组Ch建立起了一种对应关系,以后对二维 数组ch的某个元素的引用就有两种等价的形式:ch用用或pi用。对二 维数组ch的初始化,使其第一行ch中存入了字符串“6937”,第二行chl 中的内容为字符串“8254”。程序中第二个循环中的循环体 s=s*10+pij-。;的功能是这样的,每执行一次,将s中的值乘以10(也即,将
19、s中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前 P用皿中的字符量转换为相应的数字,然后把这个数字加到s的个位上。注意到内层循环的循环条件pi用0 是指pi用中的字符只要不是字 符串结束标志0就继续循环,语句j+=2;是使下标j每次增加2,也即一个隔 一个地从p i所指向的字符串中取出字符。经过上述解析后,不难看 出,该程序首先从p:0所指向的字符串6937中一个隔一个地取出字 符,分别是6和3,然后从p 1所指向的字符串8254中一个隔一 个地取出字符,分别是8和5,同时经过转换和相加运算后,结果s 中的值应该是6385。有定义语句:char 若要从终端给s输入5个字符,错
20、误的输入语句是A)gets(&s0);B)scanf(n%sn,s+1);C)gets(s);D)scanf(n%sn,sl);【解析】在格式输入中,要求给出的是变量的地址,而D)答案中给出 的sl是一个值的表达式。以下叙述中错误的是A)在程序中凡是以“#”开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#d ef ine MAX 是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的【解析】C语言中的预处理命令以符号#开头,这些命令是在程序编 译之前进行处理的,选项D)的描述错误。设有以下说明语句typed ef str uct int n;ch
21、ar ch8;PER;则下面叙述中正确的是A)PER是结构体变量名B)PER是结构体类型名C)typed ef str uct是结构体类型D)str uct是结构体类型名【解析】本题中,typed ef声明新的类型名PER来代替已有的类型 名,PER代表上面指定的一个结构体类型,此吐也可以用PER来定义变 量。以下叙述中错误的是A)gets函数用于从终端读入字符串B)getchar函数用于从磁盘文件读入字符C)f puts函数用于把字符串输出到文件D)f wr ite函数用于以二进制形式输出数据到文件【解析】getchar函数的作用是从终端读入个字符。以下能正确定义一维数组的选项是A)int
22、a5=0,1,2,3,4,5;B)char a=O,T,2,3,4?5?0;C)char a=,A,;B,;C;D)int a5=n0123n;【解析】选项A)中,定义的初值个数大于数组的长度;选项C)中,数组 名后少了中括号;选项D)中,整型数组不能赋予字符串。有以下程序#includ emain()char p=a,b,c,q10=a,b,c;pr intf(n%d%d nn9str len(p)9str len(q);以下叙述中正确的是A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出 的长度都为3B)由于p数组中没有字符串结束符,长度不能确定,但q数组中字符 串长度为3C)
23、由于q数组中没有字符串结束符,长度不能确定,但p数组中字符 串长度为3D)由于p和q数组中都没有字符串结束符,故长度都不能确定【解析】在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出数组p和q都有3个字符,所以长度均为3。有以下程序#includ e#includ e void f un(char*s,int n)char*t;int i,j;f or(i=0;in-l;i+)f or(j=i+l;jstr len(s j)t=si;si=sj;sj=t;)main()char*ss=Hbccn,nbbccn,nx yH,naaaaccn,naabccn;f un(ss,5
24、);pr intf(n%s,%snn,ss0,ss4);)程序的运行结果是A)x y,aaaaccB)aaaacc,x yC)bcc,aabccD)aabcc,bcc【解析】函数f un(char*s,int n)的功能是对字符串数组的元素按照 字符串的长度从小到大排序。在主函数中执行f un(ss,5)语句后,*SS口=丫;七八丁灿出丁,收广阳厮04的输出结果为x y,aaaacco有以下程序#includ e int f(int x)int y;if(x=0llx=1)r etur n(3);y=x*x-f(x-2);r etur n y;)main()int z;z=f(3);pr in
25、tf(n%d nn,z);)程序的运行结果是A)0B)9C)6D)8【解析】函数int f(int x)是一个递归函数调用,当x的值等于。或1时,函数值等于3,其他情况下y=x 2-f(x-2),所以在主函数中执行语句z=f(3)时,y=3*3-f(3-2)=9-f(l)=9-3=6。下面程序段的运行结果是char str=nABCn,*p=str;pr intf(d n”,*(p+3);A)67B)0C)字符/c,的地址D)字符/C【解析】考查指向字符串的指针变量。在该题中,指针变量p指向的 应该是该字符串中的首地址,p+3指向的是字符串结束标志的地址,因 而*(p+3)的值为0。若有以下定
26、义:str uct link int d ata;str uct link*nex t;a,b,c,*p,*q;且王启标2间已有如下图所示的链表结构:a bd ata nex t d ata nex t5+90tpcd ata nex t7t q指针p指向变量a,q指向变量c。则能够把c插入到a和b之间并形成新的链 表的语句组是:A)a.nex t=c;c.nex t=b;B)p.nex t=q;q.nex t=p.nex t;C)p-nex t=&c;q-nex t=p-nex t;D)(*p).nex t=q;(*q).nex t=&b;【解析】本题考查链表的数据结构,必须利用指针变量不能
27、实现,即一个结点中应包含一个指针变量,用它存放下一结点的地址。对于下述程序,在方式串分别采用和“wb”运行时,两次生成的文件 TEST的长度分别是#includ evoid main()FILE*f p=f open(nTESTn,);f putc(,Af p);f putc(,nf p);f putc(,Bf p);f putc(,nf p);f putcCCf p);f close(f p);A)7字节、7字节B)7字节、5字节C)5字节、7字节D)5字节、5字节【解析】以wt”方式写入的是字符文件,转义字符X,被看作两个字 符来处理。而“wb”方式写入的是二进制文件,转义字符X,是一个字
28、符。变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进 制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行 的运算是A)aAbB)albC)a&bD)a4【解析】本题考查的是位运算的知识,对于任何二进制数,和1进行 异或运算会让其取反,而和0进行异或运算不会产生任何变化。下面的程序段运行后,输出结果是int i,j,x=O;static int a88;f or(i=0;i3;i+)f or(j=0;j3;j+)aij=2*i+j;f or(i=0;i8;i+)x+=aij;pr intf(n%dn,x);A)9B)不确定值C)0D)18【解析】
29、本题主要考查的是用二维数组首地址和下标来引用二维 数组元素的方法。通过分析可知,程序中的双重循环定义了一个如下的二 维数组:0 1 22 3 44 5 6由于数组的下标是从0开始的,所以二维数组元素ai用表示的是二维数 组a的第i+1行、第j+1列对应位置的元素。下列程序执行后的输出结果是void f unc(int*a,int b)b0=*a+6;main()int a,b5;a=0;b0=3;f unc(&a,b);pr intf(n%d n”,b0);A)6B)7C)8D)9【解析】函数的参数不仅可以是整型、实型、字符型等数据,还可 以是指针型。它的作用是将一个变量的地址传递到另一个函数
30、中。当数 组名作参数吐如果形参数组中的各元素的值发生变化,实参数组元素的 值也将随之发生变化。测试的目的是暴露错误,评价程序的可靠性:而【1】的目的是发现错误的位置并改正错误。【解析】软件测试的目标是在精心控制的环境下执行程序,以发现 程序中的错误,给出程序可靠性的鉴定;调试也称排错,它是一个与测试既 有联系又有区别的概念。具体来说,测试的目的是暴露错误,评价程序的 可靠性,而调试的目的是发现错误的位置,并改正错误。某二义树中度为2的结点有18个,则该二叉树中有【2】个叶子结点。【解析】在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度 为2的结点多个。当循环以非空且队尾指针等于队头指针吐
31、说明循环队列已满,不能进行入队运算。这种情况称为【3】o【解析】入队运算是指在循环队列的队尾加入一个新元素。这个 运算有两个基本操作:首先将队尾指针进一(即r ear=r ear+l),并当 r ear=m+l时,置r ear=l然后将新元素插入队尾指针指向的位置。当循环队 列非空(s=l)且队尾指针等于队头指针时,说明循环队列已满,不能进行入 队运算,这种情况称为“上溢”。在关系模型中,把数据看成一个二维表,每一个二维表称为一个【4】o【解析】在关系模型中,把数据看成个二维表,每一个二维表称为 一个关系。表中的每一列称为一个属性,相当于记录中的一个数据项,对 属性的命名称为属性名;表中的一行
32、称为一个元组,相当于记录值。在计算机软件系统的体系结构中,数据库管理系统位于用户和上1 之 间。【解析】数据库管理系统是数据库的机构,它是一种系统软件,负责 数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务。位于用户和操作系统之间。以下程序的输出结果是 6】omain()char c=z;pr intf(c”,c-25);【解析】的ASCII码值为122,经过c-25运算后,得97,以字符形式输 出是a。阅读下面语句,则程序的执行结果是 71 o#includ e std io.h main()int a=-l,b=l,k;if(+a0)&!(b-=0)pr intf(n%d,%d
33、 n,a,b);else pr intf(n%d,%d nn,b,a);【解析】与运算两边的语句必须同时为真时,结果才为真。当执行 完if(+a0)&!(b-4)pr intf(n%d nn,i);br eak;pr intf(n%d nn,i+);【解析】本题考查了f or循环语句的使用,br eak语句用在本题中是结 束f or循环直接跳出循环体外。当i=l时,因为if语句条件不满足,所以直接 执行pr intf(d n”,i+);输出1,同时i自加1;执行第二次f or循环时,i=3;同样的if语句条件不满足,所以直接执行pr intf(d n”,i+);输出3,同时 i自加1;执行第三
34、次f or循环时,i=5,if语句条件满足,所以执行 pr intf(d n”,i),输出5,然后br eak语句跳出了f or循环。以下程序的定义语句的初值是一【9】,程序运行后输出的内容 是【10】。#includ e main()int x=l,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,*p4,i;f or(i=0;i4;i+)pi=&x 2*i+l;pr intf(n%dn9pi0);pr intf(nnn);)【解析】在主函数中根据整型数组x 口的定义可知,x l的初值等于2o在f or循环语句中,当i=0时,p0=&x l,p=2;当i=l时,pl=
35、&x 3,pl0=4;当 i=2 时,p2=&x 5,p20=6;当 i=3时,p3=&x 7,p30=8,所以程序输出的结果为2、4、6、8。以下程序的输出结果是一【11】。#includ e 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);pr intf(H%d%d n,*p,*q);)【解析】函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的 交换,在主函数中调用swap(p,q)后,形参指针变量a和b分别指向i和j,在 swap(int*a,int*b
36、)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所 指向变量的值没有发生变化,所以输出结果为3 5O以下程序的输出结果是【121 omain()char s=nABCDn,*p;f or(p=s+l;p=A&k k=Allk k=a&(k k+32)=ZD)isalpha(k k)&(k k=2&c=2&c=2&c=2&c=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6吐其值只能为3或5,所以表达式c!=3和c!=5中至少 有一个为真,即不论c为何值,表达式B)都为“真,若有条件表达式(ex p)?a+:b-,则以下表达式中能完全等价于表达式(ex p)的是A)
37、(ex p=0)B)(ex p!=0)C)(ex p=l)D)(ex p!=l)【解析】条件运算符要求有3个操作对象,称三目(元)运算符,它是C 语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式1?表达 式2:表达式3其求解顺序是:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值,注意+、-的用 法。以下不正确的定义语句是A)d oublex 5=2.0,4.0,6.0,8.0,10.0;B)inty5=0135,7,9;C)char cl=,r;2,;3,;4,;5,
38、;D)char c2=x l0 x ax 8【解析】在一维数组中要注意的是作为下标表达式的常量表达式 的值必须是大于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所 以是错误的。下列程序执行后的输出结果是main()int a33,*p,i;p=&a00;f or(i=l;i2!l【解析】C语言中数组下标是从。开始的,所以二维数组a的第 一维下标取值为。、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示数组元素a00。有定义语句:char 若要从终端给s输入5个字符,错误的输入语句是A)gets(&s0);B)scanf(n%sn,s+1);C)get
39、s(s);D)scanf(n%sn,sl);【解析】在格式输入中,要求给出的是变量的地址,而D)答案中给出 的sl是一个值的表达式。有以下程序#includ e#d ef ine N 5#d ef ine M N+l#d ef ine f(x)(x*M)main()int il,i2;il=f(2);i2=f(l+l);pr intf(n%d%d n,il,;)程序的运行结果是A)12 12B)ll 7C)ll 11D)12 7【解析】根据宏替换的替换规则,我们可知,f(2)=2*N+l=2*5+l=H,f(l+l)=l+l*N+l=l+l*5+l=7。int a;char b;d ouble
40、 c;d ata;以下叙述中错误的是A)d ata的每个成员起始地址都相同B)变量d ata所占内存字节数与成员c所占字节数相等C)程序段:(12=53血(仙”,(M);输出结果为5.000000D)d ata可以作为函数的实参【解析】选项A),共用体的每个成员的起始地址都相同;选项B),共用 体变量所占的内存长度等于最长的成员的长度;选项C)因为每个成员的 起始地址相同,所以整型数5以浮点型输出时为5.000000;选项D)C语言规 定,不能把共用体变量作为函数的参数。有以下程序#includ emain()FILE*f p;int k,n,a6=l,2,3,4,5,6;f p=f open
41、(nd 2.d atn,nwn);f pr intf(f p,n%d%d%d nn,a0,al,a2);f pr intf(f p,n%d%d%d nn,a3,a4,a5);f close(f p);f p=f open(nd 2.d atn,nrn);f scanf(f p/%d%dn,&k,&n);pr intf(n%d%d nn,k,n);f close(f p);)程序运行后的输出结果是A)1 2B)1 4C)123 4D)123 456【解析】将有6个元素的整型数组分两行输出到一个文件中,因为输 出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作吐每 一行都会被认为是一个完整
42、的数,而换行符则作为它们的分隔符。若已定义int a=0,l,2,3,4,5,6,7,8,9,*p=a,i;其中“云9,贝IJ对a数组元素不正确的引用是A)ap-aB)*(&ai)C)piD)a10【解析】通常,引用一个数组元素可以用下标法,如ap同形式,或指 针法,如*(&ai)的形式。本题中a9=9,a10显然超出了数组范围,注意,数组的下标是从。开始的。有以下程序#includ e void f un(int*s,int nl,int n2)inti=nl;j=n2;while(ij)t=si;si=sj;sj=t;i+;j-;main()int a10=1,2,345,6,7,8,9,
43、0,k;f un(a,0,3);f un(a,4,9);f un(a,0,9);f or(k=0;k 10;k+)pr intf(n%d,ak);pr intf(nnn);)程序的运行结果是A)0987654321B)4321098765Q5678901234D)0987651234【解析】函数f un(int*s,int nl,int n2)的功能是对数组s中的元素进行 首尾互相调换。所以在主函数中,当f un(a,0,3)执行完后,数组 a12=4,3,2,5,6,7,890;再执行由口(44,9),数组 a12=4,3,2,1,0,9,8,7,6,5;再执行玲口3,0,9)后,数组 a1
44、2=5,6,7,8,9,0,l,2,3,4。阅读下列程序,当运行函数时,输入asd af aaz67,则输出为#includ e#includ e#includ e int f un(char*str)int ij=0;f or(i=0;str i!=0;i+)if(str i!=!)str j+=str i;str昨0;)main()|char str 81;int n;pr intf(nInput a str ing:);gets(str);puts(str);f un(str);pr intf(n%snn,str);)A)asd af aaz67B)asd af aa z67C)asdD
45、)z67【解析】本题题意要求删除所有空格,即除了空格以外的其他所有 字符都要留下。由于c语言中没有直接删除字符的操作,所以我们对于删 除字符的操作都是采用留下字符的算法似前的题目亦是如此。用Str i 从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空 格(注意在if()的单弓I号之间有一个空格),则将其保存str j中。注意j的下 标变化、初值及最后加串结束符 有以下程序 int f un(int n)if(n=l)r etur n 1;elser etur n(n+f un(n-1);)main()int x;scanf(n%dn,&x);x=f un(x);pr intf(
46、n%d nn,x)执行程序吐给变量x输入10,程序的输出结果是A)55B)54C)65D)45【解析】本程序考察的是函数的递归调用,在调用一个函数的过程 中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果 为 1+2+3+4+5+6+7+8+9+10=55。下面程序段中,输出*的个数是char*s=ta018bc”;f or(;*s!=0;s+)pr intf(n*);A)9B)5C)6D)7【解析】本题中,格式符。表示的是八进制无符号形式输出整型数(不带前导。),字符常量在内存中占一个字节,存放的是ACSII码代码值。C 语言规定,所有字符常量都作为整型量来处理,在计算机内部,
47、其对应的整 数值就是ACSII字符集中该字符的序号,即&*s中有几个字符就输出几个*。C语言结构体类型变量在程序运行期间A)TC环境在内存中仅仅开辟一个存放结构体变量地址的单元B)所有的成员一直驻留在内存中C)只有最开始的成员驻留在内存中D)部分成员驻留在内存中【解析】结构体类型的变量在程序运行期间要作为一个整体占用 连续的内存单元。已知函数的调用形式为f r ead(buf,size,count,f p)渗数buf的含义是A)一个整型变量,代表要读入的数据项总数B)一个文件指针,指向要读的文件C)一个指针,指向要读入数据的存放地址D)一个存储区,存放要读的数据项【解析】这是一道考查f r e
48、ad函数的题。buf是一个指针,f r ead是读入 数据的存放地址;f wr ite是输出数据的地址(以上指的是起始地址)。设有以下语句char x=3,y=6,z;z=xAy2;则z的二进制值是A)00010100B)00011011C)00011100D)00011000【解析】本题考查两个位运算符。按位异或运算符八是双目运算符,其功能是参与运算的两数各对应的 二进位相异或,当两对应的二进位相异或时,结果为1。左移运算符是双目运算符,其功能把“”左边的运算数的各二进位 全部左移若干位,由右边的数指定移动的位数,高位丢弃,低位补。,并 且运算符的优先级于“八二在C语言中,只有在使用时才占用
49、内存单元的变量,其存储类型是A)autoB r egisterB)ex ter n 和 r egisterC)auto 和 staticD)static 和 r egister【解析】在C语言中只有自动变量和寄存器变量在使用时才占用内 存单元。设有定义语句int(*f)(int);,则以下叙述正确的是A)f是基类型为int的指针变量B)f是指向函数的指针变量,该函数具有一个int类型的形参C)f是指向int类型一维数组的指针变量D)f是函数名,该函数的返回值是基类型为int类型的地址【解析】本题考查的是指向函数的指针。语句int(*f)(int);是对一 个函数的声明,其中f是指向该函数的指针
50、,该函数有一个整型的参数,函 数返回值类型为整型。测试用例包括输入值集和【1】值集。【解析】软件测试用例是为了有效发现软件缺陷面编写的包含测 试目的、测试步骤、期望测试结果的特定集合。正确认识和设计软件测 试用例可以提高软件测试的有效性,便于测试质量的度量,增强测试过程 的可管理性。软件测试用例包括:输入值集和输出值集。测试用例是软件 测试的核心。在树形结构中,树根结点没有【2】o【解析】在树形结构中,每一个结点只有一个前件,称为父结点;没有 前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们 都称为该结点的子结点;没有后件的结点称为叶子结点。数据结构分为逻辑结构与存储结构,线