您的当前位置:首页正文

2014年3月份全国计算机等级考试二级C语言选择题大全

2020-06-29 来源:欧得旅游网
2014年3月份全国计算机等级考试二级C语言选择题大全

选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的。(1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为A)PAD图B)N-S图C)结构图D)数据流图D)程序易读性(2)结构化程序设计主要强调的是A)程序的规模B)程序的效率C)程序设计语言的先进性(3)为了使模块尽可能独立,要求A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(4)需求分析阶段的任务是确定A)软件开发方法(5)算法的有穷性是指A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是A)快速排序A)e3,e1,e4,e2C)e3,e4,e1,e2A)属性RBabSBCDC01Dk1n1B)关系B)冒泡排序C)直接插入排序D)堆排序(7)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是B)e2,e4,e3,e1D)任意顺序C)键D)域B)软件开发工具C)软件开发费用D)软件系统功能(8)将E-R图转换到关系模式时,实体与联系都可以表示成(9)有三个关系R、S和T如下:1fanTBa302h2k1x1C0Dk1由关系R和S通过运算得到关系T,则所使用的运算为A)并B)自然连接C)笛卡尔积D)交(10)下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C)关系中的每一列称为元组,一个元组就是一个字段D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字(11)以下叙述中正确的是A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要有输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出(12)下列可用于C语言用户标识符的一组是A)void,define,WORDDO,sizeof(13)以下选项中可作为C语言合法常量的是A)-80B)-080C)-8e1.0D)-80.0e(14)若有语句:char*line[5];,以下叙述中正确的是A)定义line是一个数组,每个数组元素是一个基类型为char为指针变量B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C)定义line是一个指针数组,语句中的*号称为间址运算符D)定义line是一个指向字符型函数的指针(15)以下定义语句中正确的是A)intD)doublea=b=0;a=0B)charA=65+1,b=′b′;C)floata=1,*b=&a,*c=&b;0;b=1.1;B)a3_3,_123,CarC)For,-abc,IFCaseD)2a,(16)有以下程序段2charch;intk;ch=′a′;k=12;printf(\"%c,%d,\printf(\"k=%d\\n\已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)有以下程序main(){inti,s=1;for(i=1;i<50;i++)if(!(i%5)&&!(i%3))s+=i;printf(\"%d\\n\程序的输出结果是A)409B)277C)1(18)当变量c的值不为2、4、6时,值也为\"真\"的表达式是A)(c==2)||(c==4)||(c==6)B)(c>=2&&c<=6)||(c!=3)||(c!=5)C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&&c<=6)&&(c%2!=1)(19)若变量已正确定义,有以下程序段inta=3,b=5,c=7;if(a>b)a=b;c=a;if(c!=a)c=b;printf(\"%d,%d,%d\\n\其输出结果是A)程序段有语法错B)3,5,3C)3,5,5(20)有以下程序#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:3D)3,5,7D)91switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(\"a=%d,b=%d\\n\}程序的运行结果是A)a=1,b=0B)a=2,b=2C)a=1,b=1(21)下列程序的输出结果是#include\"stdio.h\"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf(\"a=%d,b=%d\}A)a=4,b=4B)a=4,b=5C)a=5,b=4D)a=5,b=5(22)已知#intt=0;while(t=1){...}则以下叙述正确的是A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对(23)下面程序的输出结果是main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf(\"%d\\n\4D)a=2,b=1A)3B)4C)1D)2(24)以下错误的定义语句是A)intC)intx[][3]={{0},{1},{1,2,3}};B)intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};D)intx[][3]={1,2,3,4};x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};(25)有以下程序voidss(char*s,chart){{while(*s)if(*s==t)*s=t-′a′+′A′;s++;}}main(){charstr1[100]=\"abcddfefdbd\ss(str1,c);printf(\"%s\\n\程序运行后的输出结果是A)ABCDDEFEDBD(26)有如下程序main(){charch[2][5]={\"6937\inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>′\\0′;j+=2)s=10*s+p[i][j]-′0′;printf(\"%d\\n\该程序的输出结果是A)69825B)63825C)6385D)693825C)gets(s);D)scanf(\"%s\B)预处理命令行的最后不能以D)C程序对预处理命(27)有定义语句:charA)gets(&s[0]);s[10];,若要从终端给s输入5个字符,错误的输入语句是B)scanf(\"%s\B)abcDDfefDbDC)abcAAfefAbAD)Abcddfefdbd(28)以下叙述中错误的是A)在程序中凡是以\"#\"开始的语句行都是预处理命令行分号表示结束C)#defineMAX令行的处理是在程序执行的过程中进行的(29)设有以下说明语句typedefstruct{intn;是合法的宏定义命令行5charch[8];}PER;则下面叙述中正确的是A)PER是结构体变量名D)struct是结构体类型名(30)以下叙述中错误的是A)gets函数用于从终端读入字符串C)fputs函数用于把字符串输出到文件件(31)以下能正确定义一维数组的选项是A)inta[5]={0,1,2,3,4,5};C′};D)inta[5]=\"0123\";(32)有以下程序#includemain(){charp[]={′a′,′b′,′c′},q[10]={′a′,′b′,′c′};printf(\"%d%d\\n\以下叙述中正确的是A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B)由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3C)由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3D)由于p和q数组中都没有字符串结束符,故长度都不能确定(33)有以下程序#include#includevoid{char*s[],intintn)i,j;*t;B)chara[]={′0′,′1′,′2′,′3′,′4′,′5′,′\\0′};C)chara={′A′,′B′,′B)getchar函数用于从磁盘文件读入字符D)fwrite函数用于以二进制形式输出数据到文B)PER是结构体类型名C)typedefstruct是结构体类型fun(charfor(i=0;istrlen(s[j]))}main(){char*ss[]={\"bcc\printf(\"%s,%s\\n\fun(ss,5);{t=s[i];s[i]:s[j];s[j]=t;}6}程序的运行结果是A)xy,aaaacc(34)有以下程序#includeintf(int{inty;return(3);*x-f(x-2);y;x)B)aaaacc,xyC)bcc,aabccD)aabcc,bccif(x==0||x==1)y=x}main(){}intz;z=f(3);returnprintf(\"%d\\n\程序的运行结果是A)0B)9C)6D)8(35)下面程序段的运行结果是charstr[]=\"ABC\printf(\"%d\\n\A)67structlink{intdata;structlink*next;}a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:B)0C)字符′C′的地址D)字符′C′(36)若有以下定义:指针p指向变量a,q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句组是:A)a.next=c;c.next=b;q->next=p->next;是#includeB)p.next=q;q.next=p.next;C)p->next=&c;D)(*p).next=q;(*q).next=&b;(37)对于下述程序,在方式串分别采用\"wt\"和\"wb\"运行时,两次生成的文件TEST的长度分别7voidmain(){FILE*fp=fopen(\"TEST\fputc(′A′,fp);fputc(′\\n′,fp);fputc(′B′,fp);fputc(′\\n′,fp);fputc(′C′,fp);fclose(fp);}A)7字节、7字节B)7字节、5字节C)5字节、7字节D)5字节、5字节(38)变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是A)a^binti,j,x=0;staticinta[8][8];for(i=0;i<3;i++)for(j=0;j<3;j++)a[i][j]=2*i+j;for(i=0;i<8;i++)x+=a[i][j];printf(\"%d\A)9B)不确定值C)0D)18B)a|bC)a&bD)a<<4(39)下面的程序段运行后,输出结果是(40)下列程序执行后的输出结果是voidfunc(int*a,intb[]){{b[0]=*a+6;}inta,b[5];main()a=0;b[0]=3;func(&a,b);printf(\"%d\\n\A)6B)7C)8D)9选择题(1)B(2)D【解析】N-S图是由Nassi和Shneiderman提出的一种符合程序化结构设计原则的【解析】结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化及图形描述工具。它的提出是为了避免流程图在描述程序逻辑时的随意性上灵活性。8限制使用goto语句,总的来说可使程序结构良好、易读、易理解、易维护。(3)B【解析】模块的独立程度可以由两个定性标准度量:耦合性和内聚性。耦合性是衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚性是衡量一个模块内部各个元素彼此结合的紧密程度。一般来说,要求模块之间的耦合尽可能地低,而内聚性尽可能地高。(4)D【解析】需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。选项A)软件开发方法是在总体设计阶段需完成的任务;选项B)软件开发工具是在实现阶段需完成的任务;选项C)软件开发费用是在可行性研究阶段需完成的任务。(5)A【解析】算法具有5个特性:①有穷性:一个算法必须(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的;②确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生歧义;③可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现;④输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合;⑤输出:一个算法有一个或多个输出。(6)D(7)B(8)B【解析】在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都为【解析】由栈\"后进先出\"的特点可知:A)中e1不可能比e2先出,C)中e1不可能比e2【解析】关系数据库逻辑设计的主要工作是将E-R图转换成指定RDBMS中的关n(n-1)/2,堆排序需要的比较次数为nlog2n。先出,D)中栈是先进后出的,所以不可能是任意顺序。B)中出栈过程如下图所示:系模式。首先,从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性,实体集也可以转换成关系。(9)D【解析】在关系运算中,交的定义如下:设R1和R2为参加运算的两个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则R1R2为交运算,结果仍为度等于n的关系,其中,交运算的结果既属于R1,又属于R2。(10)D【解析】数据处理是指将数据转换成信息的过程,故选项A)叙述错误;数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项B)叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项C)叙述错误。11)C(12)B【解析】算法具有的5个特性是:有穷性;确定性;可行性;有0个或多个输入;有一个或多【解析】C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符个输出。所以说,用C程序实现的算法可以没有输入但必须要有输出。必须为字母或下划线,排除选项C)和D);C语言中还规定标识符不能为C语言的关键字,而选项A)中void为关键字,故排除选项A)。(13)A(14)A【解析】选项B)项中,以0开头表示是一个八进制数,而八进制数的取值范围是0~7,所【解析】C语言中[]比*优先级高,因此line先与[5]结合,形成line[5]形式,这是数组形以-080是不合法的;选项C)和D)中,e后面的指数必须是整数,所以也不合法。9式,它有5个元素,然后再与line前面的\"*\"结合,表示此数组是一个指针数组,每个数组元素都是一个基类型为char的指针变量。(15)B【解析】本题考查变量的定义方法。如果要一次进行多个变量的定义,则在它们之间要用逗号隔开,因此选项A)和D)错误。在选项C)中,变量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量b,故选项C)错误。(16)D【解析】输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。(17)D【解析】本题是计算50之内的自然数相加之和,题中if语句括号中的条件表达式!(i%5)&&!(i%3)表明只有能同时被5和3整除的数才符合相加的条件,1~49之间满足这个条件的只有,15、30和45,因为s的初始值为1,所以s=1+15+30+45=91。(18)B【解析】满足表达式(c>=2&&c<=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,选项B中的表达式都为\"真\"。(19)B(20)D【解析】两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c的【解析】本题考查switch语句,首先,x=1符合条件case1,执行switch(y)语句,y=0值等于3,变量b的值没能变化,程序输出的结果为3,5,3。所以正确答案为B)。符合case0语句,执行a++并跳出switch(y)语句,此时a=1。因为case1语句后面没有break语句,所以向后执行case2语句,执行a++,b++,然后跳出switch(x),得a=2,b=1。(21)B【解析】continue语句的作用是跳过本次循环体中余下尚未执行的语句,接着再一次进行循环条件的判定。当能被2整除时,a就会增1,之后执行continue语句,直接执行到for循环体的结尾,进行i++,判断循环条件。(22)B(23)A(24)C(25)B【解析】t=1是将t赋值为1,所以循环控制表达式的值为1。判断t是否等于1时,【解析】在C语言中,数组元素是从0开始的。指针变量p指向数组的首地址,(p+2)【解析】本题考查的是二维数组的定义和初始化方法。C语言中,在定义并初始化二【解析】在内存中,字符数据以ASCII码存储,它的存储形式与整数的存储形式类似。C应用t==1,注意\"=\"与\"==\"的用法。就会指向数组中的第3个元素。题目中要求输出的是元素的值。维数组时,可以省略数组第一维的长度,但是不能省略第二维的长度。故选项C)错误。语言中,字符型数据和整型数据之间可以通用,也可以对字符型数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。(26)C【解析】该题稍微难一点。主要要搞清楚以下几点:①定义了一个指针数组char*p[2]后,程序中第一个循环for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p[1]元素指向二维数组ch的第二行字符串,这样,就使指针数组p和二维数组ch建立起了一种对应关系,以后对二维数组ch的某10个元素的引用就有两种等价的形式:ch[i][j]或p[i][j]。②对二维数组ch的初始化,使其第一行ch[0]中存入了字符串\"6937\ch[1]中的内容为字符串\"8254\"。③程序中第二个循环中的循环体s=s*10+p[i][j]-'0';的功能是这样的,每执行一次,将s中的值乘以10(也即,将s中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前p[i][j]中的字符量转换为相应的数字,然后把这个数字加到s的个位上。④注意到内层循环的循环条件p[i][j]>'\\0'是指p[i][j]中的字符只要不是字符串结束标志'\\0'就继续循环,语句j+=2;是使下标j每次增加2,也即一个隔一个地从p[i]所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从p[0]所指向的字符串\"6937\"中一个隔一个地取出字符,分别是'6'和'3',然后从p[1]所指向的字符串\"8254\"中一个隔一个地取出字符,分别是'8'和'5',同时经过转换和相加运算后,结果s中的值应该是6385。(27)D表达式。(28)D(29)B(30)B(31)B(32)A(33)A【解析】C语言中的预处理命令以符号#开头,这些命令是在程序编译之前进行处理【解析】本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指【解析】getchar函数的作用是从终端读入一个字符。【解析】选项A)中,定义的初值个数大于数组的长度;选项C)中,数组名后少了中括号;【解析】在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出【解析】函数fun(char*s[],intn)的功能是对字符串数组的元素按照字符串的长度从的,选项D)的描述错误。定的一个结构体类型,此时,也可以用PER来定义变量。【解析】在格式输入中,要求给出的是变量的地址,而D)答案中给出的s[1]是一个值的选项D)中,整型数组不能赋予字符串。数组p和q都有3个字符,所以长度均为3。小到大排序。在主函数中执行fun(ss,5)语句后,*ss[]={\"xy\\"bcc\\"bbcc\\"aabcc\\"aaaacc\xy,aaaacc。(34)C(35)B(36)D(37)B(38)A(39)C【解析】函数intf(intx)是一个递归函数调用,当x的值等于0或1时,函数值等于3,【解析】考查指向字符串的指针变量。在该题中,指针变量p指向的应该是该字符串【解析】本题考查链表的数据结构,必须利用指针变量才能实现,即一个结点中应包含一【解析】以\"wt\"方式写入的是字符文件,转义字符'\\n'被看作两个字符来处理。而\"wb\"【解析】本题考查的是位运算的知识,对于任何二进制数,和1进行异或运算会让其取【解析】本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方法。通其他情况下y=x2-f(x-2),所以在主函数中执行语句z=f(3)时,y=3*3-f(3-2)=9-f(1)=9-3=6。中的首地址,p+3指向的是字符串结束标志'\\0'的地址,因而*(p+3)的值为0。个指针变量,用它存放下一结点的地址。方式写入的是二进制文件,转义字符'\\n'是一个字符。反,而和0进行异或运算不会产生任何变化。11过分析可知,程序中的双重循环定义了一个如下的二维数组:024135246由于数组的下标是从0开始的,所以二维数组元素a[i][j]表示的是二维数组a的第i+1行、第j+1列对应位置的元素。(40)A【解析】函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针型。它的作用是将一个变量的地址传递到另一个函数中。当数组名作参数时,如果形参数组中的各元素的值发生变化,实参数组元素的值也将随之发生变化。选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的。(1)程序流程图中带有箭头的线段表示的是A)图元关系A)抽象A)数据耦合B)数据流B)模块化C)控制流C)自底向上B)标记耦合C)异构耦合D)调用关系D)信息隐蔽D)公共耦合(2)下面不属于软件设计原则的是(3)下列选项中,不属于模块间耦合的是(4)下列叙述中,不属于软件需求规格说明书的作用的是A)便于用户、开发人员进行理解和交流基础和依据C)作为确认测试和验收的依据(5)算法的时间复杂度是指A)执行算法程序所需要的时间运算次数D)算法程序中的指令条数(6)已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是A)堆排序则出栈序列可能是A)ABCEDB)DCBEAC)DBCEAD)CDABEC)内模式设计和物理设计D)(8)数据库设计包括两个方面的设计内容,它们是A)概念设计和逻辑设计结构特性设计和行为特性设计(9)关系表中的每一横行称为一个B)模式设计和内模式设计B)直接插入排序C)快速排序D)B)和C)(7)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,B)算法程序的长度C)算法执行过程中所需要的基本D)便于开发人员进行需求分析B)反映出用户问题的结构,可以作为软件开发工作的12A)元组B)字段C)属性D)码(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为A)课号,成绩成绩(11)以下不正确的叙述是A)在C程序中,逗号运算符的优先级最低变量C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值(12)请选出可用作C语言用户标识符的是A)void,define,WORDD)2a,Do,Sizeof(13)以下选项中,不能作为合法常量的是A)1.234e04A)%D)**(15)若变量均已正确定义并赋值,以下合法的C语言赋值语句是A)x=y==5;D)x=5=4+1;(16)有以下程序段charch;intk;printf(\"k=%d\\n\B)输出项与格式描述符个数不符,ch=′a′;k=12;printf(\"%c,%d,\已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值输出为零值或不定值C)a,97,12k=12D)a,97,k=12B)x=n%2.5;C)x+n=i;B)1.234e0.4B)\\C)1.234e+4D)1.234e0C)%和\\(14)在C语言中,运算对象必须是整型数的运算符是B)a3_b3,_123,IFC)FOR,--abc,CaseB)在C程序中,APH和aph是两个不同的B)学号,成绩C)学号,课号D)学号,姓名,(17)已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是A)kk>=′A′&&kk<=′Z′B)!(kk>=′A′||kk<=′Z′)C)(kk+32)>=′a′13&&(kk+32)<=′Z′D)isalpha(kk)&&(kk<91)B)(c>=2&&D)(c>=2&&c<=6)&&(c%2!=1)C)(exp==1)D)(exp!=1)c<=6)||(c!=3)||(c!=5)(18)当变量c的值不为2、4、6时,值也为\"真\"的表达式是A)(c==2)||(c==4)||(c==6)C)(c>=2&&c<=6)&&!(c%2)A)(exp==0)(19)若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是B)(exp!=0)(20)以下不正确的定义语句是A)doublex[5]={2.0,4.0,6.0,8.0,10.0};4′,′5′};main(){inta[3][3],*p,i;p=&a[0][0];for(i=1;i<9;i++)p[i]=i+1;printf(\"%d\\n\A)3B)6C)9D)随机数D)charc2[]={′\\x10′,′xa′,′\\x8′};(21)下列程序执行后的输出结果是B)inty[5]={0,1,3,5,7,9};C)charc1[]={′1′,′2′,′3′,′(22)设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf(\"%d\则A)运行程序段后输出0D)程序段执行无限次(23)(23)下面程序段的运行结果是char*s=\"abcde\";s+=2;printf(\"%d\A)cdeB)字符′c′C)字符′c′的地址D)无确定的输出结果B)运行程序段后输出1C)程序段中的控制表达式是非法的(24)阅读下列程序,则执行后的结果为#include\"stdio.h\"main(){intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};A)3e,6B)62,5C)56,5D)3E,6printf(\"%x,%x\\n\14(25)下面判断正确的是A)char*a=\"china\";等价于char*a;*a=\"china\";charstr[]={\"china\C)char*s=\"china\";等价于char*s;s=\"china\";于charc[4]=d[4]=\"abc\";(26)若有定义:intA)a[2][!1]a[2][3];,以下选项中对a数组元素正确引用的是C)a[0][3]D)a[1>2][!1]C)gets(s);D)scanf(\"%s\s[10];,若要从终端给s输入5个字符,错误的输入语句是B)scanf(\"%s\D)charc[4]=\"abc\B)charstr[5]={\"china\B)a[2][3](27)有定义语句:charA)gets(&s[0]);(28)有以下程序#include#define#define#definemain(){inti1,i2;i1=f(2);i2=f(1+1);NMf(x)5N+1(x*M)printf(\"%d%d\\n\}程序的运行结果是A)12uniondt{inta;charb;doublec;}data;以下叙述中错误的是A)data的每个成员起始地址都相同相等C)程序段:data.a=5;printf(\"%f\\n\5.000000数的实参(30)有以下程序#includemain()D)data可以作为函B)变量data所占内存字节数与成员c所占字节数12B)117C)1111D)127(29)若有以下说明和定义15{FILE*fp;intk,n,a[6]={1,2,3,4,5,6};fp=fopen(\"d2.dat\fprintf(fp,\"%d%d%d\\n\fprintf(fp,\"%d%d%d\\n\fclose(fp);fp=fopen(\"d2.dat\fscanf(fp,\"%d%d\fclose(fp);}程序运行后的输出结果是A)12B)14C)1234D)123456(31)若已定义inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中则对a数组元素不正确的引用是A)a[p-a]#includevoid{inti=n1;}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,4,9);fun(a,0,9);printf(\"\\n\");fun(a,0,3);}程序的运行结果是A)0987654321B)4321098765C)5678901234D)0987651234B)*(&a[i])C)p[i]D)a[10](32)有以下程序*s,intn1,intn2)fun(inti,j,t;j=n2;{t=s[i];s[i]=s[j];s[j]=t;i++;j--;}while(i#include#include16intfun(char*str){inti,j=0;for(i=0;str[i]!=′\\0′;i++)if(str[i]!=′′)str[j++]=str[i];str[j]=′\\0′;}main(){charstr[81];intn;printf(\"Inputastring:\");gets(str);puts(str);fun(str);printf(\"%s\\n\}A)asdafaaz67B)asdafaaz67C)asdD)z67(34)有以下程序intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf(\"%d\x=fun(x);printf(\"%d\\n\}执行程序时,给变量x输入10,程序的输出结果是A)55B)54C)65D)45(35)下面程序段中,输出*的个数是char*s=\"\a\\018bc\";for(;*s!='\\0';s++)printf(\"*\");A)9B)5C)6D)7(36)C语言结构体类型变量在程序运行期间A)TC环境在内存中仅仅开辟一个存放结构体变量地址的单元17B)所有的成员一直驻留在内存中C)只有最开始的成员驻留在内存中D)部分成员驻留在内存中B)一个文件指针,指向要读的文件(37)已知函数的调用形式为fread(buf,size,count,fp),参数buf的含义是A)一个整型变量,代表要读入的数据项总数C)一个指针,指向要读入数据的存放地址(38)设有以下语句charx=3,y=6,z;z=x^y<<2;则z的二进制值是A)00010100B)00011011C)00011100D)00011000C)auto和staticD)static和(39)在C语言中,只有在使用时才占用内存单元的变量,其存储类型是A)auto和registerregister(40)设有定义语句int形参C)f是指向int类型一维数组的指针变量类型的地址选择题(1)C【解析】程序流程图是人们对解决问题的方法、思路或算法的一种图形方式的描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容;流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流;带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。(2)C【解析】软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念,它们具有抽象、模块化、信息隐蔽和数据独立性。自底向上是集成测试中增量测试的一种。(3)C【解析】模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从强到弱分别是:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合和非直接耦合,没有异构耦合这种方式。(4)D【解析】软件需求规格说明书(SRS,SoftwareRequirementSpecification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它具有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为D)f是函数名,该函数的返回值是基类型为int(*f)(int);,则以下叙述正确的是B)f是指向函数的指针变量,该函数具有一个int类型的A)f是基类型为int的指针变量B)extern和registerD)一个存储区,存放要读的数据项18确认测试和验收的依据。(5)C【解析】算法的复杂度主要包括算法的时间复杂度和空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算的次数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。(6)B(7)B(8)A(9)A(10)C的组合。(11)D【解析】在C语言所有的运算符中,逗号运算符的优先级最低。C语言中区分大小写,所以APH和aph是两个不同的变量。赋值表达式a=b表示将b的值付给a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。(12)B【解析】C语言规定用户标识符由字母、数字和下划线组成,且第一个字符必须是字母或下划线,可见选项C),D)是错误的;此外,C语言不允许用户将关键字作为标识符,而选项A)中的void正是C语言的关键字。(13)B(14)A(15)A(16)D【解析】C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,【解析】在C语言中,\"%\"运算符两侧的运算数必须是整型。【解析】赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,选项C)【解析】输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示而选项B)中,e(E)后面的指数是小数,所以不合法。【解析】堆排序的比较次数为nlog2n;直接插入排序的比较次数为n(n-1)/2;快速排序【解析】栈操作原则上\"后进先出\A、B、C、D,则表明这4【解析】数据库设计包括数据库概念设计和数据库逻辑设计两个方面的内容。【解析】关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为一个属性,对【解析】\"选课SC\"表是\"学生S\"表和\"课程C\"表的映射表,主键是两个表主键的比较次数为nlog2n。当数据表A中每个元素个元素中D是最后进栈,B、C处于中间,A最早进栈,所以出栈时一定是先出D,再出C,最后出A。应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。和D)错误。\"%\"运算符两侧都应当是整型数据,选项B)错误。将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。(17)B【解析】C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在'A'和'Z'之间就可以了,选项A)和C)符合要求。函数isalpha用来确定一个字符是否为字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。(18)B【解析】满足表达式(c>=2&&c<=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,表达式B)都为\"真\"。19(19)B【解析】条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3其求解顺序是:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值,注意++、--的用法。(20)B(21)B(22)B(23)C(24)A(25)C(26)Da[0][0]。(27)D表达式。(29)D【解析】在格式输入中,要求给出的是变易的地址,而D)答案中给出的s[1]是一个值的(28)B【解析】根据宏替换的替换规则,我们可【解析】在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于【解析】本题中,a[1][2]是二维数组中的第6个元素,对应for循环中i的值为【解析】本题中,\"!\"表示逻辑非运算符,\"!=\"表示不等于运算符,逻辑非运算符比不等于【解析】对于字符串指针,其保留的是整个串的首地址,即第一个字符的起始地址;当该【解析】数组c[][4]表示一个4行4列数组,c[2][2]表示第3行第3列上的元素【解析】选项A)char*a;*a=\"china\"应改为a=china;,选项B)应该是charstr[6];D)0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。5,p[5]=5+1。运算符的优先级高。指针做算术运算时,就是该指针根据其类型向后移动相应的存储空间。62,*(*(c+1)+1))表示第2行第2列上的元素6,通过十六进制输出为3e,6。项表述方法有错误。【解析】C语言中数组下标是从0开始的,所以二维数组a[2][3]的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示数组元素知,f(2)=2*N+1=2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。【解析】选项A),共用体的每个成员的起始地址都相同;选项B),共用体变量所占的内存长度等于最长的成员的长度;选项C)因为每个成员的起始地址相同,所以整型数5以浮点型输出时为5.000000;选项D)C语言规定,不能把共用体变量作为函数的参数。(30)D【解析】将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。(31)D(32)C【解析】通常,引用一个数组元素可以用下标法,如a[p-a]形式,或指针法,如*(&a[i])的【解析】函数fun(int*s,intn1,intn2)的功能是对数组s中的元素进行首尾互相调换。形式。本题中a[9]=9,a[10]显然超出数组范围,注意,数组的下标是从0开始的。所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。(33)A【解析】本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用\"留下\"字符的算法,20以前的题目亦是如此。用str[i]从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在if()的单引号之间有一个空格),则将其保存str[j]中。注意j的下标变化、初值及最后加串结束符'\\0'。(34)A(35)C【解析】本程序考察的是函数的递归调用,在调用一个函数的过程中又出现直接或间【解析】本题中,格式符0表示的是八进制无符号形式输出整型数(不带前导0),字符常接地调用该函数本身,称为函数的递归调用,执行结果为1+2+3+4+5+6+7+8+9+10=55。量在内存中占一个字节,存放的是ACSII码代码值。C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ACSII字符集中该字符的序号,即&*s中有几个字符就输出几个*。(36)B(37)C(38)B【解析】结构体类型的变量在程序运行期间要作为一个整体占用连续的内存单元。【解析】这是一道考查fread函数的题。buf是一个指针,fread是读入数据的存放地【解析】本题考查两个位运算符。址;fwrite是输出数据的地址(以上指的是起始地址)。按位异或运算符\"^\"是双目运算符,其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异或时,结果为1。左移运算符\"<<\"是双目运算符,其功能把\"<<\"左边的运算数的各二进位全部左移若干位,由\"<<\"右边的数指定移动的位数,高位丢弃,低位补0,并且\"<<\"运算符的优先级于\"^\"。(39)A(40)B选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的。(1)软件是指A)程序B)程序和文档C)算法加数据结构D)程序、数据与相关文档的完整集合(2)检查软件产品是否符合需求定义的过程称为A)确认测试A)分类性B)集成测试B)多态性C)验证测试C)继承性D)验收测试D)封装性C)程序越短越好D)程序结(3)以下不属于对象的基本特点的是(4)在设计程序时,应采纳的原则之一是A)不限制goto语句的使用构应有助于读者理解(5)下列叙述中正确的是A)程序执行的效率与数据的存储结构密切相关制结构C)程序执行的效率只取决于所处理的数据量D)以上三种说法都不对(6)数据结构中,B)程序执行的效率只取决于程序的控B)减少或取消注解行【解析】在C语言中只有自动变量和寄存器变量在使用时才占用内存单元。【解析】本题考查的是指向函数的指针。语句int(*f)(int);是对一个函数的声明,其中f是指向该函数的指针,该函数有一个整型的参数,函数返回值类型为整型。21与所使用的计算机无关的是数据的A)存储结构构(7)线性表的顺序存储结构和线性表的链式存储结构分别是A)顺序存取的存储结构、顺序存取的存储结构储结构C)随机存取的存储结构、随机存取的存储结构储结构(8)树是结点的集合,它的根结点数目是A)有且只有1B)1或多于1C)0或1D)至少2C)数据库是一个结构化的数据(9)下列有关数据库的描述,正确的是A)数据库是一个DBF文件集合D)数据库是一组文件A)数据库包括数据库系统和数据库管理系统系统明显的包含关系(11)以下4个选项中,不能看作一条语句的是A);B)a=5,b=2.5,c=3.6;C)if(a<5);B)floatla0_AD)if(b!=5)x=2;y=6;C)b-agotoint(12)下面四个选项中,均是不合法的用户标识符的选项是A)AP_0doD)_123tempint(13)以下选项中不属于字符常量的是A)′C′B)′′C′′C)′\\xCC′B)int(15.8%5)B)a=b=c+2D)′\\072′C)x=y+z+5,++yD)x=25%5.0(14)设变量已正确定义并赋值,以下正确的表达式是A)x=y*5=x+zA)a:=b+1intk=0;voidfun(intm){m+=k;k+=m;printf(\"m=%dmain(){inti=4;fun(i++);printf(\"i=%dk=%d\\n\k=%d\(15)若变量已正确定义并赋值,以下符合C语言语法的表达式是C)int18.5%3D)a=a+7=c+b(16)以下程序的运行结果是B)数据库系统包括数据库和数据库管理D)三者没有B)数据库是一个关系D)任意存取的存储结构、任意存取的存B)随机存取的存储结构、顺序存取的存B)物理结构C)逻辑结构D)物理和存储结(10)数据库、数据库系统和数据库管理系统之间的关系是C)数据库管理系统包括数据库和数据库系统22}A)m=4k=5k=5i=5k=5i=4B)m=4k=5k=4i=5k=5C)m=4k=4i=4D)m=4k=5(17)已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是A)isupper(c)B)′A′<=c<=′Z′C)′A′<=c&&c<=′Z′-32)&&(′a′-32)<=c(18)设有:inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值是A)1B)2C)3D)4(19)若变量已正确定义,有以下程序段inta=3,b=5,c=7;if(a>b)a=b;c=a;if(c!=a)c=b;printf(\"%d,%d,%d\\n\其输出结果是A)程序段有语法错B)3,5,3C)3,5,5(20)若有定义:floatx=1.5;inta=1,b=3,c=2;,则正确的switch语句是A)switch(x){case1.0:printf(\"*\\n\");case2.0:printf(\"**\\n\");}B)switch((int)x);{case1:printf(\"*\\n\");case2:printf(\"**\\n\");}C)switch(a+b){case1:printf(\"*\\n\");case2+1:printf(\"**\\n\");}D)switch(a+b){case1:printf(**\\n);}casec:printf(**\\n);}23D)c<=(′z′D)3,5,7(21)有以下程序#includemain0{intfor(}程序的运行结果是A)741B)963C)852D)875421(22)以下描述中正确的是A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C)在do-while循环体中,是先执行一次循环,再进行判断可以省略while(23)有以下程序#includemain(){}程序的运行结果是A)y=0B)y=1C)y=2D)y=3C)intx[][3]={{l,2,3},{4,5,6}};(24)以下数组定义中错误的是A)intx[][3]={0};D)intx[2][3]={l,2,3,4,5,6};(25)下面说明不正确的是A)chara[10]=\"china\";*a;a=\"china\"A)a[2][!1]A)getc()(26)若有定义:intB)chara[10],*p=a;p=\"china\"C)charD)chara[10],*p;p=a=\"china\"a[2][3];,以下选项中对a数组元素正确引用的是C)a[0][3]C)getchar()D)a[1>2][!1]D)scanf()B)a[2][3]B)gets()B)intx[2][3]={{l,2},{3,4},{5,6}};inta[]={1,2,3,4},y,y=*p=&a[3];--p;*p;printf(\"y=%d\\n\D)do-while循环中,根据情况y=9;;y>0;y--)printf(\"%d\if(y%3==0)(27)若要求从键盘读入含有空格字符的字符串,应使用函数(28)阅读下列程序段,则程序的输出结果为#include\"stdio.h\"24#defineM(X,Y)(X)*(Y)#defineN(X,Y)(X)/(Y)main(){inta=5,b=6,c=8,k;k=N(M(a,b),c);printf(\"%d\\n\A)3structdata{inti;charch;doublef;}b;则结构变量b占用内存的字节数是A)1main(){FILE*fp;inti,a[6]={l,2,3,4,5,6};fp=fopen(\"d3.dat\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(\"%d,\}程序运行后的输出结果是A)4,5,6,4,5,6,(31)有以下程序#includemain(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;printf(\"%d\for(i=0;i<12;i++)c[s[i]]++;for(i=1;i<5;i++)printf(\"\\n\");}B)1,2,3,4,5,6,C)4,5,6,1,2,3,D)6,5,4,3,2,1,B)2C)7D)11(30)有以下程序#includeB)5C)6D)8(29)在16位IBM-PC机上使用C语言,若有如下定义25程序的运行结果是A)1234(32)有以下程序#include{intt,i,j;*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/voidfun(intB)2344C)4332D)1123for(i=0;i#includemain(){char*p1=\"abc\\"xyz\";strcpy(str+2,strcat(p1,p2));printf(\"%s\\n\A)xyzabcABCfun(int*a,intn){inti,j=0,p;p=j;for(i=j;ivoidabc(char*str){inta,b;for(a=b=0;str[a]!='\\0';a++)if(str[a]!='c')str[b++]=str[a];str[b]='\\0';}voidmain(){charstr[]=\"abcdef\";abc(str);printf(\"str[]=%s\}A)str[]=abdef(36)有以下程序#include#includevoid{charname[9];charsex;0};intfloatscore[2];i;}STU;a)B)str[]=abcdefC)str[]=aD)str[]=abtypedefstruct{f(STUSTUb={\"Zhao\0,90strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++)}main(){STUc={\"Qian\f(c);printf(\"%s,%c,%2.0f,%2.0f\\n\}程序的运行结果是A)Qian,f,95,92D)Zhao,m,85,90(37)有以下程序#includemain()B)Qian,m,85,90C)Zhao,f,95,92a.score[i]=b.score[i];27{FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(\"d1.dat\for(i=0;i<3;i++)fprintf(fp,\"\\n\");fclose(fp);fp=fopen(\"d1.dat\fscanf(fp,\"%d\fclose(fp);printf(\"%d\\n\}程序的运行结果是A)12300A)3B)123B)1C)2C)1D)4D)321(38)已知inta=1,b=3则a^b的值为(39)阅读下列程序,则运行结果为#include\"stdio.h\"fun(){staticintx=5;x++;returnx;}main(){inti,x;for(i=0;i<3;i++)x=fun();printf(\"%d\\n\A)5(40)有以下程序#includet++;voidfun(char*t,char*s){while(*t!=0)}main(){charss[10]=\"acc\fun(ss,aa);printf(\"%s,%s\\n\while((*t++=*s++)!=0);B)6C)7D)8fprintf(fp,\"%d\28}程序的运行结果是A)accxyy,bbxxyyD)accbbxxyy,bbxxyy选择题(1)D(2)A(3)C(4)D不选。(5)A(6)C(7)B【解析】程序执行的效率与很多因素有关,如数据的存储结构、程序所处理的数据量、【解析】数据结构概念一般包括数据的逻辑结构、存储结构及数据上的运算集合等。【解析】顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地程序所采用的算法等。顺序存储结构在数据插入和删除操作上的效率比链式存储结构的效率低。数据的逻辑结构只抽象地反映数据元素之间的逻辑关系,而不管它在计算机中的存储形式。址可通过公式LOC(ai)=LOC(a1)+(i-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。(8)C(9)C【解析】树是N(N>0)个结点的有限集合,当N=0,时称为空树,对于空树没有根结点,即根结点的个数为0,对于非空树有且只有一个根结点,所以树的根结点数目为0或1。【解析】数据库(DataBase,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,可被各个应用程序所共享。数据库中的数据具有\"集成\"、\"共享\"的特点。(10)B(11)D(12)C【解析】数据库系统(DatabaseSystem,简称DBS),包括数据库(Database,简称DB)【解析】选项D)为两条语句。【解析】C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符和数据库管理系统(DatabaseManagementSystem,简称DBMS)。【解析】软件是程序、数据与相关文档的集合,相对于计算机硬件而言,软件是逻辑产品【解析】确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说【解析】对象的基本特点:标识惟一性、分类性、多态性、封装性和模块独立性。【解析】滥用goto语句将使程序流程无规律,可读性差,因此A)不选;注解行有利于对而不是物理产品,是计算机的无形部分。明中确定的各种需求;集成测试的主要目的是发现与接口有关的错误。B)acc,bbxxyyC)accxxyy,bbxxyy程序的理解,不应减少或取消,B)也不选;程序的长短要依照实际情况而论,而不是越短越好,C)也必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C)中goto和int是关键字,b-a中'-'不是组成标识符的3种字符之一;选项D)中int是关键字,所以,均是不合法用户标识符的选项是C)。(13)B【解析】在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量,而选项B)是用双引号括起来的字符,29表示一个字符串常量。(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),则输出\"m=4k=4\"。然后变量k增1等于5,变量i增1等于5,所以main()函数的\"printf(\"i=%dk=%d\\n\\"i=5k=5\"(17)B(18)B算。本题中,由于前一个表达式的值为\"假\n的值保持不变,仍为2。(19)B(20)C【解析】两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c的【解析】C语言中,switch语句专用于实现多分支结构程序,其特点是各分支清晰而值等于3,变量b的值没有变化,程序输出的结果为3,5,3。直观。switch后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。(21)C52。(22)C【解析】dowhile语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。(23)D(24)B【解析】在程序中指针变量p初始指向a[3],执行p减1后,p指向a[2],语句y=*p的【解析】二维数组的初始化有以下几种形式:①分行进行初始化;②不分行进行初始化;作用是把a[2]的值赋给变量y,所以输出为y=3。③部分数组元素进行初始化;④省略第一维的定义,不省略第二维的定义。选项B)等号右边分了3行,大于等号左边数组的行数2。(25)D【解析】C语言中操作一个字符串常量的方法有:①将字符串常量存放在一个字符数【解析】本题考察变量的自加\"++\"和自减\"--\"问题。当y的值为9、6或3时,if语句的条件成立,执行输出语句,输出表达式--y的值,y的自减要先于输出语句执行,故输出结果为8【解析】在本题中,选项B)实际是先计算关系表达式\"'A'<=c\"的值是0还是1,再比较【解析】本题考查逻辑与运算的运算规则。其规则是:当运算符前后两个条件表达式该值与字符'Z'之间的大小关系,显然不能实现题目所要求的功能,而选项A)、C)、D)都可以。都满足时,其最终结果才为真。当发现第一个表达式的值为假,计算机将不再执行后面表达式的运30组之中;②用字符指针指向字符串,然后通过字符指针来访问字符串存储区域。当字符串常量在表达式中出现时,根据数组的类型转换规则,将其转换成字符指针。本题D)项中错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。(26)Da[0][0]。(27)B(28)A(29)D【解析】scanf()语句用\"空格\"区别不同的字符串;getc()与getchar()语句不能用于字【解析】带参数的宏定义命令行形式如下:#define宏名(形参表)替换文本。首先进【解析】结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题符串的读入。行M的宏替换,之后再进行N的宏替换,替换后的表达式为(a)*(b)/(c)。中整型变量i所占用的内存是2字节,字符型变量ch所占用的内存是1字节,双精度型变量f所占用的内存是8字节,三者相加即可。(30)A【解析】首先利用fwrite函数将数组a中的数据写到文件中,接着fseek函数的功能是读文件的位置,指针从文件头向后移动3个int型数据,这时文件位置指针指向的是文件中的第4个int数据\"4\fread函数将文件fp中的后3个数据4,5,6读到数组a中,这样就覆盖了数组中原来的前3项数据。最后数组中的数据就成了{4,5,6,4,5,6}。(31)C(32)D【解析】在for(i=0;i<12;i++)c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退【解析】在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()出循环时,数组c的4个元素的值分别为4、3、3、2。函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。(33)C【解析】本题考查的重点是拷贝字符串──使用strcpy()函数,该函数的调用方式是:strcpy(字符数组,字符串),其中\"字符串\"可以是字符串常量,也可以是字符数组。函数的功能是:将\"字符串\"完整地复制到\"字符数组\"中,字符数组中原有的内容被覆盖。使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志'\\0'一起复制;②不能用赋值运算符\"=\"将一个字符串直接赋值给一个字符数组,只能用strcpy()函数处理。另外,本题还考查连接字符串的strcat()函数,其调用方式是:strcat(字符数组,字符串)。功能是把\"字符串\"连接到\"字符数组\"中的字符串尾端,并存储于\"字符数组\"中。\"字符数组\"中原来的结束标志,被\"字符串\"的第一个字符覆盖,而\"字符串\"在操作中未被修改。使用该函数时注意:①由于没有边界检查,编程者要注意保证\"字符数组\"定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题;②连接前两个字符串都有结束标志'\\0',连接后\"字符数组\"中存储的字符串的结束标志'\\0'被舍弃,只在目标串的最后保留一个'\\0'。【解析】C语言中数组下标是从0开始的,所以二维数组a[2][3]的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示数组元素31(34)D的标准。(35)A【解析】该程序先判断a[i]voidmain(){intcs;while((cs=getchar())!=;'\\n'){switch(cs-'2'){case0case1:putchar(cs+4);case2:putchar(cs+4);break;case3:putchar(cs+3);default:putchar(cs+2);}}}A)668977B)668966C)6677877D)6688766(21)以下程序的输出结果是main(){{inta,i;a=0;switch(i)for(i=1;i<5;i++)if(xinta[]={2,4,6,8};main(){inti;int*p=a;for(i=0;i<4;i++)a[i]=*p;printf(\"%d\\n\上面程序的输出结果是A)6#includemain(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(\"%d\\n\B)8C)4D)2(24)有以下程序35}程序的运行结果是A)0B)1C)2D)3(25)已知字符′A′的ASCII码值是65,字符变量cl的值是′A′,c2的值是′D′。执行语句printf(\"%d,%d\A)A,B#include#includeintfun(int*s,intt,int*k){inti;*k=0;for(i=0;iB)A,68C)65,66D)65,68(26)下列程序是用来判断数组中特定元素的位置所在的。36(29)以下叙述中错误的是A)改变函数形参的值,不会改变对应实参的值C)可以给指针变量赋一个整数作为地址值可以给指针变量赋NULL(30)下面程序的输出结果是#includemain(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf(\"%d\\n\A)0B)1C)10D)9(31)有下面程序段#include\"stdio.h\"#include\"string.h\"main(){chara[3][20]={{\"china\chark[100]={0},*p=k;inti;for(i=0;i<3;i++){p=strcat(p,a[i]);}i=strlen(p);printf(\"%d\\n\则程序段的输出结果是A)18B)19C)20D)21B)chara[11];strcpy(++a,st);(32)若有定义:char*st=\"howareyou\";,下列程序段中正确的是A)chara[11],*p;strcpy(p=a+1,&st[4]);C)chara[11];strcpy(a,st);(33)有以下程序#includeint{intn=0;{n=10*n+*s-′0′;s++;}s[])fun(charD)chara[],*p;strcpy(p=&a[1],st+2);B)函数可以返回地址值D)当在程序的开头包含头文件stdio.h时,while(*s<=′9′&&*s>=′0′)return(n);}main()37{char}s[10]={′6′,′1′,′*′,′4′,′*′,′9′,′*′,′0′,′*′};printf(\"%d\\n\程序的运行结果是A)9B)61490C)61D)5(34)设有定义:charp[]={′1′,′2′,′3′},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是A)sizeof(p)B)sizeof(char)C)sizeof(*q)D)sizeof(p[0])(35)有以下函数intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下关于aaa函数的功能的叙述正确的是A)求字符串s的长度B)比较两个串的大小C)将串s复制到串t符串s所占字节数(36)当用户要求输入的字符串中含有空格时,应使用的输入函数是A)scanf()B)getchar()C)gets()D)getc()(37)下列选项中错误的说明语句是A)chara[]={′t′,′o′,′y′,′o′,′u′,′\\0′};B)chara[]={\"toyou\\0\C)chara[]=\"toyou\\0\";D)chara[]=′toyou\\0′;(38)以下程序的输出结果是intf(){staticinti=0;ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf(\"%d\\n\A)20B)24C)25D)15(39)下列程序的输出结果是38D)求字#include\"stdio.h\"#definemain(){inta,m=12,n=100;a=M(n,m);printf(\"%d\\n\A)2文件名内容B)3a1.txt123#C)4a2.txt321#D)5(40)假定当前盘符下有两个如下文本文件:M(x,y)x%y则下面程序段执行后的结果为#include\"stdio.h\"voidfc(FILE*p){charc;while((c=fgetc(p))!=′#′)putchar(c);}main(){FILE*fp;fp=fopen(\"a1.txt\fc(fp);fclose(fp);fp=fopen(\"a2.txt\fc(fp);fclose(fp);putchar('\\n');}A)123321选择题1)D【解析】软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。(2)D【解析】测试的目的是发现软件中的错误。经验表明,程序中存在错误的概率与该程序中已发现的错误成正比。这一现象说明,为了提高测试效率,测试人员应该集中对待那些错误群集的程序。(3)D(4)A【解析】面向对象思想中的三个主要特征是:封装性、继承性和多态性。【解析】当今主导的程序设计风格是\"清晰第一,效率第二\"的观点。结构化程序设计思B)123C)321D)以上答案都不正确39想提出之前,在程序设计中曾强调程序的效率,而在实际应用中,人们更注重程序的可理解性。(5)B【解析】软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中,结构设计是定义软件系统各主要部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。(6)C(7)D(8)C【解析】数据处理的最小单位是数据项;由若干数据项组成数据元素;数据是指能够被计【解析】假设线性表的长度为n,则在最坏情况下,冒泡排序要经过n/2遍的从前往后的【解析】满二叉树是指除最后一层外,每一层上的所有结点都有两个叶子结点。在满二算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。叉树中,层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。(9)B【解析】数据库管理系统(DatabaseManagementSystem,简称DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。(10)C(11)B【解析】在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称【解析】合法的标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或为属性,一个具有N个属性的关系称为N元关系。下划线,用户定义的标识符不能与关键字相同。选项A),数字不能为第一个字母,auto为关键字;选项C)中,也是数字不能为第一个字母,else为关键字;选项D)中负号不合法。(12)A【解析】在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。C语言的标识符可以分为关键字、预定义标识符和用户标识符。选项B)和C)中的横线以及点都不合法,选项D)中的case为C语言关键字。(13)A(14)D【解析】C语言中的函数可以进行递归调用,但是不能在函数中定义函数,函数不用有【解析】在内存中,实参单元与形参单元是不同的单元。在C语言中,仅在调用函数时,返回值,若有返回值,则返回值类型必确定。给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。(15)B短整型整型字符型整型【解析】双目运算中两边运算量类型转换规律:长整型长整型整型浮点型短整型->长整型整型->长整型字符型->整型无符号整型有符号整型->无符号整型整型->浮点型运算数1运算数2转换结果类型有符号整型40在a/b的时候,a、b的类型不一致,根据类型转换规则,把整型转换成double类型,之后的加、减类似。转化规则为char,short->int->unsigned->long->double←float。(16)D【解析】在ANSI标准中,long、int和short分别占用4、2和2个字节。但实际上对于某些C编译系统,int和short都占用4个字节,所以说各种类型数据占用内存大小是由选择何种C编译系统决定的。(17)B【解析】本题考查通过scanf函数输入数据时的格式控制问题。变量j的格式控制为\"%2d\y中,因为y为浮点型数据,所以输出结果为选项B)。(18)B【解析】对于do…while循环,程序先执行一次循环体,再判断循环是否继续。本题先输出一次i的值\"0,\i++的值,其值为0,所以循环结束。此时变量i的值经过自加已经变为1,程序再次输出i的值\"1\"。(19)D【解析】if…else语句的执行过程如下,首先计算if后面一对圆括号内表达式的值,若表达式的值为非0,执行if子句,然后跳过else子句,去执行if语句后的下一条语句;若表达式的值为0,跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。C语言的语法规定,else子句总是与前面最近的不带else的if匹配,与书写格式无关,本题目的后一个if-else相当于嵌套在第一个if子句里,相当于x=0时,z=z+1。(20)A【解析】本题主要考查switch语句的使用方法。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行default后面的语句。(21)A{case常量表达式1:语句1;case常量表达式2:语句2;…case常量表达式n:语句n;default:语句n+1;}其语义是:计算表达式的值,并逐个与其后的常量表达式值进行比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句;如表达式的值与所有case后的常量表达式均不相等时,则执行default后的语句。(22)D【解析】在C语言中,定义一维数组的语句一般形式如下:类型名数组名[常量表达式];一维数组的引用形式为:数组名[下标表达式]。count表示能被2整除或被5整除的个数,i则计【解析】本题考查用于多分支选择的switch语句,其一般形式为:switch(表达式)41算有多少个数组元素。(23)D为2。(24)B件为\"(25)C(26)D【解析】本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条j<=i\j的初值为3,故当i的值为1和2时,内层循环体都不会被执行。只有当i和【解析】在C语言中,数组元素下标是从0开始的;指针变量p指向数组的首地址。for循环语句中,指针变量p始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变j都等于3时才会执行一次。m的值为55对3取模,计算结果为1。【解析】在C语言中,字符型数据在内存中的存储形式是ASCII码值。当需要以整型【解析】本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开格式输出字符时,输出的也是ASCII码值。字符'A'和'D'的ASCII码值分别为65和68。始应知道*k的值为数组中的某一下标值,即*k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。(27)B(28)C29)C【解析】argc中存入的是命令行中字符串的个数。argv是一个指向字符型的指针数【解析】p=&a[3]将指针指向数组a的第4个元素,p[5]指向数组a的第9个元素,【解析】函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的组的指针。而a[8]=9,所以b=9。值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在文件stdio.h中,NULL被定义为void型的指针,选项D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项C)错误。(30)C(31)B(32)A【解析】此题考查了指针引用一维数组元素的方法。*p+9因为运算符\"*\"的优先级高【解析】字符串连接函数strcat的调用形式如下:strcat(s1,s2)。此函数将s2所指字【解析】本题综合考查字符数组的赋值和strcpy函数的用法。C语言不允许用赋值\"China\如果想把\"China\"这5个于\"+\p指向的元素1,然后加9,值为10。符串的内容连接到s1所指的字符串后面,并自动覆盖s1串末尾的尾标,函数返回s1的地址值。表达式对字符数组赋值,如下面的语句就是非法的:str1=字符放到数组str1中,除了逐个输入外,还能使用strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如:strcpy(str1,\"China\")或strcpy(str1,str2);注意,不能企图用以下语句来实行赋值(将str2的值传给str1):str1=str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。strcpy函数的结构是:strcpy(字符数组1,字符串2)其中,需要注意的是,字符数组1的长度不应小于字符串2的长度,\"字符数组1\"必须写成数组名形式,如(str1),\"字符串2\"可以是字符数组名,也可以是字符串常量,不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。(33)C【解析】在fun函数中,while循环的功能是:逐个取字符数组s的字符判断其是否是42数字。若是则将其作为个位数字保存到变量n中,n的原数据的各个数位将相应左移一个10进制位。当指针s指向数组的第3位时,循环条件不成立,循环结束,返回n的值,输出n的值为61。(34)A【解析】在本题中,p和q同为指向字符类型数据的指针。*q和p[0]同为字符型数据。选项B)、C)和D)都符合题目的要求;选项A)计算得出的是指针类型数据所占的内存字节数。(35)A【解析】循环开始前,指针t和s都指向字符串的起始位置,然后通过while循环判断t指向的位置是否为空,同时让t向右移动一位。while循环结束时,t自减1,此时t指向的位置是字符串的结束标志'\\0'处,故t-s的值是字符串的长度,并不包括结束标志。(36)C【解析】本题综合考查了输入函数的使用。scanf函数会将空格视为分隔符,getchar函数只能输入单个字符,getc函数是文件操作函数,显然都不符合题意。通过gets函数输入字符串时,输入的空格被认为是字符串的一个字符。(37)D【解析】通过赋初值的方式给一维数组赋字符串,可以用给一般数组赋初值的相同方式给一维字符数组赋字符串,也可以在赋值时直接赋字符串常量。选项B)和C)后面的'\\0'是多余的,在C语言中,系统会自动在字符串的结尾处加上一个字符'\\0'作为串的结束标记。(38)D(39)C【解析】函数的静态局部变量在编译时就赋初值,即只赋初值一次,在程序运行时它已【解析】带参数的宏定义命令行形式如下:#define宏名(形参表)替换文本有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。在编译的时候编译预处理程序用\"替换文本\"来替换宏,即M(n,m)被替换为n%m,之后计算,将计算的结果赋给a。注意,宏替换是在编译时由预处理程序完成的,宏替换不占用运行的时间,而函数调用是在程序运行时进行的,在函数的调用过程中需要占用一系列的处理时间。(40)A选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的。(1)算法的空间复杂度是指A)算法程序的长度D)执行算法需要的内存空间(2)在结构化程序设计中,模块划分的原则是A)各模块应包括尽量多的功能量紧密D)模块内具有高内聚度、模块间具有低耦合度(3)下列叙述中,不属于测试的特征的是A)测试的挑剔性B)完全测试的不可能性C)测试的可靠性D)测试的经济性(4)下面关于对象概念的描述中,错误的是A)对象就是C语言中的结构体变量B)对象代表着正在创建的系统中的一个实体D)对象之间的信息传递是通过消息进行C)对象是一个状态和操作(或方法)的封装体B)各模块的规模应尽量大C)各模块之间的联系应尽B)算法程序中的指令条数C)算法程序所占的存储空间【解析】本题的功能是顺序的读两个文本文件,依次输出。当打开文件时出现错误,fopen函数将返回NULL。43的(5)下列关于队列的叙述中正确的是A)在队列中只能插入数据D)队列是先进后出的线性表(6)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是A)acbedA)n+1RAmn下列操作中正确的是A)T=R∩SB)T=R∪SC)T=R×SD)T=R/SB)用E-R(9)下列叙述中,正确的是A)用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系图只能表示实体集之间一对一的联系(10)下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程改变时,数据的存储结构不变C)关系中的每一列称为元组,一个元组就是一个字段(11)C语言规定,在一个源程序中,main函数的位置A)必须在最开始后(12)以下叙述中错误的是A)计算机不能直接执行用C语言编写的源程序为.obj的文件是一个二进制文件C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D)后缀为.obj和.exe的二进制文件都可以直接运行(13)下列选项可以正确表示字符型常量的是A)′\\r′B)\"a\"C)\"\\897\"D)296B)C程序经C编译程序编译后,生成后缀B)必须在系统调用的库函数的后面C)可以任意D)必须在最D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字B)数据的物理独立性是指当数据的逻辑结构D)用E-R图表示的概念数据模型只能转换为关系数据模型C)用E-R图只能表示实体集之间一对多的联系SB1C3B)decabB)n-1TAmnB11C33C)deabcC)2nD)cedbaD)n/2(7)某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为(8)设有如下三个关系表B)在队列中只能删除数据C)队列是先进先出的线性表44(14)以下叙述中正确的是A)构成C程序的基本单位是函数C)main()函数必须放在其他函数之前B)可以在一个函数中定义另一个函数D)C函数定义的格式是K&R格式(15)设变量均已正确定义,若要通过scanf(\"%d%c%d%c\a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)A)10□X□20□Y<回车>D)10X<回车>20Y<回车>(16)若有说明:int*p,m=5,n;,以下正确的程序段是A)p=&n;scanf(\"%d\D)p=&n;*p=m;(17)在执行下述程序时,若从键盘输入6和8,则结果为main(){inta,b,s;scanf(\"%d%d\s=aif(aC)10□X<回车>20□Y<回车>(20)已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的45大写字母转换为对应小写字母的语句是A)c=(c-′A′)%26+′a′A)x%2==1(22)有以下程序main(){intk=5,n=0;do{switch(k){case1:case2:}printf(\"%d\}while(k>0&&n<5);}程序运行后的输出结果是A)235main(){intn=9;while(n>6){n--;printf(\"%d\}该程序的输出结果是A)987B)876C)8765D)9876(24)有以下程序#includemain(){{{intc;switch(c-′2′)case0:while((c=getchar())!=′\\n)B)0235C)02356D)2356(23)有如下程序case3:n+=1;k--;break;case4:n+=2;k--;break;default:n=0;k--;B)x/2B)c=c+32C)c=c-′A′+′a′D)c=(′A′+c)%26-′a′(21)以下选项中,当x为大于l的奇数时,值为0的表达式是C)x%2!=0D)x%2==0case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}46printf(\"\\n\")}从第一列开始输入以下数据代表一个回车符。2743程序的输出结果是A)66877main(){int{x=0,y=0,i;for(i=1;;++i)if(i%2==0){x++;continue;}if(i%5==0){y++;break;}}printf(\"%d,%d\}程序的输出结果是A)2,1main(){inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;for(i=0;i<4;i++)for(j=0;j<3;j++)for(k=j+1;k<4;k++)if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/for(i=0;i<4;i++)printf(\"%d,\}程序运行后的输出结果是A)1,6,5,7,(27)有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<3;i++)j+=f(i);printf(\"%d\\n\程序运行后的输出结果是A)4B)3C)2D)1B)8,7,3,1,C)4,7,5,2,D)1,6,2,1,B)2,2C)2,5D)5,2(26)有以下程序B)668966C)6677877D)6688766(25)有以下程序47(28)当运行以下程序时,从键盘输入AhaMA(空格)Aha,则下面程序的运行结果是#includemain(){chars[80],c=′a′;inti=0;scanf(\"%s\while(s[i]!=′{if(s[i]==c)s[i]-32;elseif(s[i]==c-32)s[i]=s[i]+32;i++;}puts(s);}A)ahaMamain(){inti;inta[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf(\"%d\}A)159B)753C)357D)591(30)现有如下程序段#include\"stdio.h\"main(){inta[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};inti=0,j=5;printf(\"%d\\n\则程序的输出结果为A)21A)int*p;scanf(\"%d\…B)int*s,k;*s=100;…C)int*s,k;B)78C)23D)28(31)请选出正确的程序段B)AbAMaC)AhAMa[空格]ahAD)ahAMa[空格]ahA(29)下面程序输出的结果是48char*p,c;s=&k;p=&c;*p=′a′;…D)int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;…(32)下面程序段的运行结果是chara[]=\"lanuage\p=a;while(*p!=′u′){printf(\"%c\A)LANGUAGEB)languageC)LAN(33)以下程序的输出结果是#includeinta[3][3]={1,2,3,4,5,6,7,8,9,},*p;main(){p=(int*)malloc(sizeof(int));f(p,a);printf(\"%d\\n\free(p);}f(int*s,intp[][3]){*s=p[1][1];}A)1B)4C)7D)5(34)有以下程序voidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main()49D)langUAGE{inta[5]={1,2,3,4,5},i;f(a);for(i=0;i<5;i++)printf(\"%d,\a[i]);}程序运行后的输出结果是A)2,2,3,4,5,A)′\\x13′B)6,2,3,4,5,B)′\\081′C)1,2,3,4,5,C)′65′D)2,3,4,5,6,D)\"\\n\"(35)以下合法的字符型常量是(36)有以下语句,则对a数组元素的引用不正确的是inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;A)a[p-a]B)*(&a[i])C)p[i]D)*(*(a+i))(37)有以下程序#includemain(){charp[20]={′a′,′b′,′c′,′d′},q[]=\"abc\r[]=\"abcde\";strcat(p,r);strcpy(p+strlen(q),q);printf(\"%d\\n\}程序运行后的输出结果是A)9A)automain(){intc=35;printf(\"%d\\n\A)0B)70C)35D)1B)6C)11D)7B)staticC)externD)无存储类别(38)在C语言中,变量的隐含存储类别是(39)以下程序的输出结果是(40)有以下程序#includemain(){FILE*fp;inti=20,j=30,k,n;fp=fopen(\"d1.dat\fprintf(fp,\"%d\\n\fclose(fp);fp=fopen(\"d1.dat\50fscanf(fp,\"%d%d\printf(\"%d%d\\n\fclose(fp);}程序运行后的输出结果是A)2030选择题(1)D【解析】算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度是指执行这个算法所需要的内存空间。(2)D(3)C【解析】在结构化程序设计中,一般较优秀的软件设计尽量做到高内聚、低耦合,这样有【解析】软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程利于提高软件模块的独立性,也是模块划分的原则。序可靠性的鉴定。它有3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中,没有测试的可靠性这一说法。(4)A【解析】对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系,对象之间通过传递消息互相联系,从模拟现实世界中不同事物彼此之间的联系,B)、C)、D)是正确的,对象的思想广泛应用于C++、Java等语言中,因此A)错误。(5)C【解析】队列是一种操作受限的线性表。它只允许在线性表的一端进行插入操作,另一端进行删除操作。其中,允许插入的一端称为队尾(rear),允许删除的一端称为队首(front)。队列具有先进先出的特点,它是按\"先进先出\"的原则组织数据的。(6)D【解析】依据后序遍历序列可确定根结点为c;再依据中序遍历序列可知其左子树由deba构成,右子树为空;又由左子树的后序遍历序列可知其根结点为e,由中序遍历序列可知其左子树为d,右子树由ba构成,如下图所示,求得该二叉树的前序遍历序列为选项D)。(7)A(8)C【解析】对于任何一棵二叉树T,如果其终端结点(叶子)数为n1,度为2的结点数为n2,【解析】对于两个关系的合并操作可以用笛卡尔积表示。设有n元关系R和m元关系则n1=n2+1,所以该二叉树的叶子结点数等于n+1。S,它们分别有p和q个元组,则R与S的笛卡儿积记为R×S它是一个m+n元关系,元组个数是p×q由题意可得,关系T是由关系R与关系S进行笛卡尔积运算得到的。(9)A【解析】两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。(10)D【解析】数据处理是指将数据转换成信息的过程,故选项A)叙述错误;数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项B)叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项C)叙述错误。(11)C【解析】不论main函数在整个过程中的位置如何,一个C程序总是从main函数开B)2050C)3050D)302051始执行的。(12)D【解析】一个C语言的源程序(后缀名为.c)在经过编译器编译后,先生成一个汇编语言程序,然后由编译程序再将汇编语言程序翻译成机器指令程序,即目标程序(后缀名为.obj),目标程序不可以直接运行,它要和库函数或其他目标程序连接成可执行文件(后缀名为.exe)后方可运行。(13)A【解析】C语言中,一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号括起来作为字符常量,字符常量的的范围是0~127。由于字符常量用单引号括起来,所以选项B),C)错误,选项D)超过了字符常量的表示范围。(14)A【解析】本题考查C语言的综合基础知识。构成C程序的基本单位是函数,不论main函数在整个程序中的位置如何,一个C程序总是从main函数开始执行,C语言的函数定义都是互相平行、独立的,在定义函数时,一个函数内不能定义另一个函数。C函数定义的一般格式有两种:传统格式和现代格式。传统格式也称K&R格式,是早期编译系统使用的格式;现代格式又称ANSI格式,是现代编译系统使用的格式。(15)D(16)D(17)B(18)C语句。(19)A【解析】在C语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律按整型处理。在定义函数时,对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数类型为主,即函数类型决定返回值的类型。(20)D【解析】C语言中,字符数据参加运算时,实际上是其ASCII码参与运算。大写字母的ASCII码比其对应的小写字母的ASCII码小32。因此大写字母转化为小写字母只需将其加上32即可。所以选项B)、C)都符合条件,因为变量c中存储的是大写字母,所以\"c-'A'\"的值一定小于26,故选项A)与选项C)的含义相同。(21)D【解析】因为x的值为大于1的奇数,所以x除以2的余数等于1,因此,选项A)、C)中表达式的结果为真,不为0;对于选项B)来说,x除以2的商不会等于0;选项D)中表达式的结果为假,即等于0。(22)A【解析】因为变量的初始值分别为\"k=5,n=0\default语句,这时k=4,执行\"case4:\"这个分支,结果是\"n=2,k=3\2;程序然后进行第二次循环,这时\"n=2,k=3\3:\"这个分支,结果是\"n=3,k=2\3;程序进行第三次循环,这时\"n=3,k=2\2:case4:\"这两个分支,结果是\"n=5,k=1\",打印出5,这时因【解析】本题中,scanf函数的格式控制没有空格,所以,对于选项A)、B)、C),输入的第【解析】\"&\"是求址运算符,\"*\"是指变量说明符。选项A)、B)应改为scanf(\"%d\【解析】本题中a的值为6,b的值为8,最后s的值为8,s*=s等价于s=s*s。【解析】本题考查简单的if…else语句。先执行条件if(a6可以知道,最后一次循环开始时,n的值应该为7,所以最后一次执行循环时,输出为6,由此可以排除选项C)。(24)A【解析】本题主要考查了字符输入输出函数getchar和putchar的使用。getchar函数用来从标准输入设备上读入一个字符,putchar(c)函数是将字符变量c中的字符输出到标准输出设备上,并且字符可以看作整数参与运算。(25)A(26)A【解析】本题考查了continue和break语句在循环语句中的作用。break语句的作【解析】本题利用多重for循环的嵌套来实现对二维数组元素的按列排序。利用最用是结束本层循环,而continue语句的作用是结束本次循环直接进入到下次循环。外层循环来实现对列的控制。内部循环利用选择法对数组元素按照从小到大的顺序进行排列,最后输出对角线上的元素值。(27)Bf(1)=1f(2)=f(1)+1=2最后,j的值为1+2=3(28)A(29)B【解析】本题主要考查的知识点是大写字母比它对应的小写字母ASCII码值小32,并【解析】本题用循环的方法考查对数组概念的掌握。首先,当i=0时,数组中的位置是且字符可以看作整数进行算术运算等操作。a[2][0]=7,当然,如果用排除法,就不用考虑后面的循环,因为在4个选项中,第1个数为7的选项只有B)。本题执行第2次循环时,i的值为1,则printf函数中的数组指向为a[1][1]=5,依次循环,可求出答案。(30)A【解析】通过地址来引用二维数组,若有以下定义:inta[3][4],i,j;且当0≤i≤3,0≤j<4则a[i][j],*(a[i]+j),可以有以下几种方式来引用数组中的第i行,第j列的元素:上多少偏移量。(31)C【解析】本题的选项A)和B)犯了同样的错误,即指针变量在定义后并没有指向具体的变量。也就是说,指针变量中没有确定的地址值,它的值是不可预见的,所指的单元也是不可预见的,因此不能进行赋值操作。另外,在选项D)中,s是int型指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。(32)C【解析】本段程序的作用是输出字符串\"lanuage\"中字母u之前的字符,并将其转化为大写字母。注意:如果一个字符数组用来作为字符串使用,那么在定义该字符数组时,数组的大小就应该比它将要实际存放的最长字符多一个元素,以存放'\\0'。【解析】在main函数中,对f(1)和f(2)的值进行了累加。*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。表达式&a[0][0]+2*i+j-2相当于是地址&a[0][0]加53(33)D【解析】本题考查了二维数组元素引用的方法。题中用动态存储分配函数malloc分配了一个int型数据长度大小的内存,然后指针p指向了这段内存,函数f()中对p所指向的数据进行了赋值,p[1][1]为二维数组第二行第二列的元素,对应于实参a的元素5,所以输出结果为5。(34)B【解析】调用函数f()时,将数组a的地址传递给了指针q,此时q指向的就是数组a的第一个元素a[0]。在5次循环过程中,q始终指向a[0],因此a[0]的值增加了5。最后的输出结果为\"6,2,3,4,5\"。(35)A【解析】C语言的字符常量是用单引号(即撇号)括起来的一个字符。除此之外,在C语言中还允许用一个\"\\\"开头的字符序列来表示字符常量。其中,形式\"\\ddd\"表示1到3位8进制数所代表的字符;形式\"\\xhh\"表示1到2位16进制数所代表的字符。在本题中,'\\x13'表示回车符,是一个字符常量;'\\081'用8进制数所代表的字符,但形式不正确,因为8进制数所代表的字符中不会出现数字\"8\";'65'不是一个字符,而是一个十进制数字;\"\\n\"是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。(36)D(37)B【解析】本题考查数组指针的应用。选项D)第一层括号中为数组a中第i项元素的【解析】strcpy()函数的功能是将字符串q复制到从p[3]位置开始的存储单元,同时值,外面再加指针运算符没有意义。复制字符串结束标志'\\0'到p[6]中。函数strlen()返回的是字符串中不包括'\\0'在内的实际长度,故本题答案为B)(38)A【解析】auto变量:无static声明的局部变量。用auto作存储类别的声明时,可以不写auto,存储类别隐含确定为auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用extern声明外部变量,外部变量即全局变量,可以用extern声明来改变全局变量的作用域,实际上,关键字\"auto\"可以省略,auto不写则隐含确定为\"自动存储类别\(39)C(40)A【解析】本题考查按位与\"&\"。因为1&1=1,0&0=0,所以任何数与自身按位与,结果【解析】本题中,最主要的是掌握几个有关文件函数的应用。仍为此数,不发生变化。函数名:fopen功能:打开一个文件调用方式FILE*fp;fp=fopen(文件名,使用文件方式);函数名:fprintf功能:传送格式化输出到一个文件中调用方式:fprintf(文件指针,格式字符串,输出表列);函数名:fclose功能:关闭一个文件54调用方式:fclose(文件指针);函数名:fscanf功能:从磁盘文件执行格式化输入调用方式:fscanf(文件指针,格式字符串,输入列表)。选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的。(1)程序流程图中带有箭头的线段表示的是A)图元关系A)多态性A)低内聚低耦合耦合(4)在软件开发中,需求分析阶段产生的主要文档是A)可行性分析报告D)集成测试计划(5)算法的有穷性是指A)算法程序的运行时间是有限的程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是A)快速排序(7)下列关于栈的叙述正确的是A)栈按\"先进先出\"组织数据数据D)不能删除数据A)需求分析阶段段(9)有三个关系R、S和T如下:RBabSC01Dk1n1B)概念设计阶段C)逻辑设计阶段D)物理设计阶B)栈按\"先进后出\"组织数据C)只能在栈底插入B)冒泡排序C)直接插入排序D)堆排序B)算法程序所处理的数据量是有限的C)算法B)软件需求规格说明书C)概要设计说明书B)数据流B)自顶向下C)控制流C)模块化D)调用关系D)逐步求精D)高内聚高(2)结构化程序设计的基本原则不包括(3)软件设计中模块划分应遵循的准则是B)高内聚低耦合C)低内聚高耦合(8)在数据库设计中,将E-R图转换成关系数据模型的过程属于55BfanTBaC302Dh2k1x1C0Dk1由关系R和S通过运算得到关系T,则所使用的运算为C)笛卡尔积D)交A)并B)自然连接(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为学号,成绩C)学号,课号D)学号,姓名,成绩B)C程序书写格式严格,(11)以下叙述中正确的是A)C程序中的注释只能出现在程序的开始位置和语句的后面要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中(12)以下选项中不合法的标识符是D)_00(13)以下选项中不属于字符常量的是A)′C′A)x=y*5=x+zD)x=25%5.0(15)以下定义语句中正确的是A)intD)doublecharch;a=b=0;B)charA=65+1,b=′b′;C)floata=1,*b=&a,*c=&b;a=0.0;b=1.1;intk;printf(\"k=%d\\n\B)\"C\"C)′\\xCC′B)int(15.8%5)D)′\\072′C)x=y+z+5,++y(14)设变量已正确定义并赋值,以下正确的表达式是A)printB)FORC)&aA)课号,成绩B)(16)有以下程序段ch=′a′;k=12;printf(\"%c,%d,\56已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)已知字母A的ASCII码值为65,若变量kk为char型,以下不能正确判断出kk中的值为B)输出项与格式描述符个数不符,大写字母的表达式是A)kk>=′A′&&kk<=′Z′B)!(kk>=′A′||kk<=′Z′)&&(kk+32)<=′Z′D)isalpha(kk)&&(kk<91)(18)当变量c的值不为2、4、6时,值也为\"真\"的表达式是A)(c==2)||(c==4)||(c==6)B)(c>=2&&C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&&c<=6)&&(c%2!=1)(19)若变量已正确定义,有以下程序段inta=3,b=5,c=7;if(a>b)a=b;c=a;if(c!=a)c=b;printf(\"%d,%d,%d\\n\其输出结果是A)程序段有语法错B)3,5,3C)3,5,5(20)有以下程序#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(\"a=%d,b=%d\\n\}程序的运行结果是A)a=1,b=0B)a=2,b=2C)a=1,b=157C)(kk+32)>=′a′c<=6)||(c!=3)||(c!=5)D)3,5,7D)a=2,b=1(21)有以下程序#includemain(){{}}程序的运行结果是A)7,4,2,A)n=0;C)n=10;#includemain(){}程序的运行结果是A)y=0A)intC)intcharp=s;则执行p=s;语句后,以下叙述正确的是A)可以用*p表示s[0]C)s和p都是指针变量(26)若有定义:intA)a[2][!1](27)有定义语句:charA)gets(&s[0]);B)a[2][3]B)s数组中元素的个数和p所指字符串长度相等D)数组s中的内容和指针变量p中的内容相同C)a[0][3]B)scanf(\"%s\D)a[1>2][!1]C)gets(s);B)y=1x[][3]={{0},{1},{1,2,3}};C)y=2B)intD)y=3(24)以下错误的定义语句是x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};D)intx[][3]={1,2,3,4};x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};*p;inta[]={1,2,3,4},y,y=*p=&a[3];--P;*p;printf(\"y=%d\\n\B)8,7,5,2,C)9,7,6,4,D)8,5,4,2,(22)以下不构成无限循环的语句或语句组是do{++n;}while(n<=0);B)n=0;while(1){n++;}while(n);{n--;}D)for(n=0,i=1;;i++)n+=i;int;x=8;x>0;x--)continue;}{printf(\"%d,\for(if(x%3)printf(\"%d,\(23)有以下程序(25)设有如下程序段s[20]=\"Beijing\a[2][3];,以下选项中对a数组元素正确引用的是s[10];,若要从终端给s输入5个字符,错误的输入语句是58D)scanf(\"%s\(28)以下叙述中错误的是A)在程序中凡是以\"#\"开始的语句行都是预处理命令行分号表示结束C)#defineMAX是合法的宏定义命令行处理是在程序执行的过程中进行的(29)以下结构体类型说明和变量定义中正确的是A)tupedefstrct{intn;charc;}REC;RECt1,t2;B)tupedefstrct{intn;charc;};RECt1,t2;C)tupedefstrctREC;{intn=0;charc='A';}t1,t2;D)strct{intn;charc;}REC;RECt1,t2;(30)以下叙述中错误的是A)gets函数用于从终端读入字符串C)fputs函数用于把字符串输出到文件件(31)有以下程序#includemain(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;printf(\"%d\for(i=0;i<12;i++)c[s[i]]++;for(i=1;i<5;i++)printf(\"\\n\");}程序的运行结果是A)1234(32)有以下程序#includevoid{int*s,intn1,intn2)fun(inti,j,t;B)2344C)4332D)1123B)getchar函数用于从磁盘文件读入字符D)fwrite函数用于以二进制形式输出数据到文B)预处理命令行的最后不能以D)C程序对预处理命令行的59i=n1;j=n2;while(i#includevoidfun(char*s[],intn){char*t;inti,j;for(i=0;istrlen(s[j])){t=s[i];s[i]:s[j];s[j]=t;}}main(){char*ss[]={\"bcc\fun(ss,5);printf(\"%s,%s\\n\}程序的运行结果是A)xy,aaaaccB)aaaacc,xyD)aabcc,bcc(34)有以下程序#includeintf(intx){inty;if(x==0||x==1)return(3);y=x*x-f(x-2);returny;}60C)5678901234C)bcc,aabccmain(){}程序的运行结果是A)0(35)有以下程序#includevoid{}main(){}程序的运行结果是A)*****a*b(36)有以下程序#include#includevoid{charname[9];charsex;intfloatscore[2];i;}STU;a)B)a*bC)a*b****D)abchar*s=\"*****a*b****\puts(t);fun(s,t);while(*a,char*b)fun(charB)9C)6D)8intz;printf(\"%d\\n\z=f(3);while(*a==′*′)a++;*b=*a){b++;a++;}typedefstruct{f(STUSTUb={\"Zhao\strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++)}main(){}程序的运行结果是A)Qian,f,95,92D)Zhao,m,85,90B)Qian,m,85,90C)Zhao,f,95,92STUc={\"Qian\printf(\"%s,%c,%2.0f,%2.0f\\n\",c.name,c.sex,c.score[0],c.score[1]);f(c);a.score[i]=b.score[i];61(37)有以下程序#includemain(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(\"d1.dat\for(i=0;i<3;i++)fprintf(fp,\"\\n\");fclose(fp);fp=fopen(\"d1.dat\fscanf(fp,\"%d\fclose(fp);printf(\"%d\\n\}程序的运行结果是A)12300B)123C)1D)321(38)变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是A)a^bB)a|bC)a&bD)a<<4C)auto和static(39)在C语言中,只有在使用时才占用内存单元的变量,其存储类型是A)auto和registerD)static和register(40)设有定义语句int形参C)f是指向int类型一维数组的指针变量类型的地址选择题(1)C【解析】程序流程图是人们对解决问题的方法、思路或算法的一种描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流。带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。构成程序流程图的基本图符及含义:→或表示控制流;□表示加工步骤;表示逻辑条件。(2)A(3)B【解析】结构化程序设计的原则包括:\"自顶而下,逐步求精\"的设计思想,\"独立功能,单出、【解析】模块划分应遵循的准则包括模块之间的耦合和内聚。一般来说,要求模块之间入口\"的模块化设计等。多态性是面向对象程序语言的特征。D)f是函数名,该函数的返回值是基类型为int(*f)(int);,则以下叙述正确的是B)f是指向函数的指针变量,该函数具有一个int类型的A)f是基类型为int的指针变量B)extern和registerfprintf(fp,\"%d\62的耦合尽可能地低,即模块尽可能独立,要求模块的内聚程度尽可能地高,即高内聚、低耦合的原则。(4)B【解析】需求分析阶段的工作主要包括需求获取、需求分析、编写需求规格说明书和需求评审等四方面。产生的主要文档为软件需求规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。(5)A【解析】算法具有6个特性:①有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的;②确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。③可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。④输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。⑤输出:一个算法有一个或多个输出。(6)D(7)B【解析】在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都n(n-1)/2,【解析】在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的一端称为栈底。堆排序需要比较的次数为nlog2n。栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照\"先进后出\"或\"后进先出\"的原则组织数据的。(8)C【解析】数据库的逻辑设计分为:①将概念模型转换成一般的数据模型;②将一般的数据模型转换为特定的数据库管理系统所支持的数据模型。把概念模型转换成关系数据模型就是把E-R图转换成一组关系模式。(9)D【解析】在关系运算中,交的定义如下:设R1和R2为参加运算的两个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则为交运算,结果仍为度等于n的关系,其中,交运算的结果既属于R1又属于R2。(10)C组合。(11)C【解析】在C语言中,注释可以加在程序中的任何位置,选项A)错误;C程序可以分模块写在不同的文件中,编译时在将其组合在一起,选项D)错误。C程序的书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。所以正确答案选C)。(12)C【解析】C语言合法标识符的命名规则是:标识符只能由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。因为选项C)中的标识符的第一个字符为\"&\C)为本题的正确答案。(13)B【解析】在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量。而选项B)是用双引号括起来的字符,表示一个字符串常量。所以正确答案为B)。(14)C【解析】求余运算符\"%\"两边的运算对象必须是整型,而选项B)和D)中\"%\"两边的运算对象有浮点整数据,所以选项B)和D)是错误的表达式。在选项A)中赋值表达式的两边出现相同的变量x,也是错误的。选项C)是一个逗号表达式,所以正确答案为C)。【解析】\"选课SC\"表是\"学生S\"表和\"课程C\"表的映射表,主键是两个表主键的63(15)B【解析】本题考查变量的定义方法。如果要一次进行多个变量的定义,则在它们之间要用逗号隔开。因此选项A)和C)错误。在选项C)中,变量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量b。所以正确答案为B)。(16)D【解析】输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。所以选项D)为正确答案。(17)B【解析】C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在'A'和'Z'之间就可以了,选项A)和C)符合要求。函数isalpha用来确定一个字符是否字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。本题答案选B)。(18)B【解析】满足表达式(c>=2&&c<=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和C!=5中至少有一个为真,即不论C为何值,表达式B)都为\"真\"。正确答案为B)。(19)B(20)D【解析】两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c的【解析】本题考查了switch结构的内容。C语言中,程序执行完一个case标号的内值等于3,变量b的值没能变化,程序输出的结果为3,5,3。所以正确答案为B)。容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的case2:分支。最后a和b的值分别为2和1。(21)D【解析】本题中,程序每执行一次循环x的值减2,循环共执行4次。当x的值为8,4,2时,printf语句先输出x的值,再将x的值减1。而当x为6时,if语句条件成立,程序先将x的值减1,再将其输出。所以输出结果为选项D)。(22)A(23)D(24)C(25)A(26)D【解析】选项A)中变量n的值,先自加1,再进行循环条件判断,此时循环条件n<=0【解析】在程序中指针变量p初始指向a[3],执行p减1后,p指向a[2],语句y=*p的【解析】本题考查的是二维数组的定义和初始化方法。C语言中,在定义并初始化二【解析】语句p=s的作用是把字符数组s的首地址作为初值赋给了指针变量p,并且【解析】C语言中数组下标是从0开始的,所以二维数组a[2][3]的第一维下标取值不成立,跳出循环。所以正确答案为A。作用是把a[2]的值赋给变量y,所以输出为y=3。正确答案为D)。维数组时,可以省略数组的第一维的长度,但是不能省略第二维的长度。故选项C)错误。使p指向了字符数组s的第一个字符s[0]。为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示是数组元素a[0][0]。所以正确答案为D)。(27)D表达式。【解析】在格式输入中,要求给出的是变易的地址,而D)答案中给出的s[1]是一个值的64(28)D(29)A(30)B(31)C(32)C【解析】C语言中的预处理命令以符号#开头,这些命令是在程序编译之前进行处理【解析】本题考查的是typedef的用法和结构体变量的定义方法。typedef可用于声【解析】getchar函数的作用是从终端读入一个字符。【解析】在for(i=0;i<12;i++)c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退【解析】函数fun(int*s,intn1,intn2)的功能是对数组s中的元素进行首尾互相调换。的,选项D)的描述错误。故答案选D)。明结构体类型,其格式为:typedefstruct{结构元素定义}结构类型;本题正确答案为A)。出循环时,数组c的4个元素的值分别为4、3、3、2。所以输出结果为选项C)。所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。所以正确答案为C)。(33)A【解析】函数fun(char*s[],intn)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主函数中执行fun(ss,5)语句后,*ss[]={\"xy\\"bcc\\"bbcc\\"aabcc\\"aaaacc\xy,aaaacc。所以选项A)为正确答案。(34)C【解析】函数intf(intx)是一个递归函数调用,当x的值等于0或1时,函数值等于3,其它情况下y=x2-f(x-2)。所以在主函数中执行语句z=f(3)时,y=3*3-f(3-2)=9-f(1)=9-3=6。所以正确答案为C)。(35)C【解析】在函数fun(char*a,char*b)中,while(*a=='*')a++的功能是:如果*a的内容为'*',则a指针向后移动,直到遇到非'*'字符为止,退出循环进入下一个while循环,在while(*b=*a){b++;a++;}中,把字符数组a逐个字符的赋给字符数组b。所以在主函数中,执行fun(s,t)语句后,字符数组t中的内容为\"a*b****\C)为正确答案。(36)A【解析】本题考查的是函数调用时的参数传递问题。程序在调用函数f时,传给函数f的参数只是结构变量c在栈中的一个拷贝,函数f所做所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量c的值。(37)B案为B)。(38)A(39)A(40)B【解析】本题考查的是位运算的知识,对于任何二进制数,和1进行异或运算会让其取【解析】在C语言中只有自动变量和寄存器变量在使用时才占用内存单元。所以正【解析】本题考查的是指向函数的指针。语句int(*f)(int);是对一个函数的声明,其反,而和0进行异或运算不会产生任何变化,故本题答案选A)。确答案为A)。中f是指向该函数的指针,该函数有一个整型的参数,函数返回值类型为整型。故答案选B)。【解析】在函数中首先把整型数组a[10]中的每个元素写入文件d1.dat中,然后再次打开这个文件,把文件d1.dat中的内容读入到整型变量n中,最后输出变量n的值。所以正确答65

因篇幅问题不能全部显示,请点此查看更多更全内容