您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 国家二级C语言程序设计机试(选择题)模拟试卷2
国家二级C语言程序设计机试(选择题)模拟试卷2(总分:80.00,做题时间:90分钟)一、选择题(总题数:40,分数:80.00)1.下列叙述中正确的是()。(分数:2.00)A.一个算法的空间复杂度大,则其时间复杂度也必定大B.一个算法的空间复杂度大,则其时间复杂度必定小C.一个算法的时间复杂度太,则其空间复杂度必定小D.算法的时间复杂度与空间复杂度没有直接关系√解析:解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为D。2.下列叙述中正确的是()。(分数:2.00)A.循环队列中的元素个数随队头指针与队尾指针的变化而动态变化√B.循环队列中的元素个数随队头指针的变化而动态变化C.循环队列中的元素个数随队尾指针的变化而动态变化D.以上说法都不对解析:解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数随队头指针和队尾指针的变化而变化。A选项正确。3.一个栈的初始状态为空。现将元素1,2,3,A,B,C依次入栈,然后再依次出栈,则元素出栈的顺序是()。(分数:2.00)A.1,2,3,A,B,CB.C,B,A,1,2,3C.C,B,A,3,2,1√D.1,2,3,C,B,A解析:解析:栈的修改是按“后进先出”的原则进行的,所以顺序应与入栈顺序相反,故C选项正确。4.一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为()。(分数:2.00)A.219B.229√C.230D.231解析:解析:二叉树中,度为0的结点数等于度为2的结点数加1,即n2=n0—1,叶子结点即为0,则n2=79,总结点数为n0+n1+n2=80+70+79=229。故B选项正确。5.对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为()。(分数:2.00)A.9B.10C.45√D.90解析:解析:冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+1=45,故C选项正确。6.下列各项中,对对象概念描述正确的是()。(分数:2.00)A.对象间的通信靠消息传递√B.对象是名字和方法的封装体C.任何对象必须有继承性D.对象的多态性是指一个对象有多个操作解析:解析:对象之间进行通信的构造叫作消息,选项A正确。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,选项B错误。对象不一定必须有继承性,选项C错误。多态性是指同一个操作可以是不同对象的行为,选项D错误。7.下列各项中,不属于软件设计阶段任务的是()。(分数:2.00)A.软件总体设计B.算法设计C.制订软件并确认测试计划√D.数据库设计解析:解析:从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。所以A、B、D正确,C为软件测试阶段的任务。8.一般情况下,当对关系R和S进行自然连接时,要求R和s含有一个或者多个共有的()。(分数:2.00)A.记录B.行C.属性√D.元组解析:解析:自然连接是一种特殊的等值连接,它满足下面的条件:①两关系间有公共域;②通过公共域的等值进行连接,故c选项正确。9.下列各项与栈结构有关联的是()。(分数:2.00)A.数组的定义域使用B.操作系统的进程调度C.函数的递归调用√D.选择结构的执行解析:解析:递归调用的本质就是函数调用函数本身,直到满足特定条件时才停止,然后从最后被递归调用处返回。递归函数是通过栈来实现的,所以调用原则和栈的实现相一致。10.有两个关系R和T如下:则由关系R得到关系T的操作是()。(分数:2.00)A.选择B.交C.投影√D.并解析:解析:关系T是由关系R的第3、4行的元组组成的,很显然这是对关系R进行选择运算的结果。可以简单理解为:选择运算是对行的操作,投影运算是对列的操作。选择是从表中选出满足给定条件的元组组成新表。故C选项正确。11.有以下定义:structdata{inti;charc;doubled;}x;以下叙述中错误的是()。(分数:2.00)A.x的内存地址与x.i的内存地址相同B.structdata是一个类型名C.初始化时,可以对x的所有成员同时赋初值D.成员i、c和d占用的是同一个存储空间√解析:解析:i、c、d是结构体变量x中的三个不同的成员,占用不同的存储空间。12.以下函数的功能是计算a的n次方并作为函数值返回:doublefun(doublea,intn){inti;doubles=1.0;for(i=1;i=n;i++)s=——;returns:}为实现上述功能,函数中下画线处应填入的是()。(分数:2.00)A.s*iB.s*a√C.s+i*iD.s+a*a解析:解析:s为a的(i一1)次方的结果,所以令s=s*a即可得到a的i次方。13.有以下程序:#include#includemain(){charstr[]={“HelloBeijing”;printf(“%d,%d\n”,strlen(str),sizeof(str));}程序的运行结果是()。(分数:2.00)A.13,13B.13,14√C.13,15D.14,15解析:解析:strlen返回字符串的长度,结果为13;sizeof返回字符串所占存储空间的大小,由于字符串最后要加上一个'\0',所以结果为13+1=14。14.若有说明:typedefstruct{inta;charc;}}w;则以下叙述正确的是()。(分数:2.00)A.编译后系统为w分配5个字节B.编译后系统为w分配6个字节C.编译后系统为w分配58个字节D.编译后系统不为w分配存储空间√解析:解析:w是一个自定义类型,而不是变量,故编译后系统不为w分配存储空间。当使用w定义变量时才会为其定义的变量分配存储空间。15.以下叙述中错误的是()。(分数:2.00)A.同一个数组中所有元素的类型相同B.不可以跳过前面的数组元素,给后面的元素赋初值0C.定义语句:inta[10]={0};,给a数组中所有元素赋初值0D.若有定义语句:inta[4]={1,2,3,4,5};,编译时将忽略多余的初值√解析:解析:数组初始化时,若所赋初值多于所定义数组的元素个数时,编译器将会报错。16.若有以下定义:structtt{charname[10];charsex;}aa={aaaa”,,F’},*P=&aa;则错误的语句是()。(分数:2.00)A.scanf(“%C”,aa.sex);√B.aa.sex=getchar();C.printf(“%c\n”,(*P).sex);D.printf(“%c\n”,P一sex);解析:解析:SeX是一个char类型变量,不是地址,A项应为scanf(“%c”,&aa.sex);。17.C语言编译程序的功能是()。(分数:2.00)A.执行一个C语言编写的源程序B.把C源程序翻译成ASCIⅡ码C.把C源程序翻译成机器代码√D.把C源程序与系统提供的库函数组合成一个二进制执行文件解析:解析:编译程序的功能是将“高级语言”翻译为“机器语言”。每条c语言语句,经过编译最终都将转换成二进制的机器指令。18.有以下程序:#includeintfun(intn){if(1nreturnfun(n一1)+n;elsereturn0;}main(){prinff(“%d\n”,fun(3));}程序的运行结果是()。(分数:2.00)A.4B.5C.6√D.7解析:解析:fun函数是一个递归函数,n=3,返回f(3—1)+3=f(2)+3=f(1)+2+3=f(0)+1+2+3=0+6=6。19.有以下程序:#includemain(){intsum=0,x=5;d0{sum+=x;}while(!一一x);printf(“%d\n”,sum);}程序的运行结果是()。(分数:2.00)A.0B.5√C.14D.15解析:解析:先执行d0中的表达式sum+=x,则sum=sum+x=0+5=5,再执行while中的表达式,结果为0,退出循环,所以运行结果是5。20.有以下程序:#include#includetypedefstruct{charname[9];charsex;floatscore[2];}STU;voidf(STU*a){strcpy(a一name,“Zhao”);a一sex=‘m’;a一score[1]=90.0;}main(){STUc={“Qian”,'f',95,92.0},*d=&c;f(d);prinff(“%s,%c,%2.Of,%2.of\n”,d一name,c.ex,c.score[0],c.score[1]);}程序的运行结果是()。(分数:2.00)A.Qian,f,95,92B.Zhao,f,95,90C.Zhao,m,95,90√D.Zhao,f,95,92解析:解析:f函数调用时,结构体数组名作为实参传给了形参指针,使结构体指针a指向了数组c的首地址。因此,f持有了主函数中数组c的指针,可以对数组c中的元素赋值,故返回主函数之后,数组c中的成员值已被更新。21.关于C语言程序的下列说法中,正确的是()。(分数:2.00)A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套√C.函数的定义和调用均不可以嵌套D.函数的定义和调用均可以嵌套解析:解析:函数定义都是在函数外部进行的,而函数调用是在函数内部发生的,所以函数的定义不可以嵌套,但函数的调用可以嵌套。22.执行以下程序段后,s的值为()。inta[]={1,2,3,4,5,6,7,8,9},s=0,k;for(k=0;k(分数:2.00)A.13B.16√C.17D.45解析:解析:数组元素为:a[0]=1,a[1]=2…a[8]=9。k=0时,s=s+*(a+k)=0+1=1;k=2时,s=1+*(a+2)=l=3=4;k=4时,s=4+5=9;k=6时,s=9+7=16。23.有以下程序:#include#defineM5#definef(x,y)x*y+Mmain(){intk;k=f(2,3)*f(2,3);printf(“%d\n”,k);}程序的运行结果是()。(分数:2.00)A.22B.41√C.100D.121解析:解析:宏定义中的函数在调用时只做简单的替换功能。所以k=2*3+5*2*3+5=41。24.有以下程序:#includemain(){charch='Z';ch=(ch一'A'+1)%26+'A';putchar(ch);prinff(“\n”);}程序的运行结果是()。(分数:2.00)A.ZB.YC.BD.A√解析:解析:z的ASCII码是90,A的AScII码是65,所以ch=(ch一'A'+1)%26+'A'=26%26+65=65,65对应的字符即A。25.有以下程序:#includemain(){inti,j,k,a=5,b=6;i=(a==b)?++a:一一b;j=a++;k=b;printf(“%d,%d,%d\n”,i,j,k);}程序的运行结果是()。(分数:2.00)A.7,6,5B.5,5,5√C.7,5,5D.5,6,5解析:解析:i=(a==b)?++a:一一b;中先执行a::b,为否,根据三元运算符语法规则,执行一一b,此时b为5,赋给i,i.5;j=a++,将a:5先赋给j,再进行a++,k=b=5,故最后输出的是5,5,5。26.C语言程序中,若函数无返回值,则应该对函数说明的类型是()。(分数:2.00)A.intB.doubleC.charD.void√解析:解析:int表示返回值是整型,doub
本文标题:国家二级C语言程序设计机试(选择题)模拟试卷2
链接地址:https://www.777doc.com/doc-5648290 .html