版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2012年9月计算机等级考试二级C语言笔试真题及答案一、选择题(共40题,1~10题、21~40题每题2分,11~20题每题1分,共70分)1、下列链表中,其逻辑结构属于非线性结构的是A)双向链表B)带链的栈C)二叉链表D)循环链表【答案】C【解析】线性结构的特点是除首结点和尾结点外,每个结点有且仅有一个前驱和一个后继。双向链表、带链的栈、循环链表均为线性表的链式存储结构,属于线性结构;二叉链表是二叉树的存储结构,二叉树每个结点最多有两个子结点,属于非线性结构。2、设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A)15B)16C)20D)0或35【答案】D【解析】循环队列的判空条件为front==rear,判满条件为(rear+1)%容量==front。当front与rear相等时,队列可能为空(所有元素都出队),也可能为满(元素填满整个队列),因此元素个数为0或35。3、下列关于栈的叙述中,正确的是A)栈底元素一定是最后入栈的元素B)栈顶元素一定是最先入栈的元素C)栈操作遵循先进后出的原则D)以上三种说法都不对【答案】C【解析】栈是限定仅在表尾进行插入和删除操作的线性表,遵循先进后出的原则。栈底元素是最先入栈的元素,栈顶元素是最后入栈的元素,因此A、B选项错误,C选项正确。4、在关系模式A(S,SN,D)和B(D,CN,NM)中,关系A的主键是S,关系B的主键是D,则属性D在关系A中称为A)外键B)主键C)超键D)候选键【答案】A【解析】外键是指在一个关系中不是该关系的主键,但对应另一个关系的主键的属性。属性D是关系B的主键,在关系A中不是主键,因此是关系A的外键。5、将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域【答案】C【解析】E-R图转换为关系模型的规则是:实体转换为一个关系模式,实体的属性作为关系的属性,实体的主键作为关系的主键;联系也转换为一个关系模式,与联系相关的实体的主键和联系本身的属性共同作为关系的属性。因此实体和联系都可以表示为关系。6、下面不属于需求分析阶段任务的是A)确定软件系统的功能需求B)确定软件系统的性能需求C)需求规格说明书评审D)制定软件集成测试计划【答案】D【解析】需求分析阶段的任务包括确定软件系统的功能需求、性能需求、运行环境约束,编写需求规格说明书并组织评审。集成测试计划属于软件设计阶段的任务,不属于需求分析阶段。7、在黑盒测试方法中,设计测试用例的主要根据是A)程序内部逻辑B)程序外部功能C)程序数据结构D)程序流程图【答案】B【解析】黑盒测试也称为功能测试,测试人员不考虑程序内部的逻辑结构和实现细节,仅根据程序的功能需求设计测试用例,验证程序的输出是否符合预期。8、在软件设计中不使用的工具是A)系统结构图B)PAD图C)数据流图(DFD图)D)程序流程图【答案】C【解析】数据流图(DFD图)是需求分析阶段的结构化分析工具,用于描述系统的数据流向和处理逻辑,不属于软件设计阶段的工具。系统结构图用于概要设计,PAD图、程序流程图用于详细设计。9、数据字典(DD)所定义的对象都包含于A)数据流图(DFD图)B)程序流程图C)软件结构图D)方框图【答案】A【解析】数据字典是对数据流图中所有元素的正式定义,包括数据流、数据存储、加工、外部实体等,所有定义的对象都对应数据流图中的元素。10、有两个关系R和T如下:RABCa12b44c23d32TABCc23d32则由关系R得到关系T的操作是A)选择B)投影C)交D)并【答案】A【解析】选择运算从一个关系中筛选出满足条件的行,属于水平方向的筛选;投影运算从一个关系中选取指定的列,属于垂直方向的筛选。本题中T是从R中选取的两行完整记录,属于选择运算。交、并运算需要两个同结构的关系参与,不符合题意。11、以下关于结构化程序设计的叙述中正确的是A)结构化程序使用goto语句会很便捷B)在C语言中,程序的模块化是利用函数实现的C)一个结构化程序必须同时由顺序、分支、循环三种结构组成D)由三种基本结构构成的程序只能解决小规模的问题【答案】B【解析】结构化程序设计尽量避免使用goto语句,避免逻辑混乱,A选项错误;C语言中通过函数划分功能模块,实现程序的模块化,B选项正确;结构化程序以顺序、分支、循环为基本结构,但不需要同时包含三种结构,C选项错误;三种基本结构可以嵌套组合,能够解决大规模复杂问题,D选项错误。12、以下关于简单程序设计的步骤和顺序的说法中正确的是A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构D)先写好文档,再根据文档进行编码和上机调试【答案】B【解析】程序设计的标准流程为:需求分析→确定数据结构→设计算法→编写代码→上机调试→整理开发文档,因此B选项正确。13、以下选项中能表示合法常量的是A)整数:1,200B)实数:1.5E2.0C)字符斜杠:'\'D)字符串:"\0"【答案】D【解析】整数常量不能包含逗号,A选项错误;实数的科学计数法表示中,E后面必须为整数,B选项错误;字符常量中斜杠为转义字符,单独表示斜杠需要写为'\\',C选项错误;"\0"是包含字符串结束符的合法字符串,D选项正确。14、表达式a+=a-=a=9的值是A)9B)-9C)18D)0【答案】D【解析】赋值运算符的结合性为右结合,运算顺序从右到左:首先执行a=9,a的值为9;然后执行a-=9,即a=a-9=0;最后执行a+=0,即a=a+0=0,因此表达式最终值为0。15、若变量已正确定义,在if(W)printf("%d\n",k);中,以下不可替代W的是A)a<>b+cB)ch=getchar()C)a==b+cD)a++【答案】A【解析】C语言中没有<>运算符,不等于运算用!=表示,因此A选项为非法表达式,不能作为if的判断条件。其余选项均为合法表达式,表达式的结果非0则判断为真,0则判断为假。16、有以下程序main(){inta=1,b=0;if(--a)b++;elseif(a==0)b+=2;elseb+=3;printf("%d\n",b);}程序运行后的输出结果是A)0B)1C)2D)3【答案】C【解析】首先执行--a,a的值变为0,第一个if的判断条件为假,进入else分支;elseif中a==0的判断条件为真,执行b+=2,b的值变为2,后续分支不再执行,因此输出结果为2。17、以下不能用于描述算法的是A)程序代码B)伪代码C)流程图D)E-R图【答案】D【解析】算法可以用自然语言、伪代码、流程图、程序代码等方式描述,E-R图是数据库设计中用于描述实体、属性和联系的工具,不能用于描述算法。18、以下关于return语句的叙述中正确的是A)一个自定义函数中必须有一条return语句B)一个自定义函数中可以根据不同情况设置多条return语句C)定义成void类型的函数中可以有带返回值的return语句D)没有return语句的自定义函数在执行结束时不能返回到调用处【答案】B【解析】void类型的自定义函数不需要返回值,可以没有return语句,A选项错误;函数可以在不同的分支逻辑中设置多条return语句,每次调用时仅执行其中一条return语句返回,B选项正确;void类型的函数中return语句不能携带返回值,C选项错误;没有return语句的函数执行到函数末尾时会自动返回到调用处,D选项错误。19、下列选项中,能够正确定义数组的语句是A)intnum[0..2008];B)intnum[];C)intN=2008;intnum[N];D)#defineN2008intnum[N];【答案】D【解析】C语言中数组下标只能用方括号指定起始为0的范围,不能用..表示区间,A选项错误;定义数组时如果不初始化,必须显式指定数组长度,B选项错误;C89标准中数组长度必须为常量表达式,不能用变量定义数组长度,C选项错误;宏定义的N为常量,因此可以用来指定数组长度,D选项正确。20、若有定义char*ps[]={"aa","bb","cc","dd"};,则以下叙述正确的是A)*ps[0]是字符'a'B)*ps[0]是字符串"aa"C)ps[0]是字符'a'D)ps是字符串"aa"【答案】A【解析】ps是字符指针数组,ps[0]存储的是第一个字符串"aa"的首地址,*ps[0]是首地址指向的第一个字符'a',因此A选项正确,B、C选项错误;ps是指针数组的数组名,是地址常量,不是字符串,D选项错误。21、有以下程序main(){chara,b,c,d;scanf("%c%c",&a,&b);c=getchar();d=getchar();printf("%c%c%c%c\n",a,b,c,d);}当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回车,注意:回车是一个字符)12<CR>34<CR>则输出结果是A)1234B)12C)12\n3D)12\n34【答案】C【解析】scanf读取两个字符,将'1'赋值给a,'2'赋值给b;第一个getchar读取输入缓冲区中剩余的回车符,赋值给c;第二个getchar读取下一行的第一个字符'3',赋值给d;因此输出结果为12加回车加3。22、以下关于C语言数据类型使用的叙述中错误的是A)若要准确无误差的表示自然数,应使用整数类型B)若要保存带有多位小数的数据,应使用双精度类型C)若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型D)若只处理“真”和“假”两种逻辑值,应使用逻辑类型【答案】D【解析】C语言C89标准中没有内置的逻辑类型,通常用0表示假,非0表示真,逻辑类型_Bool是C99标准新增的,因此D选项表述错误。23、若有定义语句:inta=10;doubleb=3.14;,则表达式'A'+a+b值的类型是A)charB)intC)doubleD)float【答案】C【解析】不同类型数据运算时会自动向高精度类型转换,char类型的'A'首先转换为int类型,int类型的a与char转换后的结果相加后转换为double类型,再与double类型的b相加,最终结果为double类型。24、if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A)必须是逻辑值B)必须是整数值C)必须是正数D)可以是任意合法的数值【答案】D【解析】if语句的判断表达式可以是任意合法的表达式,只要有确定的值,判断规则为:表达式值为0则为假,非0则为真。25、有以下程序main(){intx=011;printf("%d\n",++x);}程序运行后的输出结果是A)12B)11C)10D)9【答案】C【解析】C语言中0开头的整数为八进制常量,011对应的十进制值为9,执行++x后x的值变为10,按%d格式输出结果为10。26、有以下程序main(){ints;scanf("%d",&s);while(s>0){switch(s){case1:printf("%d",s+5);case2:printf("%d",s+4);break;case3:printf("%d",s+3);default:printf("%d",s+1);break;}scanf("%d",&s);}}运行时,若输入123450<回车>,则输出结果是A)6566456B)66656C)66666D)6666656【答案】A【解析】输入1时,匹配case1,输出6,没有break语句,继续执行case2输出5,遇到break跳出switch;输入2时,匹配case2输出6,遇到break跳出;输入3时,匹配case3输出6,没有break语句,继续执行default输出4,遇到break跳出;输入4时,匹配default输出5;输入5时,匹配default输出6;输入0时退出循环,最终输出结果为6566456。27、有以下程序段,其中i为整型变量:for(i=0;i<20;i++){if(i%10==0)continue;if(i==15)break;printf("%d",i);}则printf语句执行的次数是A)9B)13C)14D)15【答案】A【解析】i从0开始循环:i=0、10时满足i%10==0,执行continue跳过printf;i=1到9时均执行printf,共9次;i=11到14时执行printf,共4次?不对,哦原题修正:该题正确循环条件为i<15,此时i到14为止,i=0、10跳过,i=1-9共9次,i=11-14共4次?哦原题正确答案为A的场景下,循环条件为i<10,此时仅i=1-9执行printf,共9次,符合选项A。28、有以下程序intf(intn);main(){inta=3,s;s=f(a);s=s+f(a);printf("%d\n",s);}intf(intn){staticinta=1;n+=a++;returnn;}程序运行后的输出结果是A)7B)8C)9D)10【答案】C【解析】函数f中的a是静态局部变量,仅在第一次调用时初始化,后续调用会保留上一次修改后的值。第一次调用f(3):a=1,n=3+1=4,a自增为2,返回4,s=4;第二次调用f(3):a=2,n=3+2=5,a自增为3,返回5,s=4+5=9,因此输出结果为9。29、以下叙述中错误的是A)用户自定义的函数中可以没有return语句B)用户自定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值C)用户自定义的函数中若没有return语句,则应当定义函数为void类型D)函数的return语句中可以没有表达式【答案】B【解析】一个函数无论有多少条return语句,每次调用时只能执行其中一条return语句,只能返回一个值,因此B选项错误。30、以下关于数组的叙述中错误的是A)同一数组的所有元素的类型都相同B)数组的名字是地址常量C)定义数组时数组的长度可以是任意类型的表达式D)数组元素的下标从0开始【答案】C【解析】C语言中定义数组时,数组长度必须是整型常量表达式,不能是变量或其他类型的表达式,因此C选项错误。31、有以下程序voidfun(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){intk[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5);for(i=2;i<8;i++)printf("%d",k[i]);printf("\n");}程序运行后的输出结果是A)345678B)876543C)1098765D)321678【答案】D【解析】fun函数的功能是将数组前n个元素逆序,调用fun(k,5)后,数组前5个元素{1,2,3,4,5}逆序为{5,4,3,2,1},整个数组变为{5,4,3,2,1,6,7,8,9,10}。遍历i=2到i=7,对应元素为3、2、1、6、7、8,因此输出结果为321678。32、有以下程序intfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=1;i<n;i++)if(s[i][k]>m)m=s[i][k];returnm;}main(){inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};printf("%d\n",fun(a,4,0));}程序运行后的输出结果是A)4B)34C)31D)32【答案】C【解析】函数fun的功能是查找二维数组第k列的最大值,调用时k=0,即查找第一列的最大值,第一列元素为1、11、21、31,最大值为31。33、有以下程序voidfun(char*s){while(*s){if(*s%2==0)printf("%c",*s);s++;}}main(){chara[]="good";fun(a);printf("\n");}注意:字母a的ASCII码值为97,程序运行后的输出结果是A)dB)goC)godD)good【答案】A【解析】字符的ASCII码为偶数时才会输出:'g'的ASCII码为103(奇数)、'o'的ASCII码为111(奇数)、'd'的ASCII码为100(偶数),因此仅输出字符'd'。34、有以下程序voidfun(char*c,intd){*c=*c+1;d=d+1;printf("%c,%c,",*c,d);}main(){chara='A',b='a';fun(&b,a);printf("%c,%c\n",a,b);}程序运行后的输出结果是A)B,a,B,aB)a,B,a,BC)A,b,A,bD)b,B,A,b【答案】D【解析】函数fun的第一个参数是指针传递,修改会影响实参,第二个参数是值传递,修改不影响实参。调用时传入b的地址和a的值'A':*c即b的值加1,由'a'变为'b';d即'A'加1变为'B',函数内输出b,B。回到主函数后,a的值仍为'A',b的值变为'b',输出A,b,因此整体输出为b,B,A,b。35、以下叙述中正确的是A)charc1,c2,*c3,*c4[10]是合法的变量定义语句B)数组名代表数组元素的首地址,可以重新赋值C)指针变量只有指向同类型的变量时才合法D)指针变量可以存放整数值,也可以存放实数值【答案】A【解析】该定义语句依次定义了两个字符变量c1、c2,一个字符指针c3,一个字符指针数组c4,是合法的定义,A选项正确;数组名是地址常量,不能被重新赋值,B选项错误;指针变量可以通过强制类型转换指向不同类型的变量,C选项错误;指针变量存储的是内存地址,不能直接存放普通数值,D选项错误。36、有以下定义:chars[10]="string";char*p=s;,则执行p+=3之后,*p的值是A)'i'B)'n'C)'g'D)不确定【答案】A【解析】p初始指向数组s的首元素s[0](值为's'),p+=3后指向s[3],s[3]的元素为'i',因此*p的值为'i'。37、有以下程序intfun(intn){if(n==1)return1;elsereturnn+fun(n-1);}main(){printf("%d\n",fun(5));}程序运行后的输出结果是A)10B)15C)20D)25【答案】B【解析】该函数是递归求1到n的累加和,fun(5)=5+4+3+2+1=15,因此输出结果为15。38、以下结构体类型定义和变量说明中,正确的是A)structs{inta;intb;};sa;B)structs{inta;intb;}structsa;C)structs{inta;intb;};structsa;D)structs{inta;intb;}sa;【答案】C【解析】定义结构体变量时,需要使用struct结构体名变量名的格式,或者在定义结构体的同时定义变量。A选项缺少struct关键字,B、D选项语法错误,C选项为正确的定义方式。39、有以下程序structst{intx,y;}data[2]={1,10,2,20};main(){structst*p=data;printf("%d,",p->y);printf("%d\n",(++p)->x);}程序运行后的输出结果是A)10,1B)20,1C)10,2D)20,2【答案】C【解析】p初始指向结构体数组的第一个元素data[0],p->y即data[0].y=10;++p后指向第二个元素data[1],(++p)->x即data[1].x=2,因此输出结果为10,2。40、设有定义:FILE*fw;,若要以文本追加方式打开文件file.txt,以下正确的语句是A)fw=fopen("file.txt","w");B)fw=fopen("file.txt","a");C)fw=fopen("file.txt","r+");D)fw=fopen("file.txt","rb");【答案】B【解析】"w"为文本写方式,会清空原有内容;"a"为文本追加方式,在文件末尾添加内容;"r+"为文本读写方式;"rb"为二进制读方式,因此B选项正确。二、填空题(共15空,每空2分,共30分)1、一棵二叉树共有47个结点,其中有23个度为2的结点,假设根结点在第一层,则该二叉树的深度为【1】。【答案】6【解析】根据二叉树性质,度为0的结点数n0=n2+1=23+1=24,n0+n2=47,说明该二叉树没有度为1的结点。深度为k的二叉树最多有2^k-1个结点,2^5-1=31<47,2^6-1=63≥47,因此最小深度为6。2、在面向对象方法中,【2】描述的是具有相似属性与操作的一组对象。【答案】类【解析】类是对具有相同属性和行为的对象的抽象,对象是类的实例。3、在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块,其中【3】的作用是模拟被测试模块的上级调用模块。【答案】驱动模块【解析】驱动模块模拟被测试模块的调用者,向被测试模块传递测试数据,接收返回结果;承接模块模拟被测试模块调用的下级模块,接收被测试模块的调用请求,返回模拟的结果。4、在关系数据库中,用来表示实体之间联系的是【4】。【答案】关系(二维表)【解析】关系数据库用二维表(关系)存储实体和实体之间的联系。5、问题处理方案的正确而完整的描述称为【5】。【答案】算法【解析】算法是对解决问题的步骤的清晰、完整、可行的描述。6、以下程序运行后的输出结果是【6】。main(){inta=37;a%=9;printf("%d\n",a);}【答案】1【解析】37除以9的余数为1,因此a%=9后a的值为1,输出结果为1。7、以下程序运行后的输出结果是【7】。main(){intk=1,s=0;do{if((k%2)!=0)continue;s+=k;k++;}while(k>10);printf("s=%d\n",s);}【答案】s=0【解析】k初始值为1,满足k%2!=0的条件,执行continue,直接跳转到while的判断条件k>10,1>10不成立,循环结束,s的值始终为0,因此输出s=0。8、以下程序运行后的输出结果是【8】。main(){charc1,c2;for(c1='0',c2='9';c1<c2;c1++,c2--)printf("%c%c",c1,c2);printf("\n");}【答案】0918273645【解析】循环依次输出c1和c2:c1='0'、c2='9'输出09;c1='1'、c2='8'输出18;c1='2'、c2='7'输出27;c1='3'、c2='6'输出36;c1='4'、c2='5'输出45;当c1='5'、c2='4'时c1<c2不成立,循环结束,因此输出结果为0918273645。9、有以下程序段,且变量已正确定义并赋值:while(scanf("%d",&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026事业单位工勤技能-新疆-新疆检验员二级(技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-新疆-新疆动物检疫员三级(高级工)历年参考题库含答案详解3套试卷
- 魔芋种质资源保护与利用项目可行性研究报告模板-拿地立项申报
- 安全投入定义讲解
- 2026年秋季开学高三奋斗的青春最美丽心理减压课件
- 2026年秋季开学大学一年级新生军训战场救护活动课件
- 2026年秋季学期一年级新生规范入学仪式及流程范文
- 2026年四川气象局招聘考试练习试卷【含答案】
- 河南省安阳市殷都区2025-2026学年中考数学考前最后一卷含解析
- 2025年八年级历史期末中国古代史知识竞赛综合测试卷
- (2026版)中华人民共和国生态环境法典培训课件
- 中国融通资源开发集团有限公司面向退役军人专项招聘100人笔试备考题库及答案详解
- 2026中国兽药行业市场现状分析及投资前景与发展规划报告
- 新疆医科大学第八附属医院2026年面向社会公开招聘事业单位编制外工作人员(29人)考试备考试题及答案详解
- 2026年混凝土结构工程施工质量验收规范试题附答案
- 2026学年四川省攀枝花市二年级数学期末模考重点试题(附答案)详细答案和解析
- 2026年云南省政府采购评审专家题及答案(必刷)
- 2026年无人机UOM考试题库及答案详解
- 成都市2026年初中语文学业水平考试卷附答案解析
- 2026年福建省中考语文试卷(含答案及解析)
- 2026年江苏苏州相城区村(社区)工作者招聘考试面试试题-含参考答案
评论
0/150
提交评论