国二C语言历年真题

上传人:沈*** 文档编号:62308489 上传时间:2022-03-14 格式:DOC 页数:110 大小:878.50KB
返回 下载 相关 举报
国二C语言历年真题_第1页
第1页 / 共110页
国二C语言历年真题_第2页
第2页 / 共110页
国二C语言历年真题_第3页
第3页 / 共110页
点击查看更多>>
资源描述
2008年4月真题1.程序流程图中带有箭头的线段表示的是_。A)图元关系 B)数据流C)控制流 D)调用关系 参考答案:C【解析】程序流程图是人们对解决问题的方法、思路或算法的一种描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流,而在程序流程图中表示控制流。在所给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。构成程序流程图的基本图符及其含义是:或表示控制流;表示加工步骤;表示逻辑条件。2. 结构化程序设计的基本原则不包括_。A)多态性 B)自顶向下C)模块化 D)逐步求精 参考答案:A【解析】结构化程序设计的原则包括:自顶而下,逐步求精的设计思想,独立功能,单出口、单入口的模块化设计等。多态性是面向对象程序语言的特征。3.软件设计中模块划分应遵循的准则是_。A)低内聚低耦合 B)高内聚低耦合C)低内聚高耦合 D)高内聚高耦合 参考答案:B【解析】模块划分应遵循的准则包括模块之间的耦合和内聚。一般来说,要求模块之间的耦合尽可能地低,即模块尽可能独立,要求模块的内聚程度尽可能地高,即高内聚、低耦合的原则。4.在软件开发中,需求分析阶段产生的主要文档是_。A)可行性分析报告 B)软件需求规格说明书C)概要设计说明书 D)集成测试计划 参考答案:B【解析】需求分析阶段的工作主要包括需求获取、需求分析、编写需求规格说明书和需求评审等四方面。产生的主要文档为软件需求规格说明书,它可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。5.算法的有穷性是指_。A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用 参考答案:A【解析】算法具有6个特性。 有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的。 确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生歧义。 可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。 输入:一个算法有零个或多个输入,这些输入取自某个特定的对象的集合。 输出:一个算法有一个或多个输出。6.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n1)/2的排序方法是_。A)快速排序 B)冒泡排序C)直接插入排序 D)堆排序 参考答案:D【解析】在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都是n(n1)/2,堆排序需要比较的次数为nlog2n。7.下列关于栈的叙述正确的是_。A)栈按先进先出组织数据B)栈按先进后出组织数据C)只能在栈底插入数据D)不能删除数据 参考答案:B【解析】在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。因而栈是按照先进后出或后进先出的原则组织数据的。8.在数据库设计中,将ER图转换成关系数据模型的过程属于_。A)需求分析阶段 B)概念设计阶段C)逻辑设计阶段 D)物理设计阶段 参考答案:C【解析】数据库的逻辑设计分为: 将概念模型转换成一般的数据模型; 将一般的数据模型转换为特定的数据库管理系统所支持的数据模型。把概念模型转换成关系数据模型就是把ER图转换成一组关系模式。9.有三个关系R、S和T如下:RBCDa0k1b1n1 SBCDf3h2a0k1n2x1 TBCDa0k1由关系R和S通过运算得到关系T,则所使用的运算为_。A)并 B)自然连接C)笛卡尔积 D)交 参考答案:D【解析】在关系运算中,交的定义如下:设R1和R2为参加运算的两个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则R1R2为交运算,结果仍为度等于n的关系,其中,交运算的结果既属于R1又属于R2。10.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为_。A)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩 参考答案:C【解析】选课SC 表是 学生S 表和 课程C 表的映射表,主键是两个表主键的组合。11.以下叙述中正确的是A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中 参考答案:C【解析】在C语言中,注释可以加在程序中的任何位置,选项A)错误。C程序可以分模块写在不同的文件中,编译时再将其组合在一起,选项D)错误。C程序的书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。所以正确答案为选项C)。12.以下选项中不合法的标识符是 A)print B)FOR C)& a D)_00 参考答案:C【解析】C语言合法标识符的命名规则是:标识符只能由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。因为选项C)中的标识符的第一个字符为&,所以选项C)为本题的正确答案。13.以下选项中不属于字符常量的是 A)C B)C C)xCC D)072 参考答案:B【解析】在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量;而选项B)是用双引号括起来的字符,表示一个字符串常量,所以正确答案为选项B)。14. 设变量已正确定义并赋值,以下正确的表达式是 A)xy*5xz B)int(15.8%5) C)xyz5,y D)x25%5.0 参考答案:C【解析】求余运算符%两边的运算对象必须是整型,而选项B)和D)中 %两边的运算对象有浮点整数据,所以选项B)和D)是错误的表达式;在选项A)中赋值表达式的两边出现相同的变量x,也是错误的;选项C)是一个逗号表达式,所以正确答案为C)。15. 以下定义语句中正确的是 A)intab0; B)charA651,bb; C)float a1,*b&a,*c&b; D)doublea0.0;b1.1; 参考答案:B【解析】本题考查变量的定义方法。如果要一次进行多个变量的定义,则在它们之间要用逗号隔开。因此选项A)和D)错误;在选项C)中,变量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量b;所以正确答案为B)。16. 有以下程序段:charch;intk;cha;k12;printf(%c,%d,ch,ch,k);printf(k%dn,k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零或不定值C)a,97,12k12D)a,97,k12 参考答案:D【解析】输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出。所以第一个输出语句输出的结果为a,97,第二个输出语句输出的结果为k12,所以选项D)为正确答案。17.已知字母A的ASCII码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是A)kkA& kkA|kka&(kk32)ZD)isalpha(kk)&(kk2& c2&c2& c2& cb) ab;ca; if(c!a) cb; printf(%d,%d,%dn,a,b,c);其输出结果是A)程序段有语法错B)3,5,3C)3,5,5D)3,5,7 参考答案:B【解析】两个if语句的判断条件都不满足,程序只执行了ca这条语句,所以变量c的值等于3,变量b的值没能变化,程序输出的结果为3,5,3。所以正确答案为选项B)。20. 有以下程序:#includemain()intx1,y0,a0,b0; switch(x) case 1: switch(y) case 0: a; break; case 1: b; break; case 2:a; b; break; case 3:a; b; printf(a%d,b%dn,a,b);程序的运行结果是A)a1,b0B)a2,b2C)a1,b1D)a2,b1 参考答案:D【解析】本题考查了 switch结构的内容。在C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case 常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的 case 2分支。最后a和b的值分别为2和1。21.有以下程序:#includemain()intx8; for(;x0;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, 参考答案:D【解析】在本题中,程序每执行一次循环x的值就减2,循环共执行4次。当x的值为8,4,2时,printf语句先输出x的值,再将x的值减1。而当x为6时,if语句条件成立,程序先将x的值减1,再将其输出。所以输出结果为选项D)。22.以下不构成无限循环的语句或语句组是A)n=0; do+n;while(n=0);B)n=0; while(1)n+;C)n=10; while(n);n-;D)for(n=0,i=1;i+) n+=i; 参考答案:A【解析】项A)中变量n的值,先自加1,再进行循环条件判断,此时循环条件n0不成立,跳出循环。所以正确答案为A)。23有以下程序:#includemain()inta 1,2,3,4,y,*p&a3; -p;y*p;printf(y%dn,y);程序的运行结果是A)y0 B)y1C)y2 D)y3 参考答案:D【解析】在程序中指针变量p初始指向a3,执行p减1后,p指向a2,语句y*p的作用是把a2的值赋给变量y,所以输出为y3。正确答案为D)。24.以下错误的定义语句是A)intx30,1,1,2,3;B)intx431,2,3,1,2,3,1,2,3,1,2,3;C)intx41,2,3,1,2,3,1,2,3,1,2,3;D)intx31,2,3,4; 参考答案:C【解析】本题考查的是二维数组的定义和初始化方法。C语言中,在定义并初始化二维数组时,可以省略数组的第一维的长度,但是不能省略第二维的长度。故选项C)错误。25.设有如下程序段:chars20Beijing,*p;ps;则执行ps;语句后,以下叙述正确的是A)可以用*p表示s0B)s数组中元素的个数和p所指字符串长度相等C)s和p都是指针变量D)数组s中的内容和指针变量p中的内容相同 参考答案:A【解析】语句ps的作用是把字符数组s的首地址作为初值赋给了指针变量p,并且使p指向了字符数组s的第一个字符s0。 26.若有定义:inta23;,以下选项中对a数组元素正确引用的是A)a2!1 B)a23C)a03 D)a12!1 参考答案:D【解析】C语言中数组下标是从0开始的,所以二维数组a23的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示的是数组元素a00。所以正确答案为D)。27.有定义语句:chars10;,若要从终端给s输入5个字符,错误的输入语句是A)gets(&s0); B)scanf(%s,s1);C)gets(s); D)scanf(%s,s1); 参考答案:D【解析】在格式输入中,要求给出的是变量的地址,而D)答案中给出的s1是一个值的表达式。28.以下叙述中错误的是A)在程序中凡是以#开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#defineMAX是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的 参考答案:D【解析】C语言中的预处理命令以符号#开头,这些命令是在程序编译之前进行处理的,选项D)的描述错误。故答案选D)。29.以下结构体类型说明和变量定义中正确的是A)typedef struct int n; char c;REC; REC t1,t2;B)struct REC; int n; char c; REC t1,t2;C)typedef struct REC ; int n=0; char c=A;t1,t2;D)struct int n; char c;REC; REC t1,t2; 参考答案:A【解析】本题考查的是typedef的用法和结构体变量的定义方法。typedef可用于声明结构体类型,其格式为typedef struct 结构元素定义结构类型;。本题正确答案为A)。30.以下叙述中错误的是A)gets函数用于从终端读入字符串B)getchar函数用于从磁盘文件读入字符C)fputs函数用于把字符串输出到文件D)fwrite函数用于以二进制形式输出数据到文件 参考答案:B【解析】getchar函数的作用是从终端读入一个字符。31.有以下程序:#includemain()ints121,2,3,4,4,3,2,1,1,1,2,3,c50,i; for(i0;i12;i)csi; for(i1;i5;i)printf(%d,ci); printf(n); 程序的运行结果是A)1 2 3 4 B)2 3 4 4C)4 3 3 2D)1 1 2 3 参考答案:C【解析】在for(i0;i12;i) csi中,数组元素si的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2。所以选项C)正确。32.有以下程序:#includevoidfun(int*s,intn1,intn2)inti,j,t; in1;jn2; while(ij)tsi;sisj;sjt;i;j;main()inta101,2,3,4,5,6,7,8,9,0,k; fun(a,0,3);fun(a,4,9);fun(a,0,9); for(k0;kl0;k)printf(%d,ak);printf(n);程序的运行结果是A)0987654321 B)4321098765C)5678901234 D)0987651234 参考答案:C【解析】函数fun(int *s,int n1,int n2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(a,0,3)执行完后,数组a124,3,2,1,5,6,7,8,9,0;再执行fun(a,4,9),数组 a124,3,2,1,0,9,8,7,6,5;再执行fun(a,0,9)后,数组a125,6,7,8,9,0,1,2,3,4。所以正确答案为C)。33有以下程序:#include#includevoidfun(char*s,intn)char*t; inti,j; for(i0;in1;i) for(ji1;jstrlen(sj)tsi;si=sj;sjt;main()char*ssbcc,bbcc,xy,aaaacc,aabcc; fun(ss,5);printf(%s,%sn,ss0,ss4);程序的运行结果是A)xy,aaaacc B)aaaacc,xyC)bcc,aabcc D)aabcc,bcc 参考答案:A【解析】函数fun(char *s,int n)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主函数中执行fun(ss,5)语句后,*ssxy, bcc, bbcc, aabcc, aaaacc,ss0,ss4的输出结果为xy,aaaacc。所以选项A)为正确答案。34.有以下程序:#includeint f(intx)inty; if(x0|x1)return(3); yx*xf(x2); returny;main()intz; zf(3);printf(%dn,z);程序的运行结果是A)0 B)9C)6 D)8 参考答案:C【解析】函数int f(int x)是一个递归函数调用,当x的值等于0或1时,函数值等于3,其他情况下yx2f(x2)。所以在主函数中执行语句zf(3)时,y3*3-f(3-2)=9-f(1)=6。35.有以下程序:#includevoidfun(char*a,char*b)while(*a*)a; while(*b*a)b;a;main()char*s*a*b*,t80; fun(s,t);puts(t);程序的运行结果是A)*a*b B)a*bC)a*b* D)ab 参考答案: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.有以下程序:#include#includetypedefstructchar name9;char sex;float score2;STU;voidf(STUa)STUbZhao,m,85.0,90.0;inti; strcpy(a.name,b.name); asexb.sex; for(i0;i2;i)ascoreib.scorei;main()STUcQian,f,95.0,92.0; f(c); printf(%s,%c,%2.0f,%2.0fn,c.name,c.sex,c.score0,c.score1);程序的运行结果是A)Qian,f,95,92 B)Qian,m,85,90C)Zhao,f,95,92 D)Zhao,m,85,90 参考答案:A【解析】本题考查的是函数调用时的参数传递问题。程序在调用函数f时,传给函数f的参数只是结构变量c在栈中的一个复制,函数f所做的所有操作只是针对这个数据复制进行的修改,这些都不会影响变量c的值。37.有以下程序:#includemain()FILE*fp;inta101,2,3,i,n; fpfopen(d1.dat,w); for(i0;i3;i)fprintf(fp,%d,ai); fprintf(fp,n); fclose(fp); fpfopen(d1.dat,r); fscanf(fp,%d,&n); fclose(fp); printf(%dn,n);程序的运行结果是A)12300 B)123C)1 D)321 参考答案:B【解析】在函数中首先把整型数组a10中的每个元素写入文件d1.dat中,然后再次打开这个文件,把文件d1.dat中的内容读入到整型变量n中,最后输出变量n的值。所以正确答案为B)。38.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是A)ab B)a|bC)a&b D)a4 参考答案:A【解析】本题考查的是位运算的知识。对于任何二进制数,与1进行异或运算会让其取反,而与0进行异或运算不会产生任何变化,故本题答案选A)。39.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是A)auto和register B)extern和registerC)auto和static D)static和register 参考答案:A【解析】在C语言中只有自动变量和寄存器变量在使用时才占用内存单元。所以正确答案为A)。40.设有定义语句int(*f)(int);,则以下叙述正确的是A)f是基类型为int的指针变量B)f是指向函数的指针变量,该函数具有一个int类型的形参C)f是指向int类型一维数组的指针变量D)f是函数名,该函数的返回值是基类型为int类型的地址 参考答案:B【解析】本题考查的是指向函数的指针。语句int (* f)(int);是对一个函数的声明,其中f是指向该函数的指针,该函数有一个整型的参数,函数返回值类型为整型。故答案选 B)。1.测试用例包括输入值集和_【1】_值集。 参考答案:输出【解析】 软件测试用例是为了有效发现软件缺陷而编写的包含测试目的、测试步骤、期望测试结果的特定集合。正确认识和设计软件测试用例可以提高软件测试的有效性,便于测试质量的度量,增强测试过程的可管理性。软件测试用例包括:输入值集和输出值集。测试用例是软件测试的核心。2.深度为5的满二叉树有_【2】_个叶子结点。 参考答案:16【解析】 在满二叉树中,叶子结点数目的计算公式为2n1,其中n为树的深度。3.设某循环队列的容量为50,头指针front5(指向队头元素的前一位置),尾指针rear29(指向队尾元素),则该循环队列中共有_【3】_个元素。 参考答案:24【解析】 实现循环队列时,头指针指向第一个元素的前一个空间,尾指针指向最后一个元素。 因此,此时队列中6,7,8,.,29这24个空间存有元素,即队列中有29524个元素。4.在关系数据库中,用来表示实体之间联系的是_【4】_。 参考答案:关系【解析】 在关系数据库中,用关系(二维表结构)表示实体及其之间联系的模型称为关系数据模型。5.在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,_【5】_负责数据的模式定义与数据的物理存取构建。 参考答案:数据定义语言【解析】 数据定义语言负责数据的模式定义与数据的物理存取构建;数据操纵语言负责数据的操纵,如查询、增加、删除、修改等;数据控制语言负责数据完整性、安全性的定义与检查,以及并发控制、故障恢复等。6.已有定义:charc;inta1,b;(此处c的初值为空格字符),执行b!c&a;后b的值为_【6】_。 参考答案:0【解析】字符空格的ASCII码不为0,所以本题中表达式!c的值为0, b 0&1的结果显然为0。7.设变量已正确定义为整型,则表达式ni2,i,i的值为_【7】_。 参考答案:3【解析】本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔的各表达式的值,整个逗号表达式的值等于其中的最后一个表达式的值。本题中,首先i被赋值为2,再自加1,最后i的值计算为3。8.若有定义:intk;,以下程序段的输出结果是_【8】_。for(k2;k6;k,k)printf(#%d,k); 参考答案:#2#4【解析】在for循环语句中,自变量k的自增表达式为k,k。这是一个逗号表达式,所以输出结果为#2#4。9.以下程序的定义语句中,x1的初值是_【9】_,程序运行后输出的内容是_【10】_。#includemain()intx1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,*p4,i; for(i0;i4;i) pi&x2*i+1;printf(%d,pi0); printf(n); 参考答案:2 2468 【解析】在主函数中根据整型数组x的定义可知,x1的初值等于2。在for循环语句中,当i0时,p0&x1,p002; 当i1时,p1&x3,p104;当i2时,p2&x5,p206;当i3时,p3&x7,p308。所以程序输出的结果为2 4 6 8。10.以下程序的输出结果是_【11】_。#includevoidswap(int*a,int*b)int*t; ta;ab;bt;main()inti3,j5,*p&i,*q&j; swap(p,q);printf(%d%dn,*p,*q); 参考答案:3 5【解析】函数swap(int *a,int *b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,参形指针变量a和b分别指向i和j,在swap(int *a,int *b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为3 5。 11.以下程序的输出结果是_【12】_。#includemain()inta52,4,6,8,10,*p; pa;p; printf(%d,*p); 参考答案:4【解析】在主函数中,语句pa;p使用指针p指向数组a1,所以输出结果为4。12.以下程序的输出结果是_【13】_。#includevoidfun(intx)if(x/20)fun(x/2); printf(%d,x);main()fun(3);printf(n); 参考答案:1 3【解析】在主函数中调用fun(3)时,实参3传递给形参x。在fun(x)内,执行第一条语句,输出1,然后执行第二条语句,输出3,所以结果为1 3。13.以下程序中函数fun的功能是:统计person所指结构体数组中所有性别(sex)为M的记录的个数,存入变量n中,并作为函数值返回。请填空。#include#defineN3typedefstruct intnum;charnam10;charsex;SS;intfun(SSperson)inti,n0; for(i0;iN;i) if(_【14】_M)n; returnn;main() SS WN1,AA,F,2,BB,M,3,CC,M;intn; nfun(W);printf(n%dn,n); 参考答案:personi.sex【解析】在函数fun(SS person)中对person的性别进行判断,所以其正确的调用格式为personisex。14.以下程序的功能是从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。#includemain() FILE *fp; charch; fpfopen(_【15】_); chfgetc(fp); while(!feof(fp)putchar(ch);chfgetc(fp); putchar(n); fclose(fp); 参考答案:filea.dat,r【解析】fopen函数的调用方式通常为 fopen(文件名,使用文件方式)。本题中要求程序可以打开filea.dat文件,并且读取文件中的内容。所以空白处应当填入 filea.dat,r。2008年9月真题1.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后依次出栈,则元素出栈的顺序是_。A) 12345ABCDE B) EDCBA54321C) ABCDE12345 D) 54321EDCBA 参考答案:B【解析】栈的特点是先进后出,所以全部入栈后再全部出栈所得的序列顺序必然与入栈序列的顺序相反。2.下列叙述中正确的是_。A) 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B) 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C) 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D) 循环队列中元素的个数是由队头指针和队尾指针共同决定的 参考答案:D【解析】循环队列是线性表的一种,所以选项A)错误。循环队列的入队和出队需要队尾指针和队头指针共同完成,所以选项B)和C)错误。3.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是_。A) O(n) B) O(n2) 参考答案:C【解析】二分查找法也称为折半查找法。它的基本思想是:将n个元素分成个数大致相同的两半,取an/2与欲查找的x作比较,如果xan/2,则找到x,算法终止;如果xan/2,则只要在数组a的右半部继续搜索x。每次余下n/(2i)个元素待比较,当最后剩下一个时,即n/(2i)1。故,n2i; 所以。4.下列叙述中正确的是_。A) 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B) 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C) 顺序存储结构能存储有序表,链式存储结构不能存储有序表D) 链式存储结构比顺序存储结构节省存储空间 参考答案:A【解析】顺序存储方式是把逻辑上相邻的结点存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。其优点是占用最少的存储空间,所以选项D)错误。顺序存储结构可以存储如二叉树这样的非线性结构,所以选项B)错误。链式存储结构也可以存储线性表,所以选项C)错误。5.数据流图中带有箭头的线段表示的是_。A) 控制流 B) 事件驱动C) 模块调用 D) 数据流 参考答案:D【解析】在数据流图中,矩形表示数据的外部实体,圆角的矩形表示变换数据的处理逻辑,双横线表示数据的存储,箭头表示数据流。6.在软件开发中,需求分析阶段可以使用的工具是_。A) NS图 B) DFD图C) PAD图 D) 程序流程图 参考答案:B【解析】数据流图简称DFD图,采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。所以DFD图可以用于需求分析阶段。7.在面向对象方法中,不属于对象基本特点的是_。A) 一致性 B) 分类性C) 多态性 D) 标识唯一性 参考答案:A【解析】对象是面向对象方法中最基本的概念,它的基本特点有:标识唯一性、分类性、多态性、封装性和模块独立性。故本题答案为A)。8.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是_。A) 一对一 B) 一对多C) 多对一 D) 多对多 参考答案:B【解析】一个实体宿舍可以对应多个学生,而一个学生只能对应一个宿舍,所以宿舍和学生之间是一对多关系。9.在数据管理技术发展的三个阶段中,数据共享最好的是_。A) 人工管理阶段 B) 文件系统阶段C) 数据库系统阶段 D) 三个阶段相同 参考答案:C【解析】人工管理阶段:计算机出现的初期,主要用于科学计算,没有大容量的存储设备。处理方式只能是批处理, 数据不共享,不同程序不能交换数据。文件系统阶段:把有关的数据组织成一种文件,这种数据文件可以脱离程序而独立存在,由一个专门的文件管理系统实施统一管理。但是,数据文件仍高度依赖于其对应的程序,不能被多个程序通用。数据库系统阶段:对所有的数据实行统一规划管理,形成一个数据中心,构成一个数据仓库,数据库中的数据能够满足所有用户的不同要求,供不同用户共享。数据共享性显著增强。故本题答案为C)。10.有三个关系R、S和T如下:RABm1n2SBC1335TABCm13由关系R和S通过运算得到关系T,则所使用的运算为_。A) 笛卡尔积 B) 交C) 并 D) 自然连接 参考答案:D【解析】自然连接是一种特殊的等值连接。当关系R和S有相同的属性组,且该属性组的值相等时的连接称为自然连接。 11.以下叙述中正确的是_。A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句C)简单C语句必须以分号结束D)C语句必须在一行内写完 参考答案:C【解析】函数是C程序的基本组成单位;C语言书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。故本题答案为C)。12.计算机能直接执行的程序是_。A)源程序 B)目标程序C)汇编程序 D)可执行程序 参考答案:D【解析】计算机能直接执行的只能是机器语言程序,源程序和汇编程序都是用高级语言编写的程序,不能被直接执行。目标程序也是不能被直接执行的程序,需要通过系统提供的连接程序与库函数连接装配成可执行程序,才能被计算机执行。所以本题答案为D)。13.以下选项中不能作为C语言合法常量的是_。A)cd B)0.1e6C)a D)011 参考答案:A【解析】选项B)是实型常量,选项C)是字符串常量,选项D)是转义字符常量,都是合法的常量。14.以下选项中正确的定义语句是_。A)doublea;b; B)doubleab7;C)doublea7,b7; D)double,a,b; 参考答案:C【解析】定义变量a和变量b为double类型,并对其赋初值。变量之间应以, 分隔,定义关键字与变量名之间应以空格分隔,语句应以;结尾。15.以下不能正确表示代数式的C语言表达式是_。A)2*a*b/c/dB)a*b/c/d*2C)a/c/d*b*2 D)2*a*b/c*d 参考答案:D【解析】C语言中算术运算符的结合性均为自左向右。选项D)中表达式计算结果是2*a*b*d/c,和题目要求的代数式不一致,因此选项D)不能正确表示题目所给的代数式不一致,因此选项D)不能正确表示题目所给的代数式内容。16.C源程序中不能表示的数制是_。A)二进制 B)八进制C)十进制 D)十六进制 参考答案:A【解析】C语言中整型常量可用十进制、八进制和十六进制3种形式表示。17.若有表达式(w)?(x):(y),则其中与w等价的表达式是_。A)w1 B)w0C)w!1 D)w!0 参考答案:D【解析】条件运算符组成条件表达式的一般形式为:表达式1?表达式2:表达式3。其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式3的值作为条件表达式的值。本题中需要获得表达式w的逻辑值,即w是否为0,不为0则为真,为0则为假。因此正确答案为D)。18.执行以下程序段后,w的值为_。intwA,x14,y15;w(xy)&(wa);A)1 B)NULLC)1 D)0 参考答案:C【解析】根据题目所给条件可知,x|y为1,wa为1,1&1结果为1。因此正确答案为C)。19.若变量已正确定义为int型,要通过语句scanf(%d,%d,%d,&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(代表一个空格符)_。A)1,2,3 B)123C)1, 2, D)1,2,3 参考答案:B【解析】由于scanf格式输入语句中,使用逗号作为输入值的间隔,所以在输入时需要使用逗号隔开。只有选项B)中没有使用逗号,故本题选B)。20.有以下程序段:int a,b,c;a10;b50;c30;if(ab)ab,bc;ca;printf(a%d b%d c%dn,a,b,c);程序的输出结果是_。A)a10 b50 c10 B)a10 b50 c30C)a10 b30 c10 D)a50 b30 c50 参考答案:A【解析】该题考查if条件语句,当条件为真时,将b值赋给a,c值赋给b;当条件为假时,将a值赋给c。该题中if条件为假,所以将a的值赋给c,故a10 b50 c10。21.若有定义语句:int m5,4,3,2,1,i4;,则下面对m数组元素的引用中错误是_。A)mi B)m2*2C)mm0D)mmi 参考答案:C【解析】数组m下标从0到4计算,共5个元素,选项C)中m05,则mm0为m5中,超出了数组m的下标范围。因此正确答案为C)。22.下面的函数调用语句中func函数的实参个数是_。func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8);A)3 B)4C)5 D)8 参考答案:A【解析】C语言函数定义中,参数列表之间使用逗号分隔。该题目中func的函数列表中使用两个逗号,将3个参数分隔开。23.若有定义语句:doublex51.0,2.0,3.0,4.0,5.0,*px;则错误引用x数组元素的是_。A)*p B)x5C)*(p1) D)*x 参考答案:B【解析】x51.0,2.0,3.0,4.0,5.0,说明数组x有 5个元素。下标范围为0到4,选项B)中x5超过了下标范围,故引用错误。24.若有定义语句:chars10123456700;,则strlen(s)的值是_。A)7 B)8C)9 D)10 参考答案:A【解析】strlen(s)即求字符串s的长度,遇到 0 时结束统计。因此选项A)为正确答案。25.以下叙述中错误的是_。A)用户定义的函数中可以没有return语句B)用户定义的函数中可以有多个return语句,以便可以调用一次就返回多个函数值C)用户定义的函数中若没有return语句,则应当定义函数为void类型D)函数的return语句中可以没有表达式 参考答案:B【解析】在函数中允许有多个return语句,但每次调用只能有一个return 语句被执行,因此只能返回一个函数值。 26.以下关于宏的叙述中正确的是_。A)宏名必须用大写字母表示B)宏定义必须位于源程序中所有语句之前C)宏替换没有数据类型限制D)宏调用比函数调用耗费时间 参考答案:C【解析】宏名可以大写,也可以小写。其有效范围为定义命令之后到本源文件结束。宏的调用是字符的替换,没有数据类型限制。27.有以下程序:#includemain()inti,j; for(i3;i1;i) for(j1;j2;j)printf(%d,ij);
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!