




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C语言机试(选择题)模拟试卷6(共9套)(共322题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共15题,每题1.0分,共15分。)1、以下叙述中正确的是()。A、在C语言中,预处理命令行都以“#”开头B、预处理命令行必须位于C源程序的起始位置C、#include必须放在C程序的开头D、C语言的预处理不能实现宏定义和条件编译的功能标准答案:A知识点解析:预处理命令是以“#”号开头的命令,它们不是C语言的可执行命令,这些命令应该在函数之外书写。一般在源文件的最前面书写,但不是必须在起始位置书写,所以B、C错误。C语言的预处理能够实现宏定义和条件编译等功能,所以D错误。2、以下关于宏的叙述中正确的是()。A、宏替换没有数据类型限制B、宏定义必须位于源程序中所有语句之前C、宏名必须用大写字母表示D、宏调用比函数调用耗费时间标准答案:A知识点解析:宏定义写在函数的花括号外面,作用域为其后的程序,通常在文件的最开头,所以B选项中的“宏定义必须位于源程序中所有语句之前”是错误的。宏名一般用大写,但不是必须用大写,所以C选项错误。宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值),所以D选项错误。3、有以下程序:#include#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf("%4.1f\n",S(a+b));}程序运行后的输出结果是()。A、7.5B、31.5C、程序有错无输出结果D、14.0标准答案:C知识点解析:宏定义不是c语句,末尾不需要分号。所以语句“printf("%4.1f、n",S(a+b));”展开后为“printf("%4.1f\n",3.5;*a+b*a+b;);”所以程序会出现语法错误。4、若程序中有宏定义行:#defineN100更哼以下叙述中正确的是()。A、宏定义行中定义了标识符N的值为整数100B、在编译程序对C源程序进行预处理时用100替换标识符NC、上述宏定义行实现将100赋给标识符ND、在运行时用100替换标识符N标准答案:B知识点解析:本题考查预编译相关知识。宏定义在编译程序时做了一个简单的替换,所以选项B正确。5、有以下程序:#include#defineS(x)4*(x)*x+1main(){intk=5,j=2;printf("%d\n",S(k+j));}程序运行后的输出结果是()。A、33B、197C、143D、28标准答案:C知识点解析:本题考查带参数的宏定义。s为带参数的宏定义,运行S(k+j)为4*(k+j)*k+j+1=143,故选项C正确。6、有以下程序:#include#defineSUB(a)(a)-(a)main(){inta=2,b=3,c=5,d;d=SUB(a+b)*c;printf("%d\n",d);}程序运行后的输出结果是()。A、0B、-12C、-20D、10标准答案:C知识点解析:本题考查宏定义。宏定义只是做简单的替换,所以本题中执行语句SUB(a+b)}c=(a+b-(a+b)*c=-20,故答案为C选项。7、有以下程序:#include#definef(x)x*x*xmain(){inta=3,s,t;s=f(a+1);t=f((a+1));printf("%d,%d\n",s,t);}程序运行后的输出结果是()。A、10,64B、10,10C、64,10D、64,64标准答案:A知识点解析:本题考查宏定义。宏定义只是做个简单的替换,所以本题中执行语句f(a+1)=a+l}a+1}a+l=3*a+1=10,f((a+1))=(a+1)*(a+1)*(a+1)=64,所以答案为A选项。8、有以下程序:#include#defineN5#deftne1N+l#definef(x)(x*M)main(){intil,i2;il=f(2);i2=f(1+1);printf("%d%d\n",i1,i2);}程序的运行结果是()。A、127B、1212C、1111D、1l7标准答案:D知识点解析:本题考查宏定义。宏定义只是做简单的替换,所以本题中执行语句f(2)=(2*N+1)=ll,执行语句f(1+1)=(1+1*N+1)=7。因此选项D正确。9、若有以下程序:#include#defineS(x)x*x#defineT(x)S(x)*S(x)main(){intk=5,j=2;printf("%d,%d\n",S(k+j),T(k+j));}则程序的输出结果是()。A、17,289B、49,2401C、17,37D、49,289标准答案:C知识点解析:本题考查宏定义。宏定义只是做简单的替换,执行语句S(k+j)=k+j*k+j=17,T(k+j)=S(k+j)*S(k+j)=k+j*k+j*k+j*k+j=37,因此选项C正确。10、若有以下程序:#include#defineS(x)(x)*(x)#defineT(x)S(x)/S(x)+1main(){intk=3j=2;printf("%d,%d\n",S(k+j),T(k+j));}则程序的输出结果是()。A、11,2B、25,2C、11,12D、25,26标准答案:D知识点解析:本题考查宏定义。宏定义只是做简单的替换,执行语句s(k+j)=(k+j)*(k+j)=25,T(k+j)=S(k+j)/S(k+j)+1=(k+j)*(k+j)/(k+j)*(k+j)+1=26,因此选项D正确。11、有以下程序:#include#defineN2#defineMN+1#defineNUM(M4-1)*M/2main(){printf("%d\n",NUM);}程序运行后的输出结果是()。A、4B、8C、9D、6标准答案:B知识点解析:本题考查宏定义。宏定义只是做简单的替换,执行语句NUM=(N+1+1)*N+1/2=8,故选项B正确。12、有以下程序:#include#defineSUB(X,Y)(X+1)*Ymain(){inta=3,b=4;printf("%d\n",SUB(a++,b++));}程序运行后的输出结果是()。A、25B、20C、12D、16标准答案:D知识点解析:本题考查宏定义。宏定义只是做简单的替换,++运算符是先使用后自增l,所以语句SUB(a++,b++)=(a+++1)*b++(a+++1)木b++=(3+1)*4=16,选项D正确。13、以下叙述中错误的是()。A、C程序对预处理命令行的处理是在程序执行过程中进行的B、预处理命令行的最后不能以分号表示结束C、#defineMAX是合法的宏定义命令行D、在程序中凡是以“#”开始的语句行都是预处理命令行标准答案:A知识点解析:本题考查预处理命令行。预处理是在程序编译之前进行的,所以A选项错误。14、下面选项中关于编译预处理的叙述正确的是()。A、预处理命令行必须使用分号结尾B、凡是以#号开头的行,都被称为编译预处理命令行C、预处理命令行不能出现在程序的最后一行D、预处理命令行的作用域是到最近的函数结束处标准答案:B知识点解析:本题考查预处理命令行。预处理命令行不能以分号结尾,所以A选项错误。预处理命令行可以出现在程序的最后一行,预处理命令行作用域是整个文件,所以C、D选项错误。15、有以下程序段:int*p;p=_______malloc(sizeof(int));若要求使p指向一个int型的动态存储单元,在横线处应填人的是()。A、(int*)B、intC、int*D、(*int)标准答案:A知识点解析:本题考查malloc函数的用法。题目中要求p指向一个int型的动态存储单元,那么就应该将分配的存储单元转化为int型,所以选项A正确。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、下列链表中,其逻辑结构属于非线性结构的是A、二叉链表B、循环链表C、双向链表D、带链的栈标准答案:A知识点解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。循环链表具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为A选项。2、设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A、15B、16C、20D、0或35标准答案:D知识点解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。在循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只不过当头尾指针指向向量上界时,其加1操作的结果是指向向量的下界0。由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。答案为D选项。3、下列关于栈的叙述中,正确的是A、栈底元素一定是最后入栈的元素B、栈顶元素一定是最先入栈的元素C、栈操作遵循先进后出的原则D、以上说法均错误标准答案:C知识点解析:栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或“后进先出”表,所以选择C。4、在关系数据库中,用来表示实体间联系的是A、属性B、二维表C、网状结构D、树状结构标准答案:B知识点解析:关系模型实体间的联系采用二维表来表示,简称表。选项C为网状模型实体间的联系,选项D为层次模型实体间的联系,选项A属性刻画了实体。5、公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是A、1:1联系B、m:1联系C、1:m联系D、m:n联系标准答案:C知识点解析:两个实体集间的联系实际上是实体集间的函数关系,主要有一对一联系(1:1)、一对多联系(1:m)、多对一联系(m:1)、多对多联系(m:n)。对于每一个实体部门,都有多名职员,则其对应的联系为一对多联系(1:m),答案选C。6、有两个关系R和S如下:则由关系R得到关系S的操作是()。A、选择B、投影C、自然连接D、并标准答案:A知识点解析:由关系R到关系S为一元运算,排除C和D。关系S是关系R的一部分,是通过选择之后的结果,因此选A。7、数据字典(DD)所定义的对象都包含于A、数据流图(DFD图)B、程序流程图C、软件结构图D、方框图标准答案:A知识点解析:在数据流图中,对所有元素都进行了命名,所有名字的定义集中起来就构成了数据字典。因此选A,而B,C,D都不符合。8、软件需求规格说明书的作用不包括A、软件验收的依据B、用户与开发人员对软件要做什么的共同理解C、软件设计的依据D、软件可行性研究的依据标准答案:D知识点解析:软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。软件需求规格说明书有以下几个方面的作用。①便于用户、开发人员进行理解和交流,B正确;②反映出用户问题的结构,可以作为软件开发工作的基础和依据,C正确;③作为确认测试和验收的依据,A正确。9、下面属于黑盒测试方法的是A、语句覆盖B、逻辑覆盖C、边界值分析D、路径覆盖标准答案:C知识点解析:黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法,答案为C。而A、B、D均为白盒测试方法。10、下面不属于软件设计阶段任务的是A、软件总体设计B、算法设计C、制定软件确认测试计划D、数据库设计标准答案:C知识点解析:从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。所以A、B、D正确,C为软件测试阶段的任务。11、以下叙述中正确的是A、N-S流程图只能描述简单的顺序结构的程序B、程序的算法只能使用流程图来描述C、结构化程序的三种基本结构是循环结构、选择结构、顺序结构D、计算机可以直接处理C语言程序,不必进行任何转换标准答案:C知识点解析:N-S流程图是可以描述循环结构,选择结构,顺序结构等多种结构的程序,所以A选项错误,程序的算法可以用流程图?伪代码,N-S结构图等方法表示,所以B选项错误,计算机只能处理二进制表示的目标程序,不能直接执行由C语言编写的源程序,所以D选项错误。12、以下叙述中正确的是A、书写源程序时,必须注意缩进格式,否则程序会有编译错误B、程序的主函数名除main外,也可以使用Main或_mainC、程序可以包含多个主函数,但总是从第一个主函数处开始执行D、在C程序中,模块化主要是通过函数来实现的标准答案:D知识点解析:C语言的源程序中对缩进没有要求,所以A选项错误?C语言中区分大小写,main函数不能写成Main或_main,所以B选项错误,一个C程序有且只有一个主函数,所以C选项错误。13、C语言中double类型数据占字节数为A、4B、8C、12D、16标准答案:B知识点解析:double型数据在内存中占8个字节,float型数据占4个字节,int型数据占2个字节,char型数据占1个字节,所以选择B。14、以下叙述中正确的是A、语言中的关键字不能作变量名,但可以作为函数名B、标识符的长度不能任意长,最多只能包含16个字符C、标识符总是由字母、数字和下划线组成,且第一个字符不得为数字D、用户自定义的标识符必须"见名知义",如果随意定义,则会出编译错误标准答案:C知识点解析:C语言中的关键字即不能做变量名也不能做用户函数名,所以A错误,标识符的命名规则,即由下划线字母数字组成,且必须以下划线和字母开始,也不能和关键字一致,不同C语言规定标识符的有效长度可能会不同,但没有限制最大长度,所以B错误,用户定义的标识符只要满足标识符命名规则没有特殊要求,不必一定"见名知义",所以D错误。15、以下叙述中正确的是A、由printf输出的数据都隐含左对齐B、scanf和printf是C语言提供的输入和输出语句C、赋值语句是一种执行语句,必须放在函数的可执行部分D、由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的标准答案:C知识点解析:scanf和printf是C语言提供的输入输出函数,所以B错误,由printf输出的数据都隐含右对齐,所以A错误,Printf输出数据所占的宽度由系统决定,所以D错误。16、以下叙述中正确的是A、复合语句在语法上包含多条语句,其中不能定义局部变量B、花括号对{}只能用来表示函数的开头和结尾,不能用于其他目的C、空语句就是指程序中的空行D、当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键)前,可以任意修改标准答案:D知识点解析:复合语句可以包含多条语句,在其中可以定义局部变量,所以A错误,花括号对{}不仅用来表示函数的开头和结尾,也可以用于表示复合语句,所以B错误,C语言中的语句必须以分号";"结束,所以空语句表示为";",不是空行,所以C错误。17、以下叙述中正确的是A、在C语言中,逻辑真值和假值分别对应1和0B、关系运算符两边的运算对象可以是C语言中任意合法的表达式C、对于浮点变量x和y,表达式:x==y是非法的,会出编译错误D、分支结构是根据算术表达式的结果来判断流程走向的标准答案:B知识点解析:A选项中,在C语言中,逻辑真值对应非0;C选项中,表达式:x==y是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。因此B选项正确。18、以下叙述中正确的是A、对于逻辑表达式:a++||b++,设a的值为1,则求解表达式的值后,b的值会发生改变B、对于逻辑表达式:a++&&b++,设a的值为0,则求解表达式的值后,b的值会发生改变C、else不是一条独立的语句,它只是if语句的一部分D、关系运算符的结果有三种:0,1,-1标准答案:C知识点解析:B选项和A选项中,对于逻辑表达式,其中b的值不会因为表达式的结果发生改变;D选项中,关系运算符的结果有"真"和"假"两种。因此C选项正确。19、以下叙述中正确的是A、continue语句使得整个循环终止B、break语句不能用于提前结束for语句的本层循环C、使用break语句可以使流程跳出switch语句体D、在for语句中,continue与break的效果是一样的,可以互换标准答案:C知识点解析:break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,即满足条件时便跳出循环。continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。A、B和D三个选项中均有错误。因此C选项正确。20、以下叙述中正确的是A、循环发生嵌套时,最多只能两层B、三种循环for,while,do-while可以互相嵌套C、循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误D、for语句的圆括号中的表达式不能都省略掉标准答案:B知识点解析:A选项中,循环发生嵌套时,没有规定层数;C选项中,循环嵌套时,书写代码时没有要求必须缩进;D选项中,for语句的圆括号中的表达式都可以省略掉。因此B选项正确。21、下面选项中合法的字符常量是A、XB、’X’C、’abc’D、’\’标准答案:B知识点解析:字符常量是用单引号括起来的一个字符。A选项中,使用双引号,所以是错误的;C选项中,’abc’是字符串,字符常量只能是单个字符,不能是字符串;D选项中,以反斜线"\"开头的是转义字符。因此B选项正确。22、以下叙述中正确的是A、转义字符要用双引号括起来,以便与普通的字符常量区分开B、字符常量在内存中占2个字节C、字符常量需要用单引号括起来D、字符常量是不能进行关系运算的标准答案:C知识点解析:B选项中,字符常量在内存中占1个字节;A选项中,转义字符是以反斜线"\"开头,后跟一个或几个字符;D选项中,字符常量可以进行关系运算,不能参与数值运算。因此C选项正确。23、以下叙述中正确的是A、用户自己定义的函数只能调用库函数B、实用的C语言源程序总是由一个或多个函数组成C、不同函数的形式参数不能使用相同名称的标识符D、在C语言的函数内部,可以定义局部嵌套函数标准答案:B知识点解析:A选项中,"用户自己定义的函数只能调用库函数"描述是不正确的,也可以调用自定义函数;C选项中,对于不同函数的形式参数可以使用相同名称的标识符;D选项中,关于函数的定义不可以嵌套,但函数的调用可以嵌套。因此B选项正确。24、以下叙述中正确的是A、int*p1;int**p2;int*p3;都是合法的定义指针变量的语句B、指针变量只能通过求地址运算符(&)来获得地址值C、语句p=NULL;与p=\0;是等价的语句D、语句p=NULL;执行后,指针p指向地址为0的存储单元标准答案:A知识点解析:B选项描述不正确,指针变量可以通过求地址运算符(&)来获得地址值,可以通过指针变量获得地址值,还可以通过标准函数获得地址值;C选项中,p=NULL;和p=0;或p=’\0’;等价;D选项中,语句p=NULL;执行后,指针p并不是指向地址为0的存储单元,而是具有一个确定的值-"空"。因此A选项正确。25、以下叙述中正确的是A、即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同B、如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息C、设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL;D、指针变量之间不能用关系运算符进行比较标准答案:B知识点解析:A选项描述不正确,指针变量的赋值只能赋予地址,决不能赋予任何其它数据,否则将引起错误;C选项中,p=NULL;和p=0;是等价的;D选项中,指向同一数组的两指针变量进行关系运算可表示它们所值数组元素之间的关系。因此B选项正确。26、以下叙述中正确的是A、一条语句只能定义一个数组B、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元C、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式D、在引用数组元素时,下标表达式可以使用浮点数标准答案:B知识点解析:A选项中,一条语句只能定义一个数组是不准确的,可以通过一条语句定义多个数组;C选项中,数组说明符的一对方括号中可以是整型常量,可以是整型常量表达式;D选项中,在引用数组元素时,下标表达式必须是整型的。因此B选项正确。27、以下叙述中正确的是A、数组下标的下限是1B、数组下标的下限由数组中第一个非零元素的位置决定C、数组下标的下限由数组中第一个被赋值元素的位置决定D、charc1,c2,*c3,c4[40];是合法的变量定义语句标准答案:D知识点解析:数组下标的下限是0。因此D选项正确。28、以下叙述中正确的是A、语句inta[8]={0};是合法的B、语句inta[]={0};是不合法的,遗漏了数组的大小C、语句chara[2]={"A","B"};是合法的,定义了一个包含两个字符的数组D、语句chara[3];a="AB";是合法的,因为数组有三个字符空间的容量,可以保存两个字符标准答案:A知识点解析:B选项中,如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数;C选项中,chara[2]={"A","B"};不合法,应为chara[2]={’A’,’B’};;D选项中,用字符串方式赋值比用字符逐个赋值要多占1个字节,在该选项中应为3个字节。因此A选项正确。29、下面选项中的程序段,没有编译错误的是A、char*sp,s[10];sp="Hello";B、char*sp,s[10];s="Hello";C、charstr1[10]="computer",str2[10];str2=str1;D、charmark[];mark="PROGRAM";标准答案:A知识点解析:本题考查字符数组的初始化以及指向字符串的指针,B选项不能直接将字符串赋值给数组名,C选项不能将两个字符数组直接互相赋值,D选项中不能这样定义charmark[],必须指定长度或者直接初始化。30、以下叙述中正确的是A、字符串常量"str1"的类型是:字符串数据类型B、有定义语句:charstr1[]="str1";,数组str1将包含4个元素C、下面的语句用赋初值方式来定义字符串,其中,’\0’是必须的charstr1[]={’s’,’t’,’r’,’1’,’\0’};D、字符数组的每个元素可存放一个字符,并且最后一个元素必须是’\0’字符标准答案:C知识点解析:本题考查字符数组的相关操作,B选项中数组str1包含了5个元素,其中有结尾符,A选项中str1的类型不是字符串类型,字符数组的最后一个元素可以不是’\0’字符。31、以下叙述中正确的是A、字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组B、charca[3][5]={"A","BB","CCC"};是不合语法的C、charca[][5]={"A","BB","CCC"};是不合语法的D、char*ca[3]={"A","BB","CCC"};是不合语法的标准答案:A知识点解析:本题考查字符串数组的相关知识,选项B、C、D都是合语法的。32、以下叙述中正确的是A、两个字符串可以用关系运算符进行大小比较B、函数调用strlen(s);会返回字符串s实际占用内存的大小(以字节为单位)C、C语言本身没有提供对字符串进行整体操作的运算符D、当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和标准答案:C知识点解析:本题考查字符串处理函数strlen、strcat、strcmp。B选项中strlen返回的是字符串s实际占用内存大小加上结尾符,A选项中不能用关系运算符进行大小比较,可以使用strcmp。D选项当使用连接函数strcat时,内存空间会减少一个字符位置。33、以下叙述中正确的是A、如果函数带有参数,就不能调用自己B、所有函数均不能接受函数名作为实参传入C、函数体中的语句不能出现对自己的调用D、函数名代表该函数的入口地址标准答案:D知识点解析:本题考查函数调用相关知识,B选项中函数可以接受函数名作为实参传入,引用函数名也是指针,C、A选项是错误的,因为递归函数就能调用自己。34、以下叙述中正确的是A、局部变量不能被说明为staticB、只有全局变量才有自己的作用域,函数中的局部变量没有作用域C、只有在函数内部定义的变量才是局部变量D、只要是用户定义的标识符,都有一个有效的作用域标准答案:D知识点解析:本题考查局部变量和全局变量作用域,B选项中局部变量也有作用域,C选项中,函数内部定义的也可能是全局变量,A选项错误,因为可以定义个静态局部变量。35、下面选项中关于编译预处理的叙述正确的是A、预处理命令行必须使用分号结尾B、凡是以#号开头的行,都被称为编译预处理命令行C、预处理命令行不能出现在程序的最后一行D、预处理命令行的作用域是到最近的函数结束处标准答案:B知识点解析:本题考查预编译的预编译处理命令行,预处理命令行不能以分号结尾,所以A选项错误,预处理命令行可以出现在程序的最后一行,预处理命令行作用域是整个文件。36、以下叙述中正确的是A、使用typedef说明新类型名时,其格式是:typedef新类型名原类型名;B、在程序中,允许用typedef来说明一种新的类型名C、使用typedef说明新类型名时,后面不能加分号D、在使用typedef改变原类型的名称后,只能使用新的类型名标准答案:B知识点解析:本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,选项A总新类型名应该在原类型名之后,C选项中后面要加分号,D选项中可以使用原类型名。37、以下叙述中正确的是A、结构体类型中各个成分的类型必须是一致的B、结构体类型中的成分只能是C语言中预先定义的基本数据类型C、在定义结构体类型时,编译程序就为它分配了内存空间D、一个结构体类型可以由多个称为成员(或域)的成分组成标准答案:D知识点解析:本题考查结构体类型,结构体类型中的成分可以是结构体,所以B选项错误,定义结构体时编译程序并不会给它分配内存空间,所以C选项错误,结构体中各个成分的类型可以是不一样的,所以A选项错误。38、以下叙述中正确的是A、使用typedef定义新类型名后,新类型名与原类型名实际上是等价的B、结构体类型中的各个成分均不能是数组或指针C、结构体类型的变量,不能在声明结构体类型组成时一起定义D、元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义标准答案:A知识点解析:本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,结构体类型中的成分可以是数组和指针,所以B选项错误,结构体类型的变量可以在声明结构体的时候一起定义,C选项错误,D选项中可以一起定义。39、下面选项中关于位运算的叙述正确的是A、位运算的对象只能是整型或字符型数据B、位运算符都需要两个操作数C、左移运算的结果总是原操作数据2倍D、右移运算时,高位总是补0标准答案:A知识点解析:本题考查位运算。按位取反只需要一个操作数,所以B选项错误,左移一位是原操作数的2倍,其他情况不是,比如左移两位就是原操作数的4倍,所以C选项错误,右移运算时,高位在某些情况下不是补0。40、下面选项中关于“文件指针”概念的叙述正确的是A、文件指针是程序中用FILE定义的指针变量B、文件指针就是文件位置指针,表示当前读写数据的位置C、文件指针指向文件在计算机中的存储位置D、把文件指针传给fscanf函数,就可以向文本文件中写入任意的字符标准答案:A知识点解析:在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。文件指针不是文件位置指针,所以B、C选项错误,D选项中不可以写入任意的字符。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共39题,每题1.0分,共39分。)1、下面关于算法的叙述中,正确的是()。A、算法的执行效率与数据的存储结构无关B、算法的有穷性是指算法必须能在执行有限个步骤之后终止C、算法的空间复杂度是指算法程序中指令(或语句)的条数D、以上三种描述都正确标准答案:B知识点解析:算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤后结束。2、下列二叉树描述中,正确的是()。A、任何一棵二叉树必须有一个度为2的结点B、二叉树的度可以小于2C、非空二叉树有0个或1个根结点D、至少有2个根结点标准答案:B知识点解析:二叉树是由n≥0个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。二叉树可以是空集合,根可以有空的左子树或空的右子树。二叉树不是树的特殊情况,它们是两个概念。二叉树具有如下两个特点:①非空二叉树只有一个根结点;②每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。3、如果进栈序列为A,B,C,D,则可能的出栈序列是()。A、C,A,D,BB、B,D,C,AC、C,D,A,BD、任意顺序标准答案:B知识点解析:栈的操作原则为后进先出。选项B中出栈顺序可按“A进,B进,B出,C进,D进,D出,C出,A出”实现。4、下列各选项中,不属于序言性注释的是()。A、程序标题B、程序设计者C、主要算法D、数据状态标准答案:D知识点解析:注释一般为序言性注释和功能性注释。序言性注释常位于程序开头部分,它包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期及修改日期等。功能性注释一般嵌在源程序体之中,用于描述其后的语句或程序的主要功能。5、下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。A、内模式B、外模式C、概念模式D、逻辑模式标准答案:A知识点解析:数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式,或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式,或存储模式,或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。6、下列叙述中,不属于软件需求规格说明书的作用的是()。A、便于用户,开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:D知识点解析:软件需求规格说明书有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。7、下列不属于软件工程3个要素的是()。A、工具B、过程C、方法D、环境标准答案:D知识点解析:软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。8、数据库系统在其内部具有3级模式,用来描述数据库中全体数据的全局逻辑结构和特性的是()。A、外模式B、概念模式C、内模式D、存储模式标准答案:B知识点解析:概念模式,也称逻辑模式,是对数据库系统中全局数据逻辑结构的描述,是全体用户应用公共数据视图。它不涉及具体的硬件环境与平台,与具体的软件环境也无关。9、将E-R图转换到关系模式时,实体与联系都可以表示成()。A、属性B、关系C、记录D、码标准答案:B知识点解析:E-R图由实体、实体的属性和实体之间的联系3个要素组成,关系模型的逻辑结构是一组关系模式的集合,将E-R图转换为关系模型:将实体、实体的属性和实体之间的联系转化为关系模式。如表4-1所示。10、某二叉树中度为2的结点有10个,则该二叉树中有()个叶子结点。A、9B、10C、11D、12标准答案:C知识点解析:根据二叉树的性质3:对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。11、以下叙述中正确的是()。A、C程序中注释部分可以出现在程序中任意合适的地方B、C程序的书写格式是固定的,每行只能写一条语句C、构成C程序的基本单位是函数,所有函数名都可以由用户命名D、在对C语言程序进行编译时,可以发现注释行中的拼写错误标准答案:A知识点解析:本题考查的是C语言程序设计的初步知识。选项A,程序中“/*……*/”表示注释部分,注释只是给人看的,对程序的编译和运行不起作用,可以在程序中的任何位置;选项B,C语言的书写格式自由,一行可以写多条语句,一条语句也可以写在不同行上;选项C,一个C程序中必须有且只能有一个由“main”命名的主函数,其他函数由用户自行命名;选项D,程序的注释仅仅是提供阅读之用,并不参与程序的编译,所以编译也就不会发现注释行中的错误。12、下面的程序在编译时产生错误,其出错原因是()。#include<stdio.h>main(){int1_case;floatprintF;printf(’’请输入2个数:’’);scanf(’’%d%f’’,&1_case,&printF);printf(’’%dtha",1_case,printF);}A、定义语句出错,1_case不能作为变量名B、定义语句出错,printF不能用作用户自定义标识符C、定义语句无错,scanf不能作为输入函数使用D、定义语句无错,printf不能输出1_case的值标准答案:A知识点解析:C语言变量名可由数字,字母,下划线构成,但首字符不能为数字。13、以下不正确的转义字符是()。A、’\\’B、’\d’C、’\s’D、’088’标准答案:D知识点解析:“\\”是反斜线符,“’\d’”是整型变量转义字符,“’\s’”是字符串型转义字符,C语言中没有规定“’088’”为转义字符。14、下面程序的运行结果是()。y=5;x=14;y=((x=3*y,x+6),x-1);printf(’’x=%d,y=%d’’,x,y);A、x=27,y=27B、x=12,y=13C、x=15,y=14D、x=y=27标准答案:C知识点解析:本题考查的是逗号表达式。逗号表达式的求解步骤是先求解表达式1,然后依次求解表达式2,直到表达式N的值。整个逗号表达式的值就是最后一个表达式N的值。表达式“(x=3*y,x+6)”中,“x=15”。表达式“y=x-1=14”。15、sizeof(char)是()。A、一种函数调用B、一个整型表达式C、一个字符型表达式D、一个不合法的表达式标准答案:B知识点解析:“sizeof(char)”是一个C语言的关键字,它不是函数调用。“sizeof”的功能是计算出运算对象在计算机的内存中所占用的字节数量,该表达式的返回值是一个整数,而不是一个字符型表达式。16、下列4个程序中,完全正确的是()。A、#include<stdio.h>main();{/*programming*/printf(”programming!\n’’);}B、#include<stdio.h>main(){/*/programming/*/printf(’’programming!\h’’);}C、#include<stdio.h>main(){/*/programming*/*/printf(’’programming!\n’’);}D、include<stdio.h>main(){/*programming*/printf(’’programming!\n’’);}标准答案:B知识点解析:选项A中,main()函数后面的分号是错误的,C语言在函数名后面不能有分号;在C语言中注释内容必须放在“/*”和“*/”之间,“/#”和“*/”必须成对出现,按语法规定在注释之间不可再嵌套“/*”和“*/”,选项C的程序段中注释语句之间有嵌套;C语言用#include命令行来实现文件包含的功能。#include命令行的形式为:#include“文件名”,选项D中的include前面少了一个#符号。17、设变量均已正确定义,若要通过scanf(’’%d%c%d%c’’,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。下列所示的输入形式中正确的是(注:口代表空格字符)()。A、10口X口20口Y<CR>B、10口X20口Y<CR>C、10口X<CR>20Y<CR>D、10X<CR>20口Y<CR>标准答案:A知识点解析:在使用scanf函数进行输入数据时,输入的数据之间必须用空格、回车符、制表符(Tab键)等间隔符隔开。18、两次运行下面的程序,如果从键盘上分别输入3和2,则输出结果是()。#include<stdio.h>main(){intx;scanf(’’%d’’,&x);if(x++>2)printf(’’%d’’,x);elseprintf(’’%d\n’’,x--);}A、4和3B、4和2C、4和1D、3和2标准答案:A知识点解析:本题考查if…else语句。首先,scanf函数通过键盘读入x的值。当x=3时,第一个if语句先判断条件,取x的值3和2比较,然后将x的值加1,if条件成立,执行下面的printf语句,输出x的值4。当x=2时,第一个if语句先判断条件,先取x的值2和2比较,然后将x的值加1(x的值变为3),if条件不成立,执行下面的else语句,先输出x的值3,再将x的值减1。19、以下叙述中不正确的是()。A、在不同的函数中可以使用相同的名字的变量B、函数中的形式参数是局部变量C、在一个函数内定义的变量只在本函数范围内有效D、在一个函数内的复合语句中定义的变量在本函数范围内有效标准答案:D知识点解析:此题考查的是变量的作用范围。选项D中,在一个函数的复合语句中定义的变量是局部变量,只在定义此变量的复合语句内有效,并不是在整个函数体内都有效。20、运行下面的程序,输入字符串“MicrosoftVisualStudio”,则程序的执行结果是()。#include<stdio.h>main(){charChr[20];scanf(’’%s’’,&Chr);printf(’’%s\n’’,car);}A、MicrosoftVisualStudioB、MC、MicrosoftD、MicrosoftVisualStudio标准答案:C知识点解析:当从键盘输入“MicrosoftVisualStudio”时,由于“scanf”输入函数的特点是遇到空格时结束读入字符,因此,该程序只将“Microsoft”这9个字符送到了字符数组str中,并在其后自动加上结束符“\0”。21、若有“doublea;”,则正确的输入语句是()。A、scanf(’’%1f’’,a);B、scanf(’’%f’’,&a);C、scanf(’’%lf’’,&a);D、scanf(’’%le’’,a);标准答案:C知识点解析:scanf函数的调用形式是:scanf(“格式字符串”,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。a是double型数据,格式字符串可以用“%1f”,“%f”是浮点型。题中定义变量a为双精度型变量,双精度变量的格式符为“%1f”;变量的地址用取地址符“&”加变量名表示,变量a的地址为“&a”。22、if语句的基本形式为:if(表达式)语句,其中“表达式”()。A、可以是任意合法的表达式B、必须是逻辑表达式C、必须是逻辑表达式或关系表达式D、必须是关系表达式标准答案:A知识点解析:本题考查if表达式。if(表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(==)误写为赋值号(=)时不会报错的,但是其值恒为1。23、若i、j已定义成int型,则以下程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(i=0;j<4.j++){…}A、20B、24C、25D、30标准答案:B知识点解析:本题考查的是嵌套for循环执行次数。对于外层i的循环中任何一个i,内层j的循环中的j都要从0变化到3,j=4时退出循环;然后外层i循环的i减少1,内层循环的j仍要从0变化到3,j=4时退出循环……直到外层i循环的i变为0,退出i循环。所以执行多重循环时,对外层循环变量的每一个值,内层循环的循环变量都要从初始值变化到终值。对外层循环的每一次循环,内层循环要执行完整的循环语句。外层for语句执行6次,内层for语句执行4次,所以内循环体执行6*4=24次。24、以下选项中非法的字符常量是()。A、’\\’B、’\0201’C、’\xAA’D、’0’标准答案:B知识点解析:选项A表示的是反斜杠字符;一般可以用1~3位八进制数表示的字符,而选项B中“’\0201’”有4位八进制数,所以错误;选项C是用两位十六进制数AA表示的ASCII码字符;选项D表示的是字符0对应ASCII码值。25、以下程序的输出结果是()。#include<stdio.h>intm=13;intfun(intx,inty){intm=2;return(x*y-m);}main(){inta=7,b=6;printf(’’%d’’,fun(a,b)/m);}A、1B、3C、7D、10标准答案:B知识点解析:本题考查的是函数调用时的参数的作用域。在函数调用时,当全局变量和局部变量的名称相同时,在局部变量的作用域内,局部变量起作用,因而在fun函数内m的应该等于2,main中的m为13,所以返回值为7×6-2=40,而fun(a,b)/m值为40/13=3。26、下面程序运行后的输出结果是()。#include<stdio.h>main(){inta[5]={1,0,4,2,0},b[5]={1,2,3,4,5},i,s=0;for(i=0;i<5;i++)s=s+b[a[i]];printf(’’%d\n’’,s);}A、12B、15C、11D、8标准答案:A知识点解析:这道题目是计算一维数组b中某些元素的和。这些元素的下标值是一维数组a中元素值。s=0+b[1]+b[0]+b[4]+b[2]+b[0]=2+l+5+3+1=12。27、已知下列函数定义:fun(int*b,intc,intn,intdata){intk;for(k=0;k<m*n;k++){*b=data;b++;}}则调用此函数的正确写法是(假设变量a的说明为inta[50])()。A、fun(*a,4,5,1);B、fun(&a,4,5,1);C、fun((int*)a,4,5,1);D、fun(a,4,5,1);标准答案:D知识点解析:本题考查函数调用时的参数传递。fun函数的调用形式为“fun(int*b,intm,intn,intdata)”,而调用数组时,用数组名表示一个指向数组第一个元素的指针,因此调用时的形式为:fun(a,4,5,1)。28、以下程序段的输出结果是()。#include<stdio.h>main(){charp[][4]={’’ABC’’,’’DEF’’,’’GHI’’};inti;for(i=0;i<3;i++)puts(p[i]);}A、ABCB、ADGC、ABCDEFGHID、ABC标准答案:C知识点解析:本题首先定义了一个字符串数组p,通过for循环输出p[0]、p[1]、p[2]的值。29、下面程序的运行结果是()。#include<stdio.h>#include<string.h>main(){char*s1=’’abDuj’’;char*s2=’’ABdUG’’;intt;t=strcmp(s1,s2);printf(’’%d’’,t);}A、正数B、负数C、零D、不确定的值标准答案:A知识点解析:本题考查字符串比较函数和字符串的比较原则的两个知识点:①原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大。②“strcmp(s1,s2)”的返回值,当“str1<str2”时,返回值<0;当“str1=str2”时,返回0;当“str1>str2”,返回值>0。30、已知:intc[3][4];,则对数组元素引用正确的是()。A、c[1][4]B、c[1.5][0]C、c[1+0][0]D、以上表达都错误标准答案:C知识点解析:此题考查的是数组元素的引用。对于已定义的数组a[M][N],数组元素的正确引用必须满足行下标小于M,列下标小于N,且为正整数。因此,选项A中列下标溢出;选项B中行下标出现小数:选项C满足要求。31、C语言中允许用外部说明来指定变量、函数和其他标识符的特征,这里所说的外部指的是()。A、冠以关键字externB、位置在函数体外部C、作用范围是全程的D、位置在函数的外部标准答案:D知识点解析:C语言中允许用位置在函数外部的说明来指定变量、函数和其他标识符的特征。32、有以下程序:#include<stdio.h>intfun(intx,inty){if(x==y)return(x);elsereturn((x+y)/2);}main(){inta=1,b=2,c=3;printf(’’%d\n’’,fun(2*a,fun(b,c)));}程序运行后的输出结果是()。A、2B、3C、4D、5标准答案:A知识点解析:fun(b,c)即fun(2,3),2!=3,所以返回(2+3)/2=2;fun(2*a,2)即fun(2,2),2==2,所以返回2。33、若有“chars[3][3]={’’AAA’’,’’BBB’’,’’CCC’’};”说明语句,则与它等价的语句是()。A、char**s={’’AAA’’,’’BBB’’,’’CCC’’};B、char*s[3]={’’AAA’’,’’BBB’’,’’CCC’’};C、chars[][5]={’’AAA’’,’’BBB’’,’’CCC’’};D、chars[][3]={’’AAA’’,’’BBB’’,’’CCC’’};标准答案:D知识点解析:二维字符数组在定义时可省略第一维的维数,根据初始化有3个字符串,所以选项D中数组有3行,与已知说明语句等价。34、计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是()。A、C语言程序仅可以编译执行B、C语言程序仅可以解释执行C、C语言程序既可以编译执行又可以解释执行D、以上说法都不对标准答案:A知识点解析:C语言作为计算机高级语言,用它编写的程序必须经过C语言的编译器编译后,转换为二进制的机器码来运行。35、若有如下说明,且int类型占两个字节,则正确的叙述为()。structst{inta;intb[2];}a;A、结构体变量a与结构体成员a同名,定义是合法的B、程序只在执行到该结构体时才为结构体st分配存储单元C、程序运行时为结构体st分配8字节存储单元D、类型名structst可以通过extern关键字提前引用标准答案:A知识点解析:本题主要考查结构体的用法:①结构体变量a与结构体成员a同名,定义合法;②在程序编译的时候结构的定义并不会使系统为该结构分配内存空间,只有在说明结构变量时才分配内存空间;③inta占2个字节,intb[2]占4个字节,共6个;④类型名“structst”不可以通过extern关键字提前引用。36、有以下程序:#include<stdio.h>intfun(int*k){intb=0;b=*k+b;return(b);}main(){inta[10]={1,2,3,4,5,6,7,8},i;for(i=2;i<4;i++){printf(’’%d,fun(&a[i]));}printf(’’\n’’);}程序运行后的输出结果是()。A、1012B、810C、34D、1028标准答案:C知识点解析:b是局部变量,因此当i=2时,fun的返回值值为3,i=3时fun返回值为437、设有一联合体变量定义如下:uniondata{longa;floatb;intc;chard;};uniondatax;执行下列语句后,正确的联合体变量x的值是()。x.a=111111;x.b=2222;x.c=2.1546;x.d=’R’;A、111111B、2222C、2.1546D、R标准答案:D知识点解析:本题主要考查的知识点是联合体的内存使用。联合体与结构体的定义相同,其本质区别就在于内存使用方式的不同。联合体所占用的内存空间为最长的成员所占用的空间,各个成员分量全部是从低地址方向开始使用内存单元:联合体中的空间在某一时刻只能保持某一个成员的数据,所以本题执行充一系列赋值后,只得到最后执行的字符’R’。38、若x=2,y=3,则x&y的结果是()。A、0B、2C、3D、5标准答案:B知识点解析:本题主要考查按位与(&)运算的知识点。“&”是对两个运算量相应的位进行逻辑与,“&”的规则与逻辑与“&&”相同。x=2的二进制为00000010,y=3的二进制为00000011,x&y=00000010,转化为十进制即为2。39、已知一个文件中存放若干工人档案记录,其数据结构如下:structa{charnumber[100];intage;floatp[6];};定义一个数组:structanumber[10];假定文件已正确打开,不能正确地从文件中读入10名工人数据到数组b中的是()。A、fread(b,sizeof(structa),10,fp);B、for(i=0;i<10;i++)fread(b[i],sizeof[structa),1,fp);C、for(i=0;i<10;i++)fread(b+i,sizeof(structa),1,fp);D、for(i=0;i<5;i+=2)fread(b+i,sezeof(structa),2,fp);标准答案:B知识点解析:数据块输入/出函数的调用形式为:fread(buffer,size,count,fp)。ffead函数参数说明:“buffer”是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。“size”是要读写的字节数;“count”是要进行读写多少个size字节的数据项;“fp”是指文件型指针。选项B中b[i]是一个数组,不是指针,需改为&b[i]。注意:完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE*fp)自动向后移动前一次读写的长度,不关闭流则继续下一次读操作,接着上次的输出继续输出。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共40题,每题1.0分,共40分。)1、下列链表中,其逻辑结构属于非线性结构的是A、二叉链表B、循环链表C、双向链表D、带链的栈标准答案:A知识点解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。循环链表具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为A选项。2、设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A、15B、16C、20D、0或35标准答案:D知识点解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。在循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只不过当头尾指针指向向量上界时,其加1操作的结果是指向向量的下界0。由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。答案为D选项。3、下列关于栈的叙述中,正确的是A、栈底元素一定是最后入栈的元素B、栈顶元素一定是最先入栈的元素C、栈操作遵循先进后出的原则D、以上说法均错误标准答案:C知识点解析:栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或“后进先出”表,所以选择C。4、在关系数据库中,用来表示实体间联系的是A、属性B、二维表C、网状结构D、树状结构标准答案:B知识点解析:关系模型实体间的联系采用二维表来表示,简称表。选项C为网状模型实体间的联系,选项D为层次模型实体间的联系,选项A属性刻画了实体。5、公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是A、1:1联系B、m:1联系C、1:m联系D、m:n联系标准答案:C知识点解析:两个实体集间的联系实际上是实体集间的函数关系,主要有一对一联系(1:1)、一对多联系(1:m)、多对一联系(m:1)、多对多联系(m:n)。对于每一个实体部门,都有多名职员,则其对应的联系为一对多联系(1:m),答案选C。6、有两个关系R、S和T如下:则由关系R和S得到关系T的操作是A、选择B、投影C、自然连接D、并标准答案:A知识点解析:由关系R到关系S为一元运算,排除C和D。关系S是关系R的一部分,是通过选择之后的结果,因此选A。7、数据字典(DD)所定义的对象都包含于A、数据流图(DFD图)B、程序流程图C、软件结构图D、方框图标准答案:A知识点解析:在数据流图中,对所有元素都进行了命名,所有名字的定义集中起来就构成了数据字典。因此选A,而B,C,D都不符合。8、软件需求规格说明书的作用不包括A、软件验收的依据B、用户与开发人员对软件要做什么的共同理解C、软件设计的依据D、软件可行性研究的依据标准答案:D知识点解析:软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。软件需求规格说明书有以下几个方面的作用。①便于用户、开发人员进行理解和交流,B正确;②反映出用户问题的结构,可以作为软件开发工作的基础和依据,C正确;③作为确认测试和验收的依据,A正确。9、下面属于黑盒测试方法的是A、语句覆盖B、逻辑覆盖C、边界值分析D、路径覆盖标准答案:C知识点解析:黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法,答案为C。而A、B、D均为白盒测试方法。10、下面不属于软件设计阶段任务的是A、软件总体设计B、算法设计C、制定软件确认测试计划D、数据库设计标准答案:C知识点解析:从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。所以A、B、D正确,C为软件测试阶段的任务。11、下列叙述中错误的是A、C程序可以由多个程序文件组成B、一个C语言程序只能实现一种算法C、C程序可以由一个或多个函数组成D、一个C函数可以单独作为一个C程序文件存在标准答案:B知识点解析:一个C语言程序可以实现多种算法,可以由多个程序文件共同构成。一个C语言程序可以由一个或多个函数组成,一个C函数可以单独作为一个C程序文件存在,被包含到其他程序中?所以选择B选项。12、C语言源程序名的后缀是A、.CB、.exeC、.objD、.cp标准答案:A知识点解析:C语言源程序名的后缀是.C,目标文件的扩展文件是.obj,可执行文件的扩展名是.exe。13、以下选项中不能用作C程序合法常量的是A、123B、’\123’C、1,234D、\x7D标准答案:C知识点解析:C选项中不能含有逗号,所以"1,234"不能用作C程序的合法常量?B选项中表示的是八进制的常量,D选项中表示的是十六进制的常量。14、表达式a+=a-=a=9的值是A、18B、-9C、0D、9标准答案:C知识点解析:首先计算a=9,然后计算a-=9,即a=a-9,结果为0,然后计算a+=0,即a=a+0,所以最终结果为0。15、若有定义语句:intx=12,y=8,z;在其后执行语句z=0.9+x/y;则z的值为A、1B、1.9C、2D、2.4标准答案:A知识点解析:先计算x/y,结果为1,然后计算0.9+1,结果为1.9,但由于变量z为整型,所以取值1,所以z的值为1。16、阅读以下程序#includemain(){intcase;floatprintF;printf("请输入2个数:");scanf("%d%f",&case,&printF);printf("%d%f\n",case,printF);}该程序在编译时产生错误,其出错原因是A、定义语句出错,case是关键字,不能用作用户自定义标识符B、定义语句出错,printF不能用作用户自定义标识符C、定义语句无错,scanf不能作为输入函数使用D、定义语句无错,printf不能输出case的值标准答案:A知识点解析:C语言中标识符的定义中区分大小写,所以printF与printf不一样,可以作为标识符。而case是C语言中的关键字,不能作为变量名,scanf是标准的输入函数,printf是标准的输出函数,所以选择A选项。17、有以下程序#includemain(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,若从键盘输入(从第1列开始)123<回车>45678<回车>则输出结果是A、1245B、1256C、1278D、1267标准答案:A知识点解析:Scanf按照格式字符进行输入,所以123与回车的值分别送入了c1.c2.c3.c4变量的存储空间,getchar()函数的功能是从键盘输入的字符串中读入一个字符,所以4送入了变量c5的存储空间,5送入了变量c6的存储空间,所以打印时结果为1245。18、以下选项中,当x为大于1的奇数时,值为0的表达式是A、x/2B、x%2==0C、x%2!=0D、x%2==1标准答案:B知识点解析:A选项的值为不定值,但绝对不是0,算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,B选项的值为假,即0?C选项的值为真,即1,D选项的值为真,即1,选项B正确。19、以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是A、switch(a==1){case0:a=b;break;case1:a++;}B、switch(a){case1:a=b;break;default:a++;}C、switch(a){default:a++;break;case1:a=b;}D、switch(a==1){case1:a=b;break;case0:a++;}标准答案:A知识点解析:if语句的含义是如果a的值为1,将b的值赋给a,否则将a的值自增1?Swich(a==1)中表达式a==1的结果如果为真即为1,则从case1开始执行,直到遇到break语句跳出switch语句,如果a==1的结果如果为假即0,则从case0开始执行,所以与题干含义执行操作相反的是选项A中的语句。20、若变量已正确定义,有以下程序段i=0;doprintf("%d,",i);while(i++);printf("%d\n",i);其输出结果是A、0,1B、0,0C、1,1D、程序进入无限循环标准答案:A知识点解析:第一次首先先执行循环体打印i的值0,然后判断while的条件i++,先用后自增,所以判断时条件为假,跳出循环,但是仍执行了i的自增操作,i的值为1,在接下来的打印语句中进行打印。21、有以下程序#includemain(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2||c--!=3)printf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);}程序运行后的输出结果是A、1,3,2B、1,3,3C、1,2,3D、3,2,1标准答案:B知识点解析:else总是和最近的if配对,所以进入第一个if语句中条件判断时,因为是逻辑与操作需要两边运算对象的值均为非零值,才为真,所以需要逐个执行判断的结果为1,不再执行第二个case语句中的操作,而是进入第二个if语句条件判断,因为b!=2条件成立所以整个条件表达式的值为真,所以不再执行逻辑或的第二个运算对象(c--!=3)c的值不变,也不再执行第一个else语句?打印a的值1,b的值3,c的值3。22、有以下程序段inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){case1:case3:printf("%d\n",n);break;case2:case4:printf("%d\n",n);continue;case0:exit(0);}printf("%d\n",n);}以下关于程序段执行情况的叙述,正确的是A、for循环语句固定执行8B、当产生的随机数n为4时结束循环操作C、当产生的随机数n为1和2时不做任何操作D、当产生的随机数n为0时结束程序运行标准答案:D知识点解析:当产生的随机数为4时,对5取余结果为4,执行case4后面语句,见到continue结束本次循环,而非结束程序运行,所以B选项错误,当产生的随机数为1时,执行case1后面的所有语句,直到遇到break语句跳出switch结构;当随机数为2时,执行case2后面的所有语句,直到遇到continue语句跳出本次循环,所以C选项错误,由于循环体中含有exit(0)语句,该语句的功能是终止程序的执行,所以不是固定执行8次,A选项错误。23、有以下程序#includeintfun1(doublea){return(int)(a*=a);}intfun2(doublex,doubley){doublea=0,b=0;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 园林绿化工程绿化施工团队协作与沟通考核试卷
- 制冷空调设备销售与市场分析考核试卷
- 农业会计培训课件
- 收车合同范本
- 合伙注册公司合同范本
- 劳动合同范本签字
- 佳利租赁合同范本
- 酒店前厅服务操作流程制度
- 云计算数据中心建设合同
- 培训课件的获取方法
- 2025年黑龙江农业职业技术学院单招职业技能测试题库及答案1套
- 华润电力六合马鞍120兆瓦渔(农)光互补光伏发电项目110千伏送出工程报告表
- 2025年电工特种作业人员上岗操作证考试全真模拟试题库及答案(共七套)
- 有创动脉血压监测
- 全国导游基础知识-全国导游基础知识章节练习
- 【安排表】2024-2025学年下学期学校升旗仪式安排表 主题班会安排表
- 2025年度老旧小区改造施工委托合同范本
- 2025年安徽中医药高等专科学校高职单招职业适应性测试近5年常考版参考题库含答案解析
- 第七章 力 达标测试卷(含答案)2024-2025学年度人教版物理八年级下册
- 2024年济南护理职业学院高职单招语文历年参考题库含答案解析
- 2025广东省国家税务局系统事业单位招聘400人历年高频重点提升(共500题)附带答案详解
评论
0/150
提交评论