《二级C历年真题.pdf》由会员分享,可在线阅读,更多相关《二级C历年真题.pdf(133页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2007年9月全国计算机等级考试二级笔试试卷公共基础知识和c语言程序设计(考试时间120分钟,满 分100分)一、选择题(D)(10)每题2分,(11)(50)每 题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡上,答在试卷上不得分。(1)软件是指。A)程序B)程序和文档C)算法加数据结构D)程序、数据与相关文档的完整集合(2)软件调试的目的是。A)发现错误B)改正错误C)改善软件的性能D)验证软件的正确性(3)在面向对象方法中,实现信息隐蔽是依靠。A)对象的继承B)对象的多态C)对象的封装D)对象的分类(4)下列叙述中,不符合良好程序
2、设计风格要求的是。A)程序的效率第一,清晰第二B)程序的可读性好C)程序中要有必要的注释D)输入数据前要有提示信息(5)下列叙述中正确的是。A)程序执行的效率与数据的存储结构密切相关B)程序执行的效率只取决于程序的控制结构C)程序执行的效率只取决于所处理的数据量D)以上三种说法都不对(6)下列叙述中正确的是。A)数据的逻辑结构与存储结构必定是一一对应的B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C)程序设计语言中的数据一般是顺序存储结构,因此,利用数组只能处理线性结构D)以上三种说法都不对(7)冒泡排序在最坏情况下的比较次数是。A)n(n+l)/2B)nlog2
3、nC)n(n-l)/2D)n/2(8)一棵二叉树中共有70个叶子结点与8 0个度为1的结点,则该二叉树中的总结点数为。A)219B)221C)229D)231(9)下列叙述中正确的是。A)数据库系统是一个独立的系统,不需要操作系统的支持B)数据库技术的根本目标是要解决数据的共享问题C)数据库管理系统就是数据库系统D)以上三种说法都不对(10)下列叙述中正确的是。A)为了建立一个关系,首先要构造数据的逻辑关系B)表示关系的二维表中各元组的每一个分量还可以分成若干数据项C)一个关系的属性名表称为关系模式D)一个关系可以包括多个二维表(11)C 语言源程序名的后缀是。A).exeB).CC).obj
4、D).cp(12)可在C 程序中用作用户标识符的一组标识符是。A)andB)DateC)HiD)case_2007y m dDr.TomBigl(13)以下选项中,合法的一组C 语言数值常量是。A)028B)12.C).177D)0 x8A,5e 30Xa234e 1.510,000.0 xf4.5e00abc3.e5(1 4)以下叙述中正确的是。A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D)main可作为用户标识符,用以命名任意一个函数作为主函数(15)
5、若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是。A)scanf(,%d,a,b,c);B)scanf(n%d%d%da,b,c);C)scanf(”d”,p);D)scanf(H%d,&p);(1 6)以下关于long、int和 short类型数据占用内存大小的叙述中正确的是。A)均占4 个字节B)根据数据的大小来决定所占内存的字节数C)由用户自己定义D)由C 语言编译系统决定(17)若变量均已正确定义并赋值,以下合法的C 语言赋值语句是。A)x=y=5;B)x=n%2.5;C)x+n=i;D)x=5=4+1;(18)有以下程序段:intj;
6、floaty;charname 50;scanf(n%2d%f%s,&j,&y,name);当执行上述程序段,从键盘上输入555667777abc后,y 的值为。A)55566.0B)566.0C)7777.0D)566777.0(19)若变量已正确定义,有以下程序段:i=0;do printf(%d,M,i);while(i+);printf(n%d ni);其输出结果是。A)0,0B)O,1C)l,lD)程序进入无限循环(20)有以下计算公式:y=x-x(x0)(x=O)y=sqrt(x);B)y=sqrt(x);else y=sqrt(-x);if(x=O)y=sqrt(x);D)y=s
7、qrt(x=O?x:-x);if(xO)y=sqrt(-x);(21)设有条件表达式:(EXP)?i+:j-,则以下表达式中与(EXP)完全等价的是。A)(EXP=O)B)(EXP!=O)C)(EXP=1)D)(EXP!=1)(22)有以下程序:#includemainO inty=9;for(;y0;y-)if(y%3=0)printf(H%d,y);)程序的运行结果是。A)741B)963C)852D)875421(23)已有定义:chare;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是。A)isupper(c)B)A=c=z ZC)A =c
8、&c=z ZD)c=(z z-32)&(a-32)=c(24)有以下程序:#includemain()int i,j,m=55;fbr(i=l;i=3;i+)for(j=3;j=i;j+)m=m%j;printf(%d n,m);)程序的运行结果是。A)0B)1C)2D)3(25)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是。A)函数的实参和其对应的形参共占同一存储单元B)形参只是形式上的存在,不占用具体存储单元C)同名的实参和形参占同存储单元D)函数的形参和实参分别占用不同的存储单元(2 6)已知字符 A 的 ASCII代码值是6 5,字符变量c l的值是 A,c 2
9、的值是 D 。执行语句“printf(%d,%d”,cl,c2-2);”后,输出结果是。A)A,BB)A,68C)65,66D)65,68(2 7)以下叙述中错误的是。A)改变函数形参的值,不会改变对应实参的值B)函数可以返回地址值C)可以给指针变量赋一个整数作为地址值D)当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL(2 8)以下正确的字符串常量是。A)B)abcQOlympic GamesD)(29)设有定义:char p =I:2 3,*q=p;,以下不能计算出一个char型数据所占字节数的表达式是。A)sizeof(p)B)sizeof(char)C)sizeof(
10、*q)D)sizeof(p 0 )(30)有以下函数:int aaa(char*s)char*t=s;while(*t+);t-;return(t-s);)以下关于aaa函数的功能的叙述正确的是。A)求字符串s 的长度B)比较两个串的大小C)将串s 复制到串tD)求字符串s 所占字节数(31)若有定义语句:inta 3 6 按在内存中的存放顺序,a 数组的第10个元素是。A)a 0 4B)a 1 3C)a 0 3D)a 1 4(32)有以下程序:#includevoid fun(char*p)+p;printf(M%s nn,*p);main()char*a 口=(”Mrming,Aftern
11、oon,Evening,Night);fun(a);)程序的运行结果是。A)AfternoonB)fternoonC)MorningD)orning(33)若有定义语句:in ta 3,*p 3;,则以下语句中正确的是。A)p=a;B)p 0=a;C)p 0=&a 1 2;D)p 1=&a;(34)有以下程序。#includevoid fun(int*a,intn)/*fun函数的功能是将a 所指数组元素从大到小排序*/int t,i,j;for(i=0;in-1 ;j+)for(j=i+l;jn;j+)if(a i a j)t=a i;a i=a j;a j=t;)main()intc 10
12、=l,2,3,4,5,6,7,8,9,0,i;fun(c+4,6);for(i=0;i 10;i+)printf(%d,c i );printf(n);)程序的运行结果是。A)1,2,3,4,5,6,7,8,9,0,B)0,9,8,7,6,5,1,2,3,4,00,9,8,7,6,5,4,3,2,1,D)1,2,3,4,9,8,7,6,5,0,(35)有以下程序:#includeintfun(chars )intn=O;while(*s=r O)n=10*n+*s-z O;s+;return(n);)main()chars 10=f 6 1 4f/9f/O*,;printf(n%d nfun(
13、s);)程序的运行结果是。A)9B)61490C)61D)5(36)当用户要求输入的字符串中含有空格时,应使用的输入函数是。A)scanf()B)getchar()C)gets()D)getc()(3 7)以下关于字符串的叙述中正确的是。A)C语言中有字符串类型的常量和变量B)两个字符串中的字符个数相同时才能进行字符串大小的比较C)可以用关系运算符对字符串的大小进行比较D)空串一定比空格打头的字符串小(38)有以下程序:#includevoid fun(char*t,char*s)while(*t!=0)t+;while(*t+=*s+4-)!=0);)main()char ss 10=nac
14、cn,aa 10=bbxxyyM;fun(ss,aa);printf(%s,%s nu,ss,aa);)程序的运行结果是。A)accxyy,bbxxyyB)acc,bbxxyyC)accxxyy.bbxxyyD)accbbxxyy,bbxxyy(39)有以下程序:#include#includevoid fun(chars 10,intn)chart;inti,j;for(i=0;in-l;i+)fbr(j=i+l;j s j 0)t=s Li 0;s Li 0=s Lj O;s j 0=t;main()charss 5 10=nbccn,bbcc*xy,aaaacc,Maabccu;fun(
15、ss,5);printf(%s,%s nM,ss 0,ss 4 );)程序的运行结果是。A)xy,aaaaccB)aaaacc,xyC)xcc,aabccD)acc,xabcc(40)在 一个C源程序文件中所定义的全局变量,其作用域为。A)所在文件的全部范围B)所在程序的全部范围C)所在函数的全部范围D)由具体定义位置和extern说明来决定范围(41)有以下程序:#includeinta=l;intf(intc)staticinta=2;c=c+l;return(a+)+c;)main()inti,k=O;for(i=0;i2;i+)inta=3;k+=f(a);k+=a;printf(n%
16、d n,k);)程序的运行结果是。A)14B)15C)16D)17(42)有以下程序:#includevoid fiin(int n,int*p)intfl,f2;if(n=llln=2)*p=l;else fun(n-l,&fl);fun(n-2,&f2);*p=fl+f2;)main()ints;fun(3,&s);printf(H%d nu,s);程序的运行结果是。A)2B)3C)4D)5(43)若程序中有宏定义行:#deflneN 100则以下叙述中正确的是。A)宏定义行中定义了标识符N 的值为整数100B)在编译程序对C 源程序进行预处理时用100替换标识符NC)对 C 源程序进行编
17、译时用100替换标识符ND)在运行时用100替换标识符N(44)以下关于typedef的叙述错误的是。A)用 typedef可以增加新类型B)typedef只是将已存在的类型用 个新的名字来代表C)用 typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名D)用 typedef为类型说明一个新名,通常可以增加程序的可读性(45)有以下程序:#include structtt intx;structtt*y;*p;struct tt a 4=20,a+l,15,a+2,30,a+3,17,a);main()inti;p=a;for(i=1 ;ix);p=p-y;)程序的运行结果是
18、。A)20,30,B)30,17C)15,30,D)20,15,(46)有以下程序:#include#includetypedef struct char name 9;char sex;float score 2;STU;STUf(STUa)STUb=HZhao/m,85.0,90.0;inti;strcpy(a.name,b.name);a.sex=b.sex;fbr(i=0;i2;i+)a.score i=b.score i ;returna;)main()STUc=QianM/f,95.0,92.0,d;d=f(c);printf(n%s,%c,%2.0f,%2.0f nu,d.nem
19、e,d.sex,d.score 0,d.score I );程序的运行结果是。A)Qian,f,95,92B)Qian,m,85,90C)Zhao,m,85,90D)Zhao,f,95,92(4 7)设有以下定义:union dataintdl;float(12;demo;则下面叙述中错误的是。A)变量demo与成员d2所占的内存字节数相同B)变量demo中各成员的地址相同C)变量demo和各成员的地址相同D)若给demo.dl赋 99后,demo.d2中的值是99.0(48)有以下程序:#inciudemain()inta=l,b=2,c=3,x;x=(aAb)&c;printf(n%d n
20、,x);)程序的运行结果是。A)0B)1C)2D)3(49)读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是。A)一个文件指针,指向待读取的文件B)一个整型变量,代表待读取的数据的字节数C)一个内存块的首地址,代表读入数据存放的地址D)一个内存块的字节数(50)有以下程序:#includemain()FILE*fp;inta 10=1,2,3,0,0,i;fp=fopen(d2.dat,“wb);fwtite(a,sizeof(int),5,fp);fwrite(a,sizeof(int),5,fp);fclose(fp);fp
21、=fopen(,d2.dat,;rbn);fread(a,sizeof(int),10,fp);fclose(fp);for(i=0;i10;i+)printf(%d,a E i);)程序的运行结果是。A)l,2,3,0,0,0,0,0,0,0,B)l,2,3,1,2,3,0,0,0,0,C)123,0,0,0,0,123,0,0,0,0,D)l,2,3,0,0,1,2,3,0,0,二、填空题(每空2 分,共 40分)请将每一个空的正确答案写在答题k【1 至 2 0 1 序号的横线上,答在试卷上不得分。(1)软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要
22、的是lie(2)在两种基本测试方法中,【2】测试的原则之一是保证所测模块中每个独立路径至少要执行一次。(3)线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的【3】存储结构。(4)对下列二叉树进行中序遍历的结果为【4】。在 E R 图中,矩形表示【5】。(6)执行以下程序时输入1234567,则输出结果是6 1#includemain()inta=I,b;scanf(%2d%2d,&a,&b);printf(%d%d n,a,b);)以下程序的功能是:输 出 a、b、c 三个变量中的最小值。请填空。#includemain()inta,b,c,tl,t
23、2;scanf(%d%d%d,&a,&b,&c);tl=ab?7 ;t2=ctl?8 ;printf(%dn,t2);)(8)以下程序的输出结果是9 1#includemain()intn=12345,d;while(n!=0)d=n%10;printf(n%dH,d);n/=10;)(9)有以下程序段,且变量已正确定义和赋值:for(s=1.0,k=l;k=n;k+)s=s+1.0/(k*(k+1);printf(s=%f n n,s);请填空,使下面程序段的功能与之完全相同。s=1.0;k=l;while(10)s=s+1.0/(k*(k+l);11;printf(us=%f n n*,s
24、);(1 0)以下程序的输出结果是121#includemain()inti;for(i=a;i f;i+,i+)printf(c”,i-a+A );printf(,nn);(11)以下程序的输出结果是【13,#include#includechar*fun(char*t)char*p=t;return(p+strlen(t)/2);)main()char*str=nabcdefghn;str=fun(str);puts(str);)(1 2)以下程序中函数f 的功能是在数组x 的 n 个数(假定n 个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填
25、空。#includevoid f(int x ,intn)int pO,pl,i,j,t,m;i=j=x 0;p0=pl=0;fbr(m=0;mi)i=x Em;p0=m;elseif(x m j)j=x m ;pl=m;)t=x pO;x pO=x n-1 ;x n-1=t;t=x p l;x p l=14;15=t;)main()inta 10,u;for(u=0;u10;u+)scanf(,%d&a u );f(a,10);for(u=0;u 10;u4-+)printf(%da u );printf(n nn);)(1 3)以下程序统计从终端输入的字符中大写字母的个数,num 0 中统
26、计字母A 的个数,num 1 中统计字母B 的个数,其他依次类推。用#号结束输入,请填空。#include#includemain()intnum 26=0,i;charc;whilc(16)!=#)if(isupper(c)num c-A +=1 7;for(i=0;i26;i+)printf(u%c:%dn,i+,A,num i );(14)执行以下程序的输出结果是【18】。#includemain()inti,n 4=1;fbr(i=l,i=3;i4-+)n Li=n i-1*2+l;printf(%d,n i);)(15)以下程序的输出结果是【191#include#defineM5#
27、defineNM+Mmain()intk;k=N*N*5;printf(d nn,k);)(16)函数min()的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空。#includestruct node intdata;struct node*next;);int min(struct node*first)/*指针 first 为链表头指针*/struct node*p;int m;p=first-next;m=p-data;p=p-next;fbr(;p!=NULL;p=2 0)if(p-datadata;returnm;)2007年 9 月笔试试卷参考答案及详解一、选择题(1
28、)镰D)【解析】软件是程序、数据与相关文档的集合,相对于计算机硬件而言,软件是逻辑产品而不是物理产品,是计算机的无形部分。(2)【答案】B)【解析】软件测试与软件调试是两个不同的概念:软件测试的目的是发现错误,而软件调试的目的是发现错误或导致程序失效的原因,并修改程序以修正错误,调试是测试之后的活动。【答案】C)【解析】封装是一种信息屏蔽技术,目的在于将对象的使用者和对象的设计者分开。用户只能见到对象封装界面上的信息,不必知道实现的细节。封装一方面通过数据抽象,把相关的信息结合在一起,另一方面也简化了接口。(4)【答案】A)【解析】当今主导的程序设计风格是“清晰第一,效率第二”的观点。结构化程
29、序设计思想提出之前,在程序设计中曾强调程序的效率,而实际应用中,人们更重视程序的可理解性。(5)【答案】A)【解析】程序执行的效率与很多因素有关,如数据的存储结构、程序所处理的数据量、程序所采用的算法等。顺序存储结构和链式存储结构在数据插入和删除操作上的效率就存在差别,其中链式存储结构的效率要高一些。(6)【答案】D)【解析】数据的逻辑结构与数据在计算机中的存储方式无关,它用来抽象地反映数据元素之间的逻辑关系,故 A)选项错误。存储结构分为顺序存储结构与链式存储结构,其中顺序存储结构是将逻辑上相邻的数据元素存储在物理上相邻的存储单元里,节点之间的关系由存储单元的相邻关系来决定,它主要用于存储线
30、性结构的数据,故 B)选项错误。数组的存储方式连续是指其在计算机中的存储方式,它可以用来处理非线性结构,故 C)选项错误。(7)【答案】C)【解析】冒泡排序的基本思想是对当前未排序的全部结点自上而下依次进行比较和调整,让键值较大的结点下沉,键值较小的结点往上冒。也就是说,每当两相邻结点比较后发现它们的排列与排序要求相反时,就将它们互换。对 n个结点的线性表采用冒泡排序,冒泡排序的外循环最多执行n-1遍。第一遍最多执行n-1次比较,第二遍最多执行n-2次比较,依次类推,第 n-1遍最多执行1次比较。因此,整个排序过程最多执行n(n-l)/2次比较。(8)【答案】A)【解析】在任意一棵二叉树中,若
31、终端结点(叶子)的个数为n l,则 阐 2 的结点数n 2=n l-l。本题中度为0 的结点即叶子结点,故总结点数=度为0 的结点数+度 为 1的结点数+度为2 的结点数=70+8 0+6 9=219。(9)【答案】B)【解析】数据库技术的根本目的是要解决数据的共享问题;数据库需要操作系统的支持;数据库管理系统(D at abas e M an ag e m e n t S y s t e m)简称DBM S,对数据库进行统的管理和控制,以保证数据库的安全性和完整性。它是数据库系统的核心软件。(1 0)【答案】A)【解析】在一个二维表中,水平方向的行称为元组,每一行为一个元组,元组中的每一个分
32、量不能再进行分割,故选项B)错误;对关系的描述称为关系模式,一个关系模式对应一个关系的结构,格式为:关系名(属性名1,属性名2,属性名n),故选项C)错误;一个关系就是一个二维表,故选项D)错误。(1 1)【答案】B)【解析】C 语言中,源程序文件的后缀为“.c ,经过编译生成后缀为“.o b j”的目标文件,再经过与C 语言提供的各种库函数连接,生成后缀为“.e x e”的可执行文件。故本题答案为B)(1 2)【答案】A)【解析】在 C 语言中,合法标识符的命名规则是:标识符可以由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。C 语言的标识符可以分为关键字、预定义标识符和用
33、户标识符。选 项 B)和 C)中的横线以及点都不合法,选 项 D)中的c a s e 为 C 语言关键字,故本题答案为A)。(1 3)【答案】B)【解析】本题考查的是各个进制数值常量的表示方法,八进制数据是以0开头的常量,其数字包括。7,选 项 A)错误。浮点数据的指数表示中,e的右侧必须为整数,选项C)错误。在选项D)中,1 0,0 0 0 显然错误的。故本题的答案为B)。(1 4)【答案】C)【解析】ma i n 是主函数的函数名,表示这是一个主函数。每一个C 源程序都必须有,且只能有一个主函数。程序要从ma i n函数开始执行,最后在ma i n函数中结束。本题选C)。(1 5)【答案】
34、C)【解析】本题考查了 s c a n f函数的用法,该函数的一般形式为“s c a n f(“格式控制字符串”,地址表列)”,其中的地址表列应当是存放输入数据变量的地址。在选项C)中,指针p就是变量c的地址。故本题答案为C)。(1 6)【答案】D)【解析】在A N S I标准中,l o n g、i n t和s ho r t分别占用4、2和2个字节。但实际上对于某些C编译系统,i n t和s hc m却都实际占用4个字节。所以说各种类型数据占用内存大小是由选择何种C编译系统决定的。故本题答案为D)。(1 7)【答案】A)【解析】赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,选项
35、C)和D)错误。%”运算符两侧都应当是整型数据,选 项B)错误。故本题答案为A)。(【答案】B)【解析】本题考查通过s c a n f函数输入数据时的格式控制问题。变量j的格式控制为“2 d”,即只接收输入数据的前两位,从第三位开始直到空格之间的输入都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项B)。(19)【答案】B)【解析】对于d o w hil e循环,程序会先执行一次循环体,再判断循环是否继续。本题先输出一次i的 值“0,”,再接着判断表达式i+的值,其值为0,所以循环结束。此时变量i的值经过自加已经变为1,程序再次输出i的 值“1”。故本题答案为B)。(20)【答案】B
36、)【解析】对于选项B)来说,若x的值小于0,则有两次调用s q r t()函数,这很明显不符合题意。通过分析可知,本题答案为B)。(21)【答案】B)【解析】当表达式E X P为非0值时条件成立,即执行语句i+;,当EXP等于0时执行语句j-;这就等同于条件表达式”(E X P!=0)?i+:j-;。故本题答案为B)。(22)【答案】C)【解析】本题考查变量的自加“+”和自减“”问题。当y的值为9、6或3时,if语句的条件成立,执行输出语句,输出表达式-y的值,y的自减要先于输出语句的执行,故输出结果为8 5 2。因此,本题答案为C)。(23)【答案】B)【解析】在本题中,选项B)实 际 是
37、先 计 算 关 系 表 达 式A 0 0 0 0 0 0 1 1,首先计算1A 2 的 值 为 0 0 0 0 0 0 1 1,再将其与3 进 行“与”运算,得到的结果为0 0 0 0 0 0 1 1,即十进制数3。故本题答案为D)。(49)【答案】C)【解析】f r e a d 函数中的参数b u f f e r 是一个指针,其值为f r e a d 函数读入数据后在内存中的存放地址。故本题答案为C)。(50)【答案】D)【解析】本题考查文件读写函数f r e a d 和 f w r i t e 的用法。f w r i t e 函数将数组a 的前5 个元素输出到文件f p 中两次,共 1 0
38、 个字节,再调用f r e a d 函数从文件f p 中读取这1 0 个字节的数据到 数 组 a 中,此 时 数 组 a 的 内 容 就 变 为 1 23.0,0,1,2,3,0,0 ,最后的输出结果为“1 23,0,0,1,2,3,0,0,”。故本题答案为 D)。二、填空题(1)【答案】【1】无歧义性【解析】软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。包括正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性等。其中最重要的特性是无歧义性,即需求规格说明书应该是精确的、无二义的,需求说明书越精确,则以后出现错误、混淆、反复的可能性越小。(2)【答
39、案】【2】白盒【解析】白盒测试的基本原则是:保证所测模块中每一独立路径至少执行一次;保证所测模块所有判断的每一分支至少执行一次;保证所测模块每一循环都在边界条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性。按照白盒测试的基本原则,“白盒”法是穷举路径测试。(3)【答案】【案 链式【解析】数据结构包括数据的逻辑结构和存储(物理)结构,其中逻辑结构分为线性结构和非线性结构,存储结构包括顺序结构和链式结构。在循环队列中,队尾的指针指向对首元素,是队列的链式存储结构。(4)【答案】4 A C B D F E H G P【解析】二叉树中序遍历的含义是:首先按中序遍历根结点的左子树,然后访问根
40、结点,最后按中序遍历根结点的右子树,中序遍历二叉树的过程是一个递归的过程。根据题目中给出的二叉树的结构可知中序遍历的结果是:A C B D F E H G P o(5)【答案】【5】实体【解析】在 E-R 图中用矩形表示实体,椭圆形表示属性,菱形表示联系。(6)【答案】6 1 2 3 4【解析】本题s c a n f 函数的输出格式说明中,变 量 a 和 b的格式控制都为2 d,即 a 和 b者|5只获取两个字符的输入。输入的前4个字符被分别赋给了 a 和 b,其值分别为1 2 和 3 4。(7)【答案】7 a:b 8 c:t l【解析】本题考查的是条件表达式问题。先判断a 是否小于b,若小于
41、则t l=a,否则t l=b,这样t l 就是a 和 b中较小的值,同理再比较t l 同 c的大小,小的存入t 2 中,t 2 就是a、b、c 中的最小值。(8 )【答案】9 5 4 3 2 1【解析】将一个正整数时1 0 进行取模运算的结果就是该整数的个位数字,被 1 0 整除的结果则是除去个位的其余数位。本题通过一个wh i l e 循环反复取n的个位并将其输出,依次输出为5 4 3 2 1。(9)【答案】1 0 k n e x t【解析】本题考查的是对链表节点的访问问题。利用结构指针p 依次指向每个节点,继而访问各个节点的数据,最终找出其中最小的数据。2008年 4 月全国计算机等级考试
42、二级笔试试卷公共基础知识和C 语言程序设计(考试时间90分钟,满分100分)一、选择题(1)(10)、(21)(40)每题2分,(11)(20)每 题1分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)程序流程图中带有箭头的线段表示的是。A)图元关系B)数据流C)控制流D)调用关系(2)结构化程序设计的基本原则不包括。A)多态性B)臼顶向下C)模块化D)逐步求精(3)软件设计中模块划分应遵循的准则是。A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合(4)在软件开发中,需求分析阶段产生的主要文
43、档是。A)可行性分析报告B)软件需求规格说明书C)概要设计说明书D)集成测试计划(5)算法的有穷性是指。A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-l)/2的排序方法是。A)快速排序B)冒泡排序C)直接插入排序D)堆排序(7)下列关于栈的叙述正确的是。A)栈 按“先进先出”组织数据B)栈 按“先进后出”组织数据C)只能在栈底插入数据D)不能删除数据(8)在数据库设计中,将E-R图转换成关系数据模型的过程属于。A)需求分析阶段B)概念设计阶段C)逻辑设计阶段D
44、)物理设计阶段有三个关系R、S和T如下:RBCDaOklblnlSBCDBh2aOkln2xlTBCDaOkl由关系R 和 S 通过运算得到关系T,则所使用的运算为。A)并 B)自然连接C)笛卡尔积D)交(10)设有表示学生选课的三张表,学 生 S(学号,姓名,性别,年龄,身份证号),课 程 C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为。A)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩(11)以下叙述中正确的是。A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以
45、写在多行上D)用 C 语言编写的程序只能放在一个程序文件中(12)以下选项中不合法的标识符是。A)printB)FORC)&aD)_00(13)以下选项中不属于字符常量的是。A)C B),C C)xC C D)0 7 2(14)设变量已正确定义并赋值,以下正确的表达式是。A)x=y*5=x+zB)int(15 8%5)C)x=y+z+5,+yD)x=25%5 0(15)以下定义语句中正确的是。A)inta=b=O;B)charA=65+L b=b ;C)float a=l,*b=&a,*c=&b;D)doublea=0 0;b=l 1 ;(16)有以下程序段:charch;intk;ch=a
46、;k=12;printf(u%c,%d,,ch,ch,k);printf(nk=%d n,k);已知字符a 的 ASCII码值为9 7,则执行上述程序段后输出结果是。A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零或不定值C)a,97,12k=12D)a,97,k=12(17)已知字母A 的 ASCII码值为6 5,若变量kk为 char型,以下不能正确判断出kk中的值为大写字母的表达式是。A)kk=A&kk=A llkk=a&(kk+32)=Z D)isalpha(kk)&(kk=2&c=2&c=2&cb)a=b;c=a;if(c!=a)c=b;pri
47、ntf(d,%d,%d nn,a,b,c);其输出结果是。A)程序段有语法错B)3,5,3C)3,5,5D)3,5,7(20)有以下程序:#includemain()intx=l,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;break;)case 2:a+;b+;break;case 3:a+;b+;)printf(na=%d,b=%dn,a,b);)程序的运行结果是。A)a=l,b=0B)a=2,b=2C)a=l,b=lD)a=2,b=l(21)有以下程序:#includemain()intx=8;for(;x
48、0;x)if(x%3)printf(%d,x);continue;printf(d,%-x);程序的运行结果是。A)7,4,2,B)8,7,5,2,C)9,7,6,4,D)8,5,4,2,(22)以下不构成无限循环的语句或语句组是。A)n=0;do+n;whiIe(n=0);B)n=0;while(l)n+4-;C)n=10;while(n);n;D)fdr(n=O,i=l;i+)n+=i;(23)有以下程序:#includemain()inta =L 2,3,4,y,*p=&a 3;-P;y=*p;printf(”y=%dn,y);)程序的运行结果是。A)y=OB)y=lC)y=2D)y=3
49、(24)以下错误的定义语句是。A)intx =0,1,1,2,3);B)intx 4 3=1,2,3,1,2,3,1,2,3,1,2,3;C)intx 4 =1,2,3,1,2,3,1,2,3,1,2,3);D)intx 3=1,2,3,4);(25)设有如下程序段:chars 20=Beijing,*p;p=s;则执行p=s;语句后,以下叙述正确的是。A)可以用*p 表示s 0B)s数组中元素的个数和p 所指字符串长度相等C)s和 p 都是指针变量D)数组s 中的内容和指针变量p 中的内容相同(26)若有定义:inta 2 3 以下选项中对a 数组元素正确引用的是。A)a 2!1 B)a 2
50、 3C)a 0 3 D)a 12!1(27)有定义语句:chars 1 0 若要从终端给s 输入5 个字符,错误的输入语句是。A)gets(&s 0);B)scanf(%s,s+1);C)gets(s);D)scanf(%s,s 1 ):(28)以下叙述中错误的是。A)在程序中凡是以“#”开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#defineMAX是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的(29)以下结构体类型说明和变量定义中正确的是。A)typedef structintn;chare;REC;RECtl,t2;B)struc