《国家二级(C语言)笔试模拟试卷197(题后含答案及解析).docx》由会员分享,可在线阅读,更多相关《国家二级(C语言)笔试模拟试卷197(题后含答案及解析).docx(13页珍藏版)》请在优知文库上搜索。
1、国家二级(C语言)笔试模拟试卷197(题后含答案及解析)题型有:1.选择题2.填空题选择题(I/O、21-40每题2分,11-20每题1分,共70分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。1 .对于长度为n的线性表,在最坏的情况下,下列各排序法所对应的比较次数中三确的是A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(nl)2正确答案:D解析:冒泡排序法在最坏的情况下需要比较的次数为n(n-1)/2,快速排序法在最坏的情况下需要比较的次数也为n(n-l)2o2 .下列对队列的叙述正确的是()。A.队列属于非线性表B.队列
2、按“先进后出”原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据正确答案:D解析:队列是“先进先出”的数据结构,栈是“先进后出”的数据结构,它们都是特殊的线性表。队列在队头删除数据。3 .下列叙述中正确的是()。A. 一个算法的空间复杂度大,则其时间复杂度也必定大B. 一个算法的空间复杂度大,则其时间复杂度必定小C. 一个算法的时间复杂度大,则其空间复杂度必定小D.上述三种说法都不对正确答案:D解析:算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所渭算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。算法的时间复杂度
3、和空间复杂度没有直接关系O4.下列叙述中正确的是()。A.程序设计就是编制程序B.程序的测试必须由程序员自己去完成C.程序经调试改错后还应进行再测试D.程序经调试改错后不必进行再测试正确答案:C解析:软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,软件没计是确定系统的物理模型。软件测试即使用人工或自动手段来运行或测定某个系统的过程,其日的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件调试后要进行回归测试,防止引进新的错误。5.下列选项中不属于软件生命周期开发阶段任务的是()oA.软件测试B.概要设计C.软件维护D.详细设计正确答案:B解析:软件生
4、命周期分为软件定义、软件开发及软件运行维护3个阶段,其中详细设计、软件编码和软件测试都属于软件开发阶段。6 .下列叙述中正确的是()oA.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令正确答案:A解析:软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,软件交付使用后还需要进行维护。软件运行维护阶段:软件投入运行,并在使用中不断地维护,进行必要的扩充和删改。7 .下列叙述中,不符合良好程序设计风格要求的是()oA.程序的效率第一,清晰第二8 .程序的可读性好C.程序中要有必要的注释D.输入数据前要
5、有提示信息正确答案:A解析:程序设计的风格主要强调:清晰第一,效率第二。9 .数据库设计的根本目标是要解决()。A.数据共享问题B.数据安全问题C.大量数据存储问题D.简化数据维护正确答案:A解析:数据库技术的根本目标是解决数据的共享问题。10 在E-R图中,用来表示实体之间联系的图形是()。A.矩形B.椭圆形C.菱形D.平行四边形正确答案:C解析:E-R模型的图示法:用矩形表示实体集;用椭圆形表示属性;用菱形表示联系。11 .下列叙述中错误的是()oA.在数据库系统中,数据的物理结构必须与逻辑结构一致B.数据库技术的根本目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统的基础上
6、建立数据库D.数据库系统需要操作系统的支持正确答案:A解析:数据的物理结构和逻辑结构有高度的独立性,结构不必一致。12 .算法中,对需要执行的每一步操作,必须给出清楚、严格的规定.这)三属于算法的(A.正当性B.可行性C.确定性D.有穷性正确答案:C解析:算法具有5个特性:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。13 .以下选项中不合法的标识符是()oA. printB. FORC. &aD. 00正确答案:C解析:C语言中标识符的命名必须遵守一定的规则:标识符由字母、数字和下划线组成,并且第一个字符必须是字母或下划线。同时,在C语言的标识符中是区分大小写字母的。C选项中的
7、标识符以&开头,不符合C语言中标识符的命名规则。13.设有定义:Etk=O;,以下选项的四个表达式中与其他三个表达式的值不相同的是()oA. k+B. k+=lC. #NAME?D. k+1正确答案:A解析:凡是表达式都有一个值,即运算结果。k+的表达式值为0,k再进行增1运算;k+=l是赋值表达式,其作用是取k中的值加1后再放到k变量中,即表达式的值为1;+k是先进行k增1运算,表达式的值为1;k+l=0+l,其运算的结果为1。所以选项A中表达式的值与其他三个表达式不同。14.有以下语句:intb;charcll;,则正确的输入语句是()。A. SCanf(d%s”,&b,&C);B. SC
8、anf(d%s”,&b,C);C. scanfCt%d%s,b,C);D. SCanf(%d%s”,b,&C);正确答案:B15 .以下叙述中正确的是()oA.调用Printf函数时,必须要有输出项B.使用putchar函数时,必须在之前包含头文件stdio.hC.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCn码正确答案:B16 .设有定义:inta=2,b=3,c=4;,则以下选项中值为0的表达式是()。A. (!a=l)&(!b=0)B. (a3)&!4|1=0&!4|1=0&0|1=0|1=1选项C的值
9、为“2&3=1”。选项D的值为“2|(6)&(2)=2|l=lo所以只有选项A的值为0。注意:在进行逻辑与运算时,若“&”的左边运算结果已经为0,则“&”右边的表达式将不再进行计算,结果总为0;在进行逻辑或运算时,若“|”的左边运算结果已经为1,则“|右边的表达式也将不再进行计算,结果总为1。17 .有以下程序:main()inta=0,b=0,C=O,d=0;if(a=l)b=l;c=2;elsed=3;Printf(%d,%d,%d,%dn,a,b,c,D);程序输出()A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错正确答案:D解析:C语言规定最左边变量所得到的新值就是
10、赋值表达式的值,故“if(a=l)”条件表达式为真,b=l;else总是与上面最近的没有被使用的if配对,导致不合法的if-else结构,if语句后面的两条语句应用“)”括起来。18 .以下关于逻辑运算符两侧运算对象的叙述中正确的是()oA.只能是整数。或1B.只能是整数0或非0整数C.可以是结构体类型的数据D.可以是任意合法的表达式正确答案:D解析:逻辑运算的对象可以是C语言中任意合法的表达式。19.有以下程序:main()inta=l,b;for(b=1:b=8)break;if(a%2=l)a+=5;continue;)a-=3:Printf(%dn,B);)程序运行后的输出结果是()。
11、A. 3B. 4C. 5D. 6正确答案:B解析:本题是考查手工模拟执行程序的能力。a初值是1,循环开始时b值为1,由于a=8为假,不执行break,但a%2=l为真,执行a+=5,a值变为6,再执行COMinUe跳过不执行a-=3语句,而立即开始下一次循环。这时b值为2,由于a值为6,a=8仍为假,不执行break,但a%2=l为假,不执行复合语句“a+=5;ContinUe;”而执行a-=3,a值变为3。再开始下一次循环,这时b值为3。由于a值为3,a=8仍为假,不执行break,但a%2=l为真,执行a+=5,a值变为8,再执行COntinUe跳过不执行a-=3语句,而立即开始下一次循环
12、。这时b值为4。由于a值为8,a=8为真,执行break,停止for循环。此时输出的b值应为4。20.在以下给出的表达式中,与WhiIe(E)中的(E)不等价的表达式是()。A. (!E=O)B. (E0E0)C. (E=O)D. (E!=0)正确答案:C解析:选项C表示E条件为假时,(E=O)为真。其他都与“(E)”等价。21.有以下程序:mian()inti,j;for(i=l;i4;i+)for(j=i;j4J+)printf(4t%d*%d=%d,i,j,i*j);Printf(n);程序运行后的输出结果是()0A. 1*1=11*2=21*3=3B. 1*1=11*2=21*3=32
13、*1=22*2=42*2=42*3=63*1=33*3=9C. 1*1=1D. 1*1=11*2=22*2=42*1=22*2=41*3=32*3=63*3=93*1=33*2=63*3=9正确答案:B解析:在一个循环体内又完整地包含了另一个循环体的,称为循环嵌套,外循环的i值分别为1、2、3,当i=l时,,内循环j=l时,输出1*1=1;当内循环j=2时,输出1*2=2;当内循环j=3时,输出1*3=3;当i=2时,内循环j=2时,输出2*2=4;当内循环j=3时,输出2*3=6;当i=l,内循环j=3时,输出3*3=9。22.有以下程序:#includemain()charcl=,c2=t
14、2,;cl=getchar();c2=getchar();putchar(c1);putchar(c2);当运行时输入:aV回车后,以下叙述正确的是()oA.变量Cl被赋予字符a,c2被赋予回车符B.程序将等待用户输入第2个字符C.变量CI被赋予字符a,c2中仍是原有字符2D.变量Cl被赋予字符a,c2中将无确定值正确答案:A解析:函数getchar()的作用是从终端(或系统隐含的输入没备)输入一个字符,且只能接收一个字符(回车符也算一个字符)。所以本题中Cl被赋值字符a,c2被赋予回车符。23.以下叙述中错误的是()。A. gets函数用于从终端读入字符串B. getchar函数用于从磁盘文件读入字符C. fputs函数用于把字符串输出到文件D. fwrite函数用于以二进制形式输出数据到文件正确答案:B解析:getchar函数用于从终端或者键盘输入字符,getc用于从磁盘文件中读入字符。24.有以下程序A:intfl(intx,inty)returnxy?x:y;intf2(intx,inty)returnxy?y:x;)main()