计算机二级考试C语言练习题及答案(2).docx
一、选择题1) .下列叙述中正确的是()。A.调用Printf()函数时,必须要有输出项B.使用PUtChar()函数时,Stdio.h头文件Stdio.hC.在C语言中,整数可以以二进制、八进制或十六进制的形式输出D.调节getchar()函数读入字符时,可以从键盘上输入字符所对应的ASCII码正确答案:B答案解析:选项A,若Printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。2) .以下结构体类型说明和变量定义中正确的是()A. typedefstructintn;charc;REC;RECt1,t2;B. structREC;(intn;charc;RECt1,t2;C. typedefstructREC;intn=0;charc='A't1,t2;D.structintn;charc;REC;RECt1,t2;正确答案:A答案解析:定义结构体类型的一般形式为:StrUCt结构体名成员列表;StrUCt结构体名后不能加;号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为StrUett1,t2;选项A为用户自定义类型,其为正确的定义形式。3) .若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是()A.一对一B.一对多C.多对一D.多对多正确答案:B答案解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。4) .关于C语言的变量,以下叙述中错误的是()A.所谓变量是指在程序运行过程中其值可以被改变的量B.变量所占的存储单元地址可以随时改变C.程序中用到的所有变量都必须先定义后才能使用D.由三条下划线构成的符号名是合法的变量名正确答案:B答案解析:变量是指在程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单元。在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期间,这个分配的存储单元不会改变,但是其值可以变化。变量命名要符合标识符的规定,其中下划线是标识符的组成字符。程序中所有变量都必须先定义后使用。5) .当变量C的值不为2、4、6时,值也为真的表达式是().(c=2)I(c=4)II(c=6)B. (c>=2&&c<=6)M!(c%2)C. (c>=2&&c<=6)M(c%2!=1)D. (c>=2&&c<=6)I(c!=3)(c!=5)正确答案:D答案解析:逻辑或运算中,只要有一项为真,表达式的值就为真,故选项D中C的值不为2、4、6时,那么表达式(c>=2&&c<=6)以及(c!=3)、(c!=5)必有一个成立,表达式的值也为真。6) .在C语言中,函数返回值的类型最终取决于A,函数定义时在函数首部所说明的函数类型B.return语句中表达式值的类型C.调用函数时主调函数所传递的实参类型I).函数定义时形参的类型正确答案:A答案解析:在C语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律按整型处理。在定义函数时,对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数类型为主,即函数类型决定返回值的类型。二、程序填空题下列给定程序中,函数fun的功能是:把形参a所指数组中的最小值放在元素ao中,接着把a一所指数组中的最大值放在a1元素中;再把a所指数组元素中的次小值放在a2中,把a所指数组元素中的次大值放在a3,以此类推。例如,若a所指数组中的数据最初排列为:9、1423、6、5、8、7;则按规则移动后,数据排列为:1、9.2、8:3、7、4、6、5。形参13.中存放a所指数组中数据的个数。规定fum函数中的max存放当前所找的最大值,PX存放当前所找最大值的下标。请在程序的下划线处填人正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序在文件B1ANK1.C中。不得增行或删行,也不得更改程序的结构!uw1udr<*tdn.h>defineN9vodfun(n1atintn)IIrUitj,max.min.pi.pn.t:for(i*0;I<a-1;i2)Ifoundmaxmin=QJ;PX=Pn=i;for(ji+1;j<n;j*)1foundif(max<(2¾)Ia=*(jiP»j;I/foundif(nue>【3】)Imin«(i1;pnJ1Iif(p!*)II«aisa(i=min;p1)tjif(px=i)px«pn;Iif(!*+)ItBm(>÷1C*i÷I)Umax;a(px»hmain()IintbN=19.1,4.2,3.6.5,8.71.”pnntf("nTheOnPnA1data:n")sfor(i.0i<Nsi*)printf(-%4d-,b(i)spntf(n")sKn(b.N);printf("n1edaUaftermovingn*)for(i=Oi<Nsi*+)pntf("%4d",bi),pnntf(*n");【参考答案】ai(2)aj(3)aj【考点分析】本题考查:数组的引用;if语句条件表达式,如果表达式的值为真,则执行下面的语句,如果该值为假,财不执行下面的语句。【解题思路】填空1:for循环语句循环体中将数组元素ai赋值给变量max和变量rain。填空2:通过一次for循环,找到数组中的最大值,if语句的条件表达式是mu填空3:同理,此处if语句的条件表达式是min>aj°【解题宝典】求最大值或者最小值的题目,一般都是假设一个元素最大或最小,然后通过if条件语句将该元素和其他元素进行比较操作来完成。三、程序修改题下列给定程序中函数fun的功能是。用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、例如,若给n输入7,则该项的斐波拉契数值为13。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1C中,不得增行或删行,也不得更改程序的结构oinc1ude<t<o.h>Ionefun(Mg)Ifound/wifch(f)IcaeOtJtun0;/found»/CMeI;CMe2:returnI;IEun(fun(g-1)fun(g-2);Iman()I皿fib;Hn;nntf("Inputn:");cftf(d,n);Pnntf1n%dn".»);fib=fun(n)IPfintf("fib=%dnn*.fib);【参考答案】去掉分号(2Case1:caBe2:return1;【考点分析】本题考查:SWitCh语句,其一般形式为SWitCh(表达式)Cage常量表达式1:语句1;CaSe常量表达式2:语句2;Cm常量农达式n:语句n;defau1t:语句n+1;其中SWitCh(表达式)后不应该带有“;”,同时CaSe语句常量后应该是。【解题思路】C语言中,SWitCh语句之后不能有分号,并且CaSe语句常量后应用的是冒号。