




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C语言)笔试模拟试卷19(共9套)(共527题)国家二级(C语言)笔试模拟试卷第1套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、算法的时间复杂度是指______。A、执行算法程序所需要的时间B、算法程序的长度C、算法执行过程中所需要的基本运算次数D、算法程序中的指令条数标准答案:4知识点解析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。2、下列叙述中正确的是______。A、线性表是线性结构B、栈与队列是非线性结构C、线性链表是非线性结构D、二叉树是线性结构标准答案:1知识点解析:一般将数据结构分为两大类型:线性结构与非线形结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。3、下面关于完全二叉树的叙述中,错误的是______。A、除了最后一层外,每一层上的结点数均达到最大值B、可能缺少若干个左右叶子结点C、完全二叉树一般不是满二叉树D、具有结点的完全二叉树的深度为[log2n]+1标准答案:2知识点解析:满二叉扔指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉数。4、结构化程序设计主要强调的是______。A、程序的规模B、程序的易读性C、程序的执行效率D、程序的可移植性标准答案:2知识点解析:结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的正确性。5、在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是______。A、概要设计B、详细设计C、可行性分析D、需求分析标准答案:8知识点解析:需求分析是对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。6、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。A、控制流B、加工C、数据存储D、源和潭标准答案:1知识点解析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。7、软件需求分析一般应确定的是用户对软件的______。A、功能需求B、非功能需求C、性能需求D、功能需求和非功能需求标准答案:8知识点解析:软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,使用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。8、下述关于数据库系统的叙述中正确的是______。A、数据库系统减少了数据冗余B、数据库系统避免了一切冗余C、数据库系统中数据的一致性是指数据类型的一致D、数据库系统比文件系统能管理更多的数据标准答案:1知识点解析:由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值,而数据的不一致性指的是同一个数据在系统的不同拷贝处有不同的值。9、关系表中的每一横行称为一个______。A、元组B、字段C、属性D、码标准答案:1知识点解析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。10、数据库设计包括两个方面的设计内容,它们是______。A、概念设计和逻辑设计B、模式设计和内模式设计C、内模式设计和物理设计D、结构特性设计和行为特性设计标准答案:1知识点解析:数据库设计可分为概念设计与逻辑设计。概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。逻辑设计的主要工作是将ER图转换为指定的RDBMS中的关系模型。二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、以下有4组用户标识符,其中合法的一组是______。A、FOR-subCaseB、4dDoSizeC、f2G3IFabcD、WoRDvoiddefine标准答案:4知识点解析:C语言的标识符的定义为:以字母或下划线开头的由字母、数字字符、下划线组成的字符串。而且标识符不能与关键字相同。12、下列叙述中正确的是______。A、C程序中注释部分可以出现在程序中任伺合适的地方B、花括号""{""和""}""只能作为函数体的定界符C、构成C程序的基本单位是函数,所有函数名都可以由用户命名D、分号是C语句之间的分隔符,不是语句的—部分标准答案:1知识点解析:C程序中注释部分用“/*”和“*/”括起来,可以出现在程序中任何合适的地方;花括号“{”和“}”不仅可作为函数体的定界符,也可作为复合语句的定界符;构成C程序的基本单位是函数;一个语句必须在最后出现分号,分号是C语句中不可缺少的部分。13、以下合法的赋值语句是______。A、X=Y=100B、D-;C、X+YD、C=int(A+B)标准答案:2知识点解析:本题中的答案A与D都缺少“;”,而答案C中,表达式是不能独立成为语句的,答案B使用了C语言的自减运算符它就相当于D=D-I,所以答案B为一赋值语句。14、设x为int型变量,执行以下语句,X=10;X+=X-=X-X;X的值为______。A、10B、20C、30D、40标准答案:2知识点解析:本题x=10,表达式“x+=x-=x-x;”的求解步骤如下:先进行x-=x-x的运算,相当于x=x-(x-x)=x=10;再进行x+=x的运算,即x=x+x=20。15、以下程序的输出结果是______。main(){inta=3;printf("%\n",(a+=a-=a*a));}A、{B、1C、2D、-12标准答案:8知识点解析:赋值运算符的结合方向是自右至左,所以表达式a+a-=a*a先运算最右边的a*a得9,再运算a=a-9,即a=3-9,所以此时a的值由3变成了-6,最后运算a=a+(-6),即a-(-6)+(-6)=-12。16、设int型占2个字节,则unsignedint所能表示的数据范围是______。A、0~65535B、-32769~32767C、1~65536D、0~32767标准答案:1知识点解析:本题int型占2个字节,即16位,unsignedint所能表示的数据范围是0~(2(上标)16-1),即0~65535。17、设a、b、c、d、m.n均为血型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为______。A、0B、1C、2D、3标准答案:1知识点解析:C语言中比较表达式的运算结果为0或1。0代表不成立,1表示成立。18、下面的关键字中,不能够从循环体中跳到循环体外的是______。A、gotoB、breakC、returnD、continue标准答案:2知识点解析:在C语言中,可以用break语句和continue语句跳出本层循环和结束本次循环。goto语句可跳出多层循环,如果在函数的循环体内使用return语句,就会直接结束循环返回函数值。19、以下各选项企图说明一种新的类型名,其中正确的是______。A、typedefv1int;B、typedefv2=int;C、typedefintv3;D、typedefv4:int标准答案:4知识点解析:C语言中可以使用typedef来重新定义已有的数据类型,相当于为数据类型取个别名。20、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_______。A、地址传递B、单向值传递C、由实参传给形,再由形参传回实参D、传递方式由用户指定标准答案:2知识点解析:C语言函数中的参数传递方式有传值与传址两种方式,传值方式是指将实参的值复制一份传递给形参,而传址方式是指将实参的变量地址传递给形参,也就是实参的引用。三、选择题(2分)(本题共10题,每题1.0分,共10分。)21、下列程序的输出结果是______。main(){inti,k,ai[0],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+l)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}A、20B、21C、22D、23标准答案:2知识点解析:暂无解析22、下列程序的执行结果是______。point(char*pt);main(){charb[4]={’a’,’c’,’s’,’f’},*pt=b;point(pt);printf("%c\n",*pt);}point(char*p){p+=3;}A、sB、cC、fD、a标准答案:8知识点解析:暂无解析23、已知chara=15,则a,-a和!a的整型值分别为______。A、240、-15、0B、-16、-15、0C、0、-15、240D、0、-15、0标准答案:1知识点解析:暂无解析24、设ch是char型变量,其值为A,且有表达式:ch=(ch>=’A’&&ch<=’Z’)?(ch+32):ch。该表达式的值是______。A、AB、aC、ZD、z标准答案:2知识点解析:暂无解析25、若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是______。A、EOFB、-1C、非零值D、NULL标准答案:4知识点解析:暂无解析26、下列程序执行后的输出结果是______。main(){intx=’f’;printf("%c\n",’A’+(x-’a’+l));}A、GB、HC、ID、J标准答案:1知识点解析:暂无解析27、若输入1,2,下列程序的运行结果为______。#defineSWAP(a,b)t=b;b=a;a=tmain(){inta,b,t;scanf("%d,%d",&a,&b);SWAP(a,b);printf("a=%d,b=%d\n",a,b);}A、a=1,b=2B、a=2,b=1C、a=1,b=1D、a=2,b=2标准答案:2知识点解析:暂无解析28、运行以下程序后,如果从键盘上输入china#<回车>,则输了结果为______。#include<stdio.h>main(){intv1=0,v2=0;charch;while((ch=getchar())!=’#’)switch(ch){case’a’:case’h’:default:vi++;case’0’:v2++;}printf("%d,%d\n",v1,v2);}A、2,0B、5,0C、5,5D、2,5标准答案:4知识点解析:暂无解析29、下列程序中的for循环执行的次当次数是______。#defineN2#defineMN+i#defineNUM2*M+l#main(){inti;for(i=1;i<=NUM;i++)printf("%d\n",i);}A、5B、6C、7D、8标准答案:2知识点解析:暂无解析30、下列程序的输出结果是______。main(){inti;for(i=l;i<6;i++){if(i%2){printf("#");continue;}printf("*");}printf("\n");}A、#*#*#B、#####C、****D、*#*#*标准答案:1知识点解析:暂无解析四、公共基础填空题(本题共5题,每题1.0分,共5分。)31、若采用直接插入法对字母序列(W,S,E,L,X,G,I)进行排序,使字母按升序排列,那么第一次排序的结果为【】。标准答案:S,W,E,L,X,G,I知识点解析:暂无解析32、对于一棵具有n个结点的树,则该树中所有结点的度之和为【】。标准答案:n-1知识点解析:暂无解析33、单独测试一个模块时,有时需要一个【】程序驱动被测试的模块。标准答案:驱动知识点解析:暂无解析34、仅依据规格说明书描述的程序功能来设计测试实例的方法称为【】。标准答案:黑箱法知识点解析:暂无解析35、在进行软件结构设计时,应遵循的最主要原理是【】。标准答案:模块独立原理知识点解析:暂无解析五、填空题(本题共10题,每题1.0分,共10分。)36、x、y、x均为int型变量,描述“x、y和z中至少有两个为正数”的表达式是______。标准答案:((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))知识点解析:题目要求“x、y和z中至少有两个为正数”,即x、y和x这3个数中必须有两个是正数,且这3个数中的哪两个数都有可能是正数,所以它们之间是或的关系。37、与表达式a+=b等价的另一书写形式是______。标准答案:a=a+b知识点解析:a+=b与a=a+b等价,作用是把变量a的值加b后再赋给变量a。38、下列程序的输出结果是______。#include<stdio.h>main(){intx=1,y=1,a=1,b=1;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%d\n",a,B);}标准答案:a=2,b=3知识点解析:分析程序,程序从x=1语句开始执行,之后执行第一个switch语句,switch(x)=switch(1),所以执行case1,case1语句中包含一个复合switch语句:这时执行第二个switch语句,此时y=1,所以switch(y)=switch(1),因此执行case1,将b加1,得到b=2,遇到break语句,退出第二个switch语句,则整个case1的复合语句执行完毕,由于在这个case1的后面没有break语句使其退出第一个switch语句,所以接着执行下列的case2后面的语句,即将a,b各加1,得到a=2,b=3。39、C语言用于结构化程序设计的3种基本结构是______、选择结构和循环结构。标准答案:顺序结构知识点解析:结构化程序有3种摹本结构,即顺序结构、选择结构(包括if语句和switch语句)和循环结构(包括for语句、while语句、do…while语句)。40、下列循环的循环次数是______。intk=2;while(k=0)printf["%d",k);k--;printf("\n");标准答案:0知识点解析:解答本题需要注意表达式“k=0”,它是赋值表达式而不是关系表达式,不论k为何值,表达式k=0总会使k为0,所以不能进入循环。41、若有定义floatb[15],*p=b;,且数组b的首地址为200H,则p+13所指向的数组元素的地址为______。标准答案:252H知识点解析:要解答本题,首先要明白在对指针进行加,减运算时,数字“1”不是十进制数的“1”,而是指“1”个存储单元长度。1个存储单元长度占存储空间的多少,应该视具体情况而定,如果存储单元的基类型是血型,则移动1个存储单元的长度就是位移2个字节;如果存储单元基类型是float型,则移动1个存储单元的长度就是位移4个字节。所以p+13所指向的数组元素的地址为:200H+(13*4)H=252H。42、“printf("%d\n",strlen("\t\"023\xABC\n");”语句的输出结果是______。标准答案:6知识点解析:strlen()函数的作用是计算字符串的长度并作为函数的返回值,这里的长度不包括串尾的结束标志’\0’。’\t’f是转义字符,代表横向跳若干格:"\"是转义字符,代表双引号;’\023’只代表一个字符,而不管转义字符后面有几个字符;’仅AB,是以两位十六进制数AB表示的ASCII码字符,只代表一个字符;’\n’是转义字符,代表回车换行。5个字符常量各代表一个字符,再加上字母C,所以返回的长度是6。43、设有下列宏定义:#defineA2#defineBA+3则执行赋值语句;t=B*2;t为int型变量后的值是______。标准答案:8知识点解析:本题考查带参数的宏定义及相关运算.运算过程为:t=B*2=A+3*2=2+3*2=8。44、下列程序的功能是将字符串s中所有的字符c删除。请填空。#include<stdio.h>main(){chars[80];inti,j;gets(s);for(i=j=0;s[i]!=’\0’;i++)if(s[i]!=’c’)s[j]=’\0’;puts(s);}标准答案:S[j++]=s[i]知识点解析:循环开始后如果数组s中储存值与字符c相同,则i++直接跳过当前值;如果不相同,则将当前值赋予数组指定位置,并通过j++将下标加1,指向下一元素要存储的位置。45、下列程序的运行结果是______。#include<stdio.h>func(a,b){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){intk=5,m=3,p;p=fune(k,m);printf("%d",p);p=func(k,m);printf("%d\n",p);}标准答案:1123知识点解析:在主函数中第一次调用func子函数时,m=0,i=2,i=i+m+1=3,m=i+a+b=3+5+3=11。因为在于函数中将m和i定义成了static类型,所以在于函数中对m和i进行的改变在下一次调用子函数时能进行保存,所以第二次调用于函数时,m=11,i=3,则i=i+m+1=15,m=i+a+b=15+5+3=23。国家二级(C语言)笔试模拟试卷第2套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、下面关于完全二叉树的叙述中,错误的是______。A、除了最后—层外,每—层上的结点数均达到最大值B、可能缺少若干个左右叶子结点C、完全二叉树—般不是满二叉树D、具有结点的完全二叉树的深度为[log2n]+1标准答案:B知识点解析:满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每—层上的结点数均达到最大值,在最后—层上只缺少右边的若干子结点(叶子结点)的二叉树。2、设有如图所示二叉树,对此二叉树后序遍历的结果为()。A、ZBTYCPXAB、ATBZXCYPC、TZBACYXPD、ATBZXCPY标准答案:A知识点解析:后序遍历首先访问左子树,然后右子树,最后根结点,即左右根。故该二又树的前序遍历结果为“ATBZXCYP”。后序遍历和中序遍历的结果分别为“ZBTYCPXA”和“TZBACYXP”。3、软件生命周期中花费费用最多的阶段是A、详细设计B、软件编码C、软件测试D、软件维护标准答案:D知识点解析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。4、以下不是面向对象思想中的主要特征的是A、多态B、继承C、封装D、垃圾回收标准答案:D知识点解析:面向对象思想中的三个主要特征是:封装性、继承性和多态性。5、数据处理的最小单位是()。A、数据B、数据元素C、数据项D、数据结构标准答案:4知识点解析:数据处理的最小单位是数据项。由若干数据项组成数据元素,而数据是指能够被计算机识别、存储和加工处理的信息载体,数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。6、在结构化程序设计方法中,下面哪种内聚的内聚性最弱?A、逻辑内聚B、时间内聚C、偶然内聚D、过程内聚标准答案:4知识点解析:内聚有很多种类,其中内聚性由弱到强的顺序为:偶然内聚、逻辑内聚、时间内聚、过程内聚.所以本题的答案为C。7、下列叙述中错误的是()。A、在数据库设计的过程中,需求分析阶段必须考虑具体的计算机系统B、在数据库设计的过程中,概念结构设计与具体的数据库管理系统有关C、在数据库设计的过程中,逻辑结构设计与具体的数据库管理系统有关D、在数据库设计的过程中,物理结构设计依赖于具体的计算机系统标准答案:2知识点解析:数据库设计主要分4个步骤:需求分析、概念结构设计、逻辑结构设计、物理结构设计。选项B错误,应为本题的正确答案,因为概念结构设计在需求分析的基础上对客观世界做抽象,独立于数据库的逻辑结构,也独立于具体的数据库管理系统,与具体的数据库管理系统无关。8、个人计算机属于()A、小巨型机B、中型机C、小型机D、微机标准答案:8知识点解析:暂无解析9、与十进制数96等值的二进制是()A、1100000B、10010110C、1100001D、1100011标准答案:1知识点解析:暂无解析10、如果一个算法显式地调用自己则称为()A、直接递归B、自用递归C、间接递归D、外用递归标准答案:1知识点解析:暂无解析二、选择题(1分)(本题共11题,每题1.0分,共11分。)11、设有定义:intk=1,m=2;noatf=7;则下列选项中错误的表达式是()。A、k=k>=kB、-k++C、k%int(f)D、k>=f>=m标准答案:C知识点解析:在C语言中,求余运算符“%”两边的运算对象都应为整型数据,所以需要对变量f进行强制类型转换,正确的写法为k%(int)f。在C语言中,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑“非”)、算术运算符、关系运算符、&&(逻辑“与”)、‖(逻辑“或”)、赋值运算符。根据运算符的优先级与结合性,对于选项A),先计算k>=k的值(为真,即1),再用1对k进行赋值。对于选取项B),先计算k什的值,再对其取负数。对于选项D),先计算k>=f的值(为假,即0),再用0与m进行比12、若变量已正确定义并赋值,以下符合C语言语法的表达式是A、a:=b+1B、a=b=c+2C、int18.5%3D、a=a+7=c+b标准答案: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。13、设整型数i=5,则printf("%d"i+++++i);的输出为______。A、10B、11C、12D、语法错误标准答案:D知识点解析:C语言中有基本的算术运算符(+、-、*、/)还包括自增自减运算符(++、-),在C语言解析表达式时,它总是进行贪婪咀嚼,这佯,该表达式就被解析为i+++++i,显然该表达式不合C语言语法。14、设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=R×S,则T的元组的个数为()。A、6B、8C、9D、12标准答案:C知识点解析:R为n元关系,有P个元组S为m元关系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是q×p。所以T的元组的个数为9个。15、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是()。A、6.500000B、6C、5.500000D、6.000000标准答案:8知识点解析:在这个表达式中,优先级最高的是(int)a,也就是对5.5取整,结果是5,其次是b/b,即2.5/2.5,结果是1.000000,最后相加结果为6.000000(表达式的最终结果为实型),所以4个选项中D正确。16、若变量已正确定义并赋值,下面符合C语言语法的表达式是A、m:=5B、c=b=a=lC、float8%5D、x+5=y+2标准答案:2知识点解析:选项A)中的赋值方法为Pascal语言赋值格式;C语言中赋值直接为“=”,无冒号;选项D)中“x+5=y+2”赋值格式错误,赋值号左边不可以出现常量,也不可以同时出现两个变量。选项C)应改为(float)8%317、已知在ASCII字符集中,数字0的序号为48,下列程序的输出结果为______。main()}chara=’0’,b=’9’;printf("%d,%c\n",a,b);}A、因输出格式不合法B、48,57C、0,9D、48,9标准答案:8知识点解析:注意输出控制符%d,%c,分别表示以十进制形式输出字符的ASCII码值和字符。18、下列可用于C语言标识符的一组是_______。A、voidWORDdefineB、a6$sysForC、2asizeofabcD、Intdefinesizeof标准答案:8知识点解析:C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。注意,大写字母和小写字母被认为是两个不同的字符。C语言中的关键字不能用作标识符。19、以下合法的赋值语句是()A、x=y=100B、d--;C、x+y;D、c=int(a十B)标准答案:2知识点解析:暂无解析20、假定所有变量均已正确说明,下列程序段运行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5;if(c)x=3;elsex=4;A、11B、4C、12D、3标准答案:2知识点解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a=0,则!a成立,执行下列的语句,x--,得x=11:第二个if语句,判断条件,发现c=o,则条件不成立,执行下列的else语句,得x=4。21、设在C语言中,float类型数据占4个字节,则double类型数据占()个字节。A、1B、2C、8D、4标准答案:4知识点解析:在C语言中各种数据类型在内存中所占的字节数和机器的指令周期有关,若int类型占2个字节,则float类型数据占4个字节,double类型数据占8个字节。三、选择题(2分)(本题共20题,每题1.0分,共20分。)22、以下程序段给数组所有的元素输入数据,请选择正确答案填入。#include<stdio.h>main(){inta[10]=0;while(i<10)scan("%d"______);::}A、a+(i++)B、&a[i+1]C、a+iD、&a[++i]标准答案:A知识点解析:a就是数组a的首地址,而a+x是数组中第x个元素的地址,所以在四个选项中,选项B和C只能输入—个数据,选项D不能给a[0]输入数据,只有A可以完成给数组所有的元素输入数据的任务。23、以下数组定义中不正确的是______。A、inta[2][3];B、intb[][3]={0,1,2}C、intc[100][100]={0};D、intd[3][]={{1,2},{1,2,3},{1,2,3,4}};标准答案:D知识点解析:—维数组的定义方式为:类型说明符数组名[常量表式];选项A符合此定义形式,正确;C语言中多维数组赋初值时可以部分赋值,也可以不指定除第—维以外的其他维的大小,故选项C正确;另外,如果对全部数组元素都赋初值,则定义数组时对第—维的长度可以不指定,但第二锥的长度不能省,所以选项B正确,而选项D是错误的。24、有下列程序段:typedefstructNODE{intnum;structNODE*next;}OLD;下列叙述中正确的是()。A、以上的说明形式非法B、NODE是一个结构体类型C、OLD是一个结构体类型D、OLD是一个结构体变量标准答案:C知识点解析:C语言允许用typedef说明一种新类型名,其一般形式为:typedef类型名标识符。typedef语句的作用仅仅是使“标识符”来代表已存在的“类型名”,并未产生新的数据类型。原有类型名依然有效。此题中,用使typedef定义了新的类型OLD结构,所以OLD为结构体类型。25、下列程序的输出结果是()。#include<stdio.h>#include<string.h>main(){chara[]="\n123\\";printf("%d,%d\n",strlen(a),sizeof(a));}A、5,6B、5,5C、6,6D、6,5标准答案:A知识点解析:转义字符’\n’表示换行,’\\’表示反斜杠,函数strlen()是计算字符串的长度,不包括文件结束标志(’\0’),函数sizeof()统计字符串所占的字节数。26、下列选项中不会引起二义性的宏定义是()。A、#defineS(x)x*xB、#defineS(x)(x)*(x)C、#defineS(x)(x*x)D、#defineS(x)((x)*(x))标准答案:D知识点解析:本题考查带参数的宏的替换。有些参数表达式必须加括号,否则,在实参表达式替换时,会出现错误。27、主程序调用findmax函数求出数组中最大元素在数组中的下标,括号中需填写的内容是#include<stdio.h>findmax(int*s,intt,int*k){intp;for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])();}main(){inta[10],i,k;for(i=0;i<10;i++)scanf("%d",&a[i]);findmax(a,10,&k);printf("A、k=pB、*k=pC、k=p-sD、*k=p-s标准答案:B知识点解析:暂无解析28、有以下程序:structS{intn;inta[20];};voidf(structS*P){inti,j,t;for(i=0;i<P->n-1;i++)for(j=j+1;j<P->n-1;j++)if(p->a[i]>p->a[j]){t=P->a[i];p->a[i]=P->a[j];p->a[j]=t}}main(){inti;structSs{10,{2,3,1,6,8,7,5,4,10,9}};f(&s);for(i=0;i<s.n;i++)printf("%d",s.a[i]);}程序运行后的输出结果是()。A、3B、4C、5D、6标准答案:A知识点解析:在主函数main()中定义了一个整型变量i和一个结构体变量s。f()函数中,定义了一个结构体指针类型的指针p,外层循环变量i表示数组的第i个元素,内层循环j表示数组的第i+1个元素,调用f()函数,通过指针变量p来引用结构体成员,并把它们进行从小到大排序,最后输出。29、以下关于逻辑运算符两侧运算对象的叙述中正确的是()。A、只能是整数0或1B、只能是整数0或非0整数C、可以是结构体类型的数据D、可以是任意合法的表达式标准答案:D知识点解析:逻辑运算的对象可以是C语言中任意合法的表达式。30、若x和y代表整型数,以下表达式中不能正确表示数学关系,|x-y|<10的是______。A、abs(x-y)<10B、x-y>-10&&x-y<10C、(x-y)<-10||!(y-x)>10D、(x-y)*(x-y)<100标准答案:C知识点解析:暂无解析31、若要说明一个类型名CHARP,使得定义语句“CHARPs;”等价于“char*s;”,以下选项中正确的是______。A、typedefCHARPchar*s;B、typedef*charCHARP;C、typedefCHARP*char:D、typedefchar*CHARP;标准答案:D知识点解析:暂无解析32、有以下程序:#include<stdio.h>main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}执行后的输出结果是()。A、77B、88C、810D、1010标准答案:4知识点解析:用a[]="abcdefg"对数组a进行初始化,是用一个字符串作初值。数组a的长度包括由系统加上的’\0’,因此是8。b[10]="abcdefg"只初始化了前7个元素,后3个元素为0(’\0’),所以长度为10。33、有以下程序:#include<stdio.h>main(){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、1267B、1256C、1278D、1245标准答案:8知识点解析:在题目中,程序执行到scanf()函数时,会暂停等待用户输入4个字符,按题意输入123<回车>后,字符1~3被分别输入到c1~c3中,而c4会得到一个换行符’\n’。然后执行第1个getchar()函数,由于前面的scanf()函数读完了缓冲区中的所有字符,所以此时程序会又暂停等待用户输入,按题意输入45678<回车>后,缓冲区第1个字符’4’被读入并赋给c5,第2个getchar()函数会读入缓冲区第2个字符’5’。所以最后依次输出c1、c2、c5、c6的值后,屏幕上的结果是1245。故应该选择D。34、有以下程序:main(){intx[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j--)if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<8;i++)printf("%d",x[i]);printf("\n");}程序运行后的输出结果是()。A、75310246B、1234567C、76310462D、13570246标准答案:1知识点解析:主函数中定义了一个整型数组x,并初始化。接着执行了一个二重for循环,在该二重循环的作用是将数组的前4个元素按从大到小排序,接着用了一个二重循环(也是冒泡算法)将数组的后4个元素按从小到大的顺序排序,故最后依次输出数组的个元素的值为75310246,所以,4个选项中选项A符合题意。35、fseek函数的正确调用形式是A、fseek(文件指针,起始点,位移量)B、fseek(文件指针,位移量,起始点)C、fseek(位移量,起始点,文件指针)D、fseek(起始点,位移量,文件指针)标准答案:2知识点解析:本题考查函数fseek的用法。fseek函数的调用形式为:fseek(文件指针,位移量,起始点)“起始点”用0,1或2代替,0代表“文件开始”,1为“当前位置”,2为“文件末尾”。“位移量”指以“起始点”为基点,向前移动的字节数。ANSIC和大多数C版本要求位移量是long型数据。这样当文件的长度大于64k时不致出现问题。ANSIC标准规定在数字的末尾加一个字母L,就表示long型。36、设有以下语句:structSS{intno;charname[10];}PERSON;则下面叙述中错误的是()A、struct是结构体类型的关键字B、structSS是结构体类型C、PERSON是结构体类型名D、name是结构体成员名标准答案:4知识点解析:暂无解析37、有以下程序main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf("%d\n",j);}程序运行后的输出结果是A、42B、45C、56D、60标准答案:1知识点解析:本题考查while语句和if语句的嵌套,程序段实现的功能是将p[1]至p[7]中的奇数相加求和并输出,j=13+15+17=45。38、有以下程序main(){char*p[10]={"abc",aabdfg","dedbe","abbd","cd"};printf("%d\n",stxlen(p[4]));}执行后输出结果是A、2B、3C、4D、5标准答案:1知识点解析:本题中首先定义了一个长度为10的指针数组,并赋初值,因此执行strlen(p[4])后的返回值为字符串“cd”的长度为2。39、有以下函数char*fun(char*p){returnp;}该函数的返回值是______。A、无确切的值B、形参p中存放的地址值C、一个临时存储单元的地址D、形参p自身的地址值标准答案:2知识点解析:p本身就是一个字符型指针变量,返回p也就是返回变量p中存放的地址值。40、下列程序的执行结果是_______。#include<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}A、266B、11C、265D、138标准答案:1知识点解析:由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同一个存储单元,且此存储单元为2千字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。41、下列程序的输出结果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}A、6,2B、6,4C、8,4D、8,6标准答案:2知识点解析:本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立:联合所占用的内存空间为最长的成员所占用的空间。四、公共基础填空题(本题共5题,每题1.0分,共5分。)42、数据库系统的主要特点为数据集成性、数据的高——和低冗余性、数据独立性和数据统一管理和控制。标准答案:共享性知识点解析:数据库系统中的数据能被不同的应用程序使用,实现了数据的高度共享,从而降低了数据的冗余,这也是数据库的主要目的。43、在运算过程中,能够使空表与非空表的运算统一的结构是【】。标准答案:循环链表知识点解析:在链表的运算过程中,采用链接方式即循环链表的结构把空表与非空表的运算统一起来。循环链表具有两个特点:①在循环链表中增加了一个表头结点,其数据域为任意或根据需要来设置,指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。②循环表中最后一个结点的指针不是空,而是指向表头结点。44、如果一个工人可管理多个设备,而一个设备只被一个工人管理,则卖体“工人”与实体“设备”之间存在【】关系。标准答案:一对多知识点解析:实体之间的联系有3类:一对一,一对多,多对多。设有两个实体集E1和E2,如果E2中的每一个实体与E1中的任意个实体(包括零个)有联系,而E1中的每一个实体最多与E2中的一个实体有联系,则称这样的联系为“从E2到E1的一对多的联系”,通常表示为“l:n的联系”。由此可见,工人和设备之间是一对多关系。45、在关系运算中,查找满足一定条件的元组的运算称之为【】。标准答案:选择知识点解析:在关系数据库中,选择运算也是一个元运算,关系R通过选择运算(并由该运算给出所选择的逻辑条件)后仍为一个关系。这个关系是由R中的那些满足逻辑条件的元组所组成。46、软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。标准答案:结构知识点解析:路径测试是白盒测试方法中的一种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。五、填空题(本题共10题,每题1.0分,共10分。)47、若a=1,b=2,c=3,d=4;则条件表达式a>b?a:c<d?c:d的结果为()。标准答案:3知识点解析:暂无解析48、以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:y1=(x+8)2-2(x+8)+6y2=sin2(x)-2sin(x)+6请填空。doublefun(doublex){return(x*x-2*x+6);}{doublex,y1,y2;printf("Enterx:");scanf("%lf",&x);y1=fun([6]);y2=fun([7]);printf("y1=%lf,y2=%lf\n",y1,yA、[6]x+8[7]sin(x)标准答案:知识点解析:暂无解析49、在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,()负责数据的模式定义与数据的物理存取构建。标准答案:数据定义语言知识点解析:数据定义语言负责数据的模式定义和数据的物理存取构建;数据操纵语言负责数据的操纵,包括查询及增、删、改等操作;数据控制语言负责数据完整性、安全性的定义与检查以及并发控制、数据恢复等功能。50、以下程序运行后的输出结果是()。structNODE{intk;structNODE*link;};main(){structNODEm[5],*p=m,*q=m+4;inti=0;while(p!=q){p->k=++i;p++;q->k=i++;q--;}q->k=i;for(i=0;i<5;i++)printf("%d",m[i].k);printf("\n");}标准答案:13431知识点解析:暂无解析51、在面向对象方法中,类之间共享属性和操作的机制称为______。标准答案:继承知识点解析:暂无解析52、有以下程序:main(){intt=1,i=5;for(;i>=0;i--)t*=i;printf("%d\n",t);}执行后输出结果是【】。标准答案:0知识点解析:本题中的for循环共执行了6次,每执行一次将相应i的值相乘,最后当i=-1时停止循环。该for循环执行完后t的值为5*4*3*2*1*0=0,故最后输出t的值为0。53、函数sub的功能是根据下面近似分式求π的值。(π*π)/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)现在请在下面的函数中填空,完成求π值的功能。#include"math.h"doublesub(longm){doublesum=0.0,t;longn;for(n=1;n<=m;n++)sum+=【】;t=sqrt(6*sum);return(t);}标准答案:1.0/(n*n)知识点解析:sam中累加的值是1+1/(2*2)+1/(3*3)+…+1//(n*n),如果写为1/(n*n),则会因为1和n都为整型,结果则为实型,将1变为1.0,结果则为实型。54、下列程序的运行结果是:【】。#include<stringh>char*ss(char*s){returns+strlen(s)/2;}main(){char*p,*str="abcdefgh";p=ss(str);printf("%s\n",p);}标准答案:etgh知识点解析:函数ss的作用是让形参指针s指向该字符串的右半部分。主函数中首先定义了一个字符型指针变量P和字符型指针str,并初始化为“abcdefgh”,然后调用函数ss,将实参str传给形参s,因此可知该函数返回的指针,指向str所指的字符串“abedergh”的右半部分,即指向字符串“efgh”,所以最后输出指针p(指针p的值为调用函数ss(str)的返回值)所指向的字符串为“efgh”。55、有以下程序:#include<stclio.h>main(){charc;while((c=getchar())!=’?’)putchar(--c);}程序运行时,如果从键盘输入:Y?N?<回车>,则输出结果为【】。标准答案:X知识点解析:主函数中首先定义了一个字符型变量c,接着执行下面while语句,在while循环中,首先从键盘上读入一个字符Y并给赋给字符变量c,赋值表达式的值不为’?’,执行输出语句,输出字符X。接着判断while中的循环条件,读入一个字符’?’并赋值给c,赋值表达式的值为’?’循环条件不再满足,退出循环。56、设y为血型变量,请写出描述“y是偶数”的表达式______。标准答案:(y%2)==0知识点解析:因符合偶数的条件是对2取余为0,所以要描述y是偶数的表达式是(y%2)==0。57、以下程序把三个NODEIYPE型的变量链接成—个简单的链表,并在while循环中输出链表结点数据域中的数据。请填空。#include<stdio.h>structnode{intdata;structnode*next;);typedefstructnodeNODETYPE;main(){NODETYPEa,b,c,*h,*p;a.data=10;b.data=20;c.data=30;h=&a;anext=&b;b.next=&c;c,next=’\0’;p=h;while(p){printf("%d,",p->data):【】;}printf("\n");}标准答案:P++知识点解析:本题主要考查的是将NODETYPE型的变量链接成—个简单的链表,利用typedef把NODETYPE变成structnode的别名,当执行while循环时,首先判断是否到了最后—个链表结点,如果没有则引用结构体中的成员data,然后指向下—个链表结点,继续判断,因此,此处应填的是p++指向下—个链表结点。国家二级(C语言)笔试模拟试卷第3套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、算法的空间复杂度是指A、算法程序的长度B、算法程序中的指令条数C、算法程序所占的存储空间D、执行算法需要的内存空间标准答案:8知识点解析:算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。2、用链表表示线性表的优点是A、便于随机存取B、花费的存储空间较顺序存储少C、便于插入和删除操作D、数据元素的物理顺序与逻辑顺序相同标准答案:4知识点解析:链式存储结构克服了顺序存储结构的缺点:它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。故链式存储结构下的线性表便于插入和删除操作。3、数据结构中,与所使用的计算机无关的是数据的A、存储结构B、物理结构C、逻辑结构D、物理和存储结构标准答案:4知识点解析:数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。4、结构化程序设计主要强调的是A、程序的规模B、程序的效率C、程序设计语言的先进性D、程序易读性标准答案:8知识点解析:结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化及限制使用goto语句,总的来说可使程序结构良好、易读、易理解、易维护。5、软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指A、模块间的关系B、系统结构部件转换成软件的过程描述C、软件层次结构D、软件开发过程标准答案:2知识点解析:软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中结构设计是定义软件系统各主要部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。6、检查软件产品是否符合需求定义的过程称为A、确认测试B、集成测试C、验证测试D、验收测试标准答案:1知识点解析:确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求;集成测试的主要目的是发现与接口有关的错误。7、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是A、控制流B、加工C、数据存储D、源和潭标准答案:1知识点解析:数据流图包括4个方面,即加工(转换)(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体)。不包括选项中的控制流。8、应用数据库的主要目的是A、解决数据保密问题B、解决数据完整性问题C、解决数据共享问题D、解决数据量大的问题标准答案:4知识点解析:数据库中的数据具有“集成”与“共享”的特点,亦即是数据库集中了各种应用的数据,进行统一构造与存储,而使它们可以被不同应用程序所使用,故选项C)正确。9、在数据库设计中,将E-R图转换成关系数据模型的过程属于A、需求分析阶段B、逻辑设计阶段C、概念设计阶段D、物理设计阶段标准答案:2知识点解析:E-R模型即实体—联系模型,是将现实世界的要求转化成实体、联系、属性等几个基本概念,以及它们之间的两种联接关系。数据库逻辑设计阶段包括以下几个过程:从E-R图向关系模式转换,逻辑模式规范化及调整、实现规范化和RDBMS,以及关系视图设计。10、在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是A、数据库系统B、文件系统C、人工管理D、数据项管理标准答案:1知识点解析:人工管理阶段是在20世纪50年代中期以前出现的,数据不独立,完全依赖于程序;文件系统是数据库系统发展的初级阶段,数据独立性差;数据库系统具有高度的物理独立性和一定的逻辑独立性。二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、下面各选项中,均是C语言合法标识符的选项组是A、33weautoB、_23me_3ewC、_433e_elseD、ER-DF32标准答案:2知识点解析:合法的标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,用户定义的标识符不能与关键字相同。选项A),数字不能为第一个字母,auto为关键字;选项C)中,也是数字不能为第一个字母,else为关键字;选项D)中负号不合法。12、下列关于复合语句和空语句的说法错误的是A、复合语句是由“{”开头,由“}”结尾的B、复合语句在语法上视为一条语句C、复合语句内,可以有执行语句,不可以有定义语句部分D、C程序中的所有语句都必须由一个分号作为结束标准答案:4知识点解析:复合语句内,不仅可以有执行语句,而且还可以有定义语句部分。定义语句应该出现在可执行语句前面。13、关于printf()函数的返回值叙述正确的是A、通常是本次调用中输出字符的个数B、通常是输出的第一个数值C、通常返回布尔值真D、通常返回非零值标准答案:1知识点解析:printf函数的返回值通常是本次调用中输出字符的个数。scanf函数在调用结束后将返回一个函数值,其值等于得到输入项的个数。14、以下对C语言函数的有关描述中,正确的是A、在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参B、C函数既可以嵌套定义又可以递归调用C、函数必须有返回值,否则不能使用函数D、函数必须有返回值,返回值类型不定标准答案:1知识点解析:C语言中的函数可以进行递归调用,但是不能在函数中定义函数,函数不必要有返回值,若有返回值,则返回值类型必确定。15、假定int类型变量占用两个字节,有定义:intx[10]={0,2,4};,则数组x在内存中占字节数是A、3B、6C、10D、20标准答案:8知识点解析:x数组共有10个元素,在花括弧内只提供3个初值,这表示只给前面的3个成员赋值,后7个元素的值为0,所以,一共有20个字节。16、以下对结构体类型变量的定义中,不正确的是A、typedefstructaa{intn;floatm;}AA;AAtdl;B、#defineAAstructaaAA{intn;floatm;}tdl;C、struct{intn;floatm;}aa;structaatdl;D、struct{intn;floatm;}tdl;标准答案:4知识点解析:定义结构体类型的变量有几种的方法如下:①定义结构体类型的同时,定义结构体类型的变量,如下面的定义中在定义结构体类型aa的同时定义了该类型的变量tdl。上述B)项中将宏名AA用宏体structaa替换进去后,与该定义形式一样,因此是正确的。这一定义形式中,结构体类型名明是可以省略的,因此,D)项也是正确的。structaa{...}tdl;②先定义结构体类型,然后再定义结构体类型的变量,形式如下:structaa{…};structaatdl;这种定义形式也可演变为,先用类型定义语句typedef将该结构体类型定义成一个类型名AA,然后直接用该类型名AA去定义一个变量(这时不再需要使用关键字struct了)。这就是A)项的形式。17、C语言中,能识别处理的文件为A、文本文件和数据块文件B、文本文件和二进制文件C、流文件和文本文件D、数据文件和二进制文件标准答案:2知识点解析:在计算机中,对于输入输出均采用数据流的形式。文件按照存取方式分为顺序存取文件和随机存取文件。按照存储形式分为二进制文件和文本文件。文本文件存储的是一个ASCII码,文件的内容可以直接进行输入输出。二进制文件直接将字符存储,不能将二进制文件的内容直接输出到屏幕上。所以,C语言所能够处理文件是按照存放形式分为文本文件和二进制文件。18、现在有以下定义,inta;doubleb;floatc;chark;则下面的表达式a/b+c-k值的类型为:A、intB、doubleC、floatD、char标准答案:2知识点解析:双目运算中两边运算量类型转换规律:运算数1运算数2转换结果类型短整型长整型短整型->长整型整型长整型整型->长整型字符型整型字符型->整型有符号整型无符号整型有符号整型->无符号整型整型浮点型整型->浮点型在a/b的时候,a,b的类型不一致,根据类型转换规则,把整型转换成double类型,之后的加,减类似。转化规则为char,short→int→unsigned→long→double←float19、若有定义:char*st="howareyou";下列程序段中正确的是A、chara[11],*p;strcpy(p=a+1,&st[4]);B、chara[11];strcpy(++a,st);C、chara[11];strcpy(a,st);D、chara[],*p;strcpy(p=&a[1],st+2);标准答案:1知识点解析:本题综合考查字符数组的赋值和strcpy函数的用法。C语言不允许用赋值表达式对字符数组赋值,如下面的语句就是非法的:strl=“China”,如果想把“China”这5个字符放到数组strl中,除了逐个地输入外,还能使用strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如:strcpy(strl,“China”);或strcpy(strl,str2);注意,不能企图用以下语句来实行赋值(将str2的值传给strl):strl=str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。strcpy函数的结构是:strcpy(字符数组1,字符串2)其中,需要注意的是,字符数组1的长度不应小于字符串2的长度,“字符数组1”必须写成数组名形式,如(strl),“字符串2”可以是字符数组名,也可以是字符串常量,不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。20、若变量已正确定义并赋值,下面符合C语言语法的表达式是A、m:=5B、c=b=a=lC、float8%5D、x+5=y+2标准答案:2知识点解析:选项A)中的赋值方法为Pascal语言赋值格式;C语言中赋值直接为“=”,无冒号;选项D)中“x+5=y+2”赋值格式错误,赋值号左边不可以出现常量,也不可以同时出现两个变量。选项C)应改为(float)8%3三、选择题(2分)(本题共30题,每题1.0分,共30分。)21、有以下程序:main(){inti,s=1;for(i=1;i<50;i++)if(!(i%5)&&!(i%3))s+=i;printf("%d\n",s);}程序的输出结果是A、409B、277C、1D、91标准答案:8知识点解析:本题是计算50之内的自然数相加之和,题中if语句括号中的条件表达式!(i%5)&&!(i%3)表明只有能同时被5和3整除的数才符合相加的条件,1~49之间满足这个条件的只有3个数,15,30,45,因为s的初始值为1,所以s=1+15+30+45=91。故正确答案为D)。22、若运行时给变量x输入12,则以下程序的运行结果是main(){intx,y;scanf("%d",&x);y=x>12?x+10:x-12;printf("%d\n",y);}A、0B、22C、12D、10标准答案:1知识点解析:本题考查的是三目运算符的用法,三目运算符的形式为(表达式1)?(表达式2):(表达式3)。当(表达式1)的值为真时,求(表达式2)的值为整个表达式的值;如果(表达式1)的值为假,则求(表达式3)的值为整个表达式的值。题中,表达式x>12的结果为假,所以执行的语句是x-12,最终y的值应该是0。23、已知intt=0;while(t=1){…}则以下叙述正确的是A、循环控制表达式的值为0B、循环控制表达式的值为1C、循环控制表达式不合法D、以上说法都不对标准答案:2知识点解析:t=1是将t赋值为1,所以循环控制表达式的值为1。而判断t是否等于1时应用t==1,注意“=”与“==”的用法。24、有以下程序:#include<stdio.h>#include<string.h>main(){chara[]={’a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’\0’};inti,j;i=sizeof(a);j=strlen(a);printf("%d,%d\b",i,j);}程序运行后的输出结果是A、9,9B、8,9C、1,8D、9,8标准答案:8知识点解析:本题考查了求数据类型长度的运算符sizeof和求字符串长度的函数strlen的区别。strlen计算的是一个字符串的实际字符个数,如果字符串放在字符数组中,则函数strlen的值为’\0’之前的全部字符个数。而sizeof求出的是数据占据存储空间的字节数,当然也要包括字符串的结束标志符’\0’。25、以下能正确定义一维数组的选项是A、inta[5]={0,1,2,3,4,5}B、chara[]={’0’,’1’,’2’,’3’,’4’,’5’,’\0’};C、chara={’A’,’B’,’C’};D、inta[5]="0123";标准答案:2知识点解析:选项A)中,定义的初值个数大于数组的长度;选项C)中,数组名后少了中括号;选项D)中,整型数组不能赋予字符串。26、有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是A、编译出错B、9C、21D、9标准答案:2知识点解析:本题考查函数的综合知识。首先,我们可以利用强制转换类型转换运算符将一个表达式转换成所需类型。如:(double)a是将a转换成double类型;(int)(x+y)是将x+y的值转换成整型。本题可按部就班地逐步运算:fun((int)fun(a+c,b),a-c)fun((int)fun(10,5),2-8)fun((int)15.000000,-6)fun(15,-6)927、若有下面的程序段:chars[]="china";char*p;p=s;则下列叙述正确的是A、s和p完全相同B、数组s中的内容和指针变量p中的内容相等C、s数组长度和p所指向的字符串长度相等D、*p与s[0]相等标准答案:8知识点解析:字符型指针变量p中存放的是"china"的首地址,所以选项A)和B)错误。e数组长度为6,而p所指向的字符串长度为5,二者不相等,排除选项C)。28、以下程序的输出结果是voidfun(int*s){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}A、34756B、23345C、35745D、12345标准答案:4知识点解析:本题考查了通过数组首地址引用数组元素的方法。第一次执行fun(a)后,a[0]=3,a[1]=5。第二次执行fun(a)时,因为static变量j保存着上次执行时的值为2,所以a[2]=7,最后数组a={3,5,7,4,5}。故正确答案为选项C)。29、下面的程序段运行后,输出结果是inti,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",x);A、9B、不确定值C、0D、18标准答案:4知识点解析:本题主要考查的用二维数组首地址和下标来引用二维数组元素的方法。通过分析可知,程序中的双重循环定义了一个如下的二维数组:由于数组的下标是从0开始的,所以二维数组元素a[i][j]表示的是二维数组a的第i+1行、第j+1列对应位置的元素。30、若有语句:char*line[5];,以下叙述中正确的是A、定义line是一个数组,每个数组元素是一个基类型为char为指针变量B、定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C、定义line是一个指针数组,语句中的。号称为间址运算符D、定义line是一个指向字符型函数的指针标准答案:1知识点解析:C语言中[]比:优先级高,因此line先与[5]结合,形成line[5]形式,这是数组形式,它有5个元素,然后再与line前面的“*”结合,表示此数组是一个指针数组,每个数组元素都是一个基类型为char的指针变量。31、下列程序执行后的输出结果是voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}A、6B、7C、8D、9标准答案:1知识点解析:函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部编版一年级语文上册开学第一课
- 玻璃幕墙工程承包合同
- 黄蓝扁平风志愿者服务模板
- 领导力发展成为高效能领导者
- 革新理念开启新纪元-新能源车技术变革的研究与应用展望
- 音乐产业中的数据挖掘与价值发现
- 颠覆传统模式新零售技术推动商业体验升级
- 顾客体验为核心的零售营销策略优化
- 防灾减灾安全教育培训
- 青少年传统文化与艺术培训的未来展望
- 配电柜维护保养施工方案范文
- 2025年山东东营市事业单位上半年统考(7.26)历年自考难、易点模拟试卷(共500题附带答案详解)
- 贸易安全意识培训
- 管理学基础-形考任务二-国开-参考资料
- 大数据分析在运维中的应用-第1篇-深度研究
- 投标标前协议书范本
- 2025年中国鳕鱼行业市场全景评估及发展战略规划报告
- 交流激励下的锯齿环状表面介质阻挡放电特性
- 全面指南:2024年医学整形美容医院员工手册
- 2025年度食用菌产业园区公共设施运营管理合同3篇
- 《费孝通-乡土中国》差序格局
评论
0/150
提交评论