浙江大学C语言理论考试模拟试题答案一、判断题共10题,每题1分,共10分。正确的请选择A,错误的请选择B。1、在C语言中,函数不可以嵌套定义,但函数可以嵌套调用。A、正确B、错误解答:A2、在程序中else子句可以单独使用。A、正确B、错误解答:B3、C语言源程序文件通过了编译、连接之后,生成一个后缀为.EXE的文件。()A、正确B、错误解答:A4、_ya是不合法的C语言标识符。A、正确B、错误解答:B5、在数组初始化时,如果初值个数多于数组长度,将出现错误。A、正确B、错误解答:A6、C语言规定,函数返回值的类型是由return语句中的表达式类型所决定。A、正确B、错误解答:B7、若有定义int*p,则表达式p++的值就是p所指向的变量的地址值加1。A、正确B、错误解答:B8、'\n'不是一个字符常量。A、正确B、错误解答:B9、表达式(z=0,(x=2)||(z=1),z)的值是1。A、正确B、错误解答:B10、若打开文件的方式为“w”而该文件已经存在,则文件中原有数据被清空。A、正确B、错误解答:A二、单选题请从给定的选项中选择一个唯一正确的选项。每小题2分,共10题,20分。1、C下面有关变量的命名,不合法的是:()A._intB.__intintC.__int&intD.___intintint解答:C2、有变量定义inta;floatc;下面输入语句有语法错误的是()。A.scanf(%d,%f,&a,&c);B.scanf(x=%d,c=%f,&a,&c);C.scanf(%d%f,&a,&c);D.scanf(%f%d,&a,&c);解答:D3、下面关于函数参数使用的说法,不正确的是:()A.函数调用时实参按顺序传递到形参;B.函数调用时实参把值传递给形参;C.函数的实参和形参个数可以不一致,但使用时应尽量一致;D.函数的实参和形参可以同名;解答:C4、已知intk=1;for(k=1;1;k++)if(k)break;for语句的循环次数是()。A.0B.1C.2D.无限次解答:B5、下面定义的max函数返回值的数据类型是()max(floata,floatb){return(ab?a:b);}A.intB.floatC.doubleD.不确定解答:A(此题似乎有争议)此题应该没有争议,因为max()的函数头决定了max()的返回值必定是int,return后面的表达式必须转化成int。----BlackWhite注6、已知inta=10,x=0;x=~a;则x的值为()。A.-1B.0C.-11D.负无穷大解答:C7、表达式(float)10/2的值的数据类型是()。A.intB.longC.floatD.double解答:D这题才有争议,这个题明显出得不好。因为按C99标准,该表达式的类型为float,而按C89标准,则表达式的类型为double。证明方法如下:在TC中输出sizeof((float)10/2)可以得8,而在VC中输出sizeof((float)10/2)则得4。。----BlackWhite注8、表达式!(x0||y0)等价于_____。A.!x0||!y0B.!(x0)||!(y0)C.!x0&&!y0D.!(x0)&&!(y0)解答:D9、不正确的赋值或赋初值的方式是______。A.charstr[]=string;B.charstr[10];str=string;C.char*p=string;D.char*p;p=string;解答:B10、声明语句为“inta[3][4];”,下列表达式中与数组元素a[2][1]等价的是______。A.*(a[2]+1)B.a[9]C.*(a[1]+2)D.*(*(a+2))+1color[k][j]等价于*(color[k]+j)也可以写成*(*(color+k)+j)解答:A三、填空题。在解答的文本框中填写正确的答案。共10小题,每小题2分,共20分。1、表达式inta=97;表达式'b'a==97'1'的值__(1)__。(1)解答:1(左边为假,则为0,右边也为0,故总体为真,值为1.)2、equal()函数用于判断两个数是否相等,请写出最简单的形式二使与形式一等价。形式一:intequal(intx,inty){if(x==y)return1;elsereturn0;}形式二:intequal(intx,inty){return(__(1)___);}(1)解答:x==y3、定义下列变量的值为:intx=5,y=2,z=0;则表达式:(x||(y=5),x&&z||(y=1),x+y+z)的值为:___(1)___(1)解答:64、下面程序段运行结束后a的值为:__(1)___(1)解答:55、下列程序段的输出结果是_____。*K--引用*k所指向的元素,K指向数组的上一个元素_解答:06、下列程序的输出结果是_____。_解答:2#47、下列printf输出的结果是______。_解答:108、以下程序的输出结果是:______。_解答:79、若有以下的定义和语句,则表达式*(++p)-b用%d输出的值是______。_解答:3110、系统提供了平方根函数,其函数名是______。_解答:sqrt四、选择性程序阅读题。在给定的四个选项中,选出唯一一个正确答案。共5题,每题4分,共20分。1、阅读以下程序,程序运行时输入3123123412345后回车,请写出程序的运行结果。A.0#B.0#4#C.0#4#13#D.13#解答:C2、运行时输入bananaapplepearorange的输出结果是_______。A.pearB.bananaC.appleD.orange解答:A3、下列程序的输出结果是______。A.22#244#2466#B.2#24#246#C.2#24#66#D.22#64#126#解答:A4、假设文本文件a.txt中存放了下列数据:apple?pear?1234?output?文本文件b.txt中存放了下列数据:apple?pear?1604?input?假定文件都能正确打开,下列程序的输出结果是_______。A.2#6#2#B.apple?pear?12#C.apple?pear?110#D.2#6#10#解答:D5、下列程序的输出结果是_______。A.1#1#2#3#1#3B.2#1#1#1#1#2#2C.1#1#2#3#1#1D.1#1#2#3#1#0解答:D五、选择性程序填空题。共30分,5题*3空=15个空,每空2分。请在给定的选项中为每空选择一个唯一正确的选项,使程序补充完整。1、输入两个正整数m和n(1m,n=1000),输出m~n之间所有的Fibonacci数。Fibanacci序列(第1项起):1,1,2,3,5,8,13,21……。A.m=(m+n)/2B.m=m+nC.n=n+mD.curnE.cur=nF.cur=nG.pre1+pre2H.cur=pre1I.cur=pre2(1)解答:B(2)解答:E(3)解答:G2、输入1个正整数n(n=6),将n分解为3个素数之和,要求只输出一组。如:输入24,则输出24=2+3+19输入11,则输出11=3+3+5A.if(n%2==0)a=2;elsea=3;B.n%2+2C.n/2+2D.prime(n-b)==0E.prime(n-b)F.prime(b)G.return0H.return1I.returnflag(1)解答:B(2)解答:E(3)解答:I3、输入若干学生的成绩,如果输入成绩100或0时输入结束,请按等级对成绩进行分类统计,并输出各等级及对应的学生人数。等级划分如下:A:100=优秀=90B:良好=80;C:中等=70D:及格=60E:不及格60。例如,输入95568876349066797481846783751008270-1则输出:A:3B:5C:5D:2E:2A.x60?0:x/10-5B.'A'+iC.x60?0:(x-60)/10D.0=x=100E.x=0||x=100F.x=100G.x=0&&x=100H.x/10-5I.'E'-i(1)解答:G(2)解答:A(3)解答:I4、编程实现输出以下图形:A.(4-m)%4B.j2*m-1C.printf(\n)D.j2*mE.4-m%4F.printf(*)G.printf()H.j=2*mI.m%4-4(1)解答:E(2)解答:B(3)解答:C5、输出1~1000之间所有满足各位数字的立方和等于它本身的数。A.m=k;s=0B.m=m%10C.k==sD.digit==sE.m=k/10F.k=m;s=0G.m==sH.m=m/10I.s=0(1)解答:A(2)解答:H(3)解答:C