您好,欢迎访问三七文档
函数练习题一、选择题(一题2分,共40分)1.在c语言中以下不正确的说法是()A.实参可以是常量、变量、或表达式B.形参可以是常量、变量或表达式C.实参可以为任意类型D.形参应与其对应的实参类型一致2.以下程序有语法性错误,有关错误原因的正确说法是()intmain(){intG=5,k;voidprt_char();……k=prt_char(G);……}A.语句voidprt_char();有错,它是函数调用语句,不能用void说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾D.函数名不能使用下划线3.以下正确的说法是()A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可嵌套C.函数的定义和调用均不可以嵌套D.函数的定义和调用均可以嵌套4.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参5.以下所列的各函数首部中,正确的是()A、voidplay(var:Integer,varb:Integer)B、voidplay(inta,b)C、voidplay(inta,intb)D、Subplay(aasinteger,basinteger)6.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()A、地址传递B、单向值传递C、由实参传给形参,再由形参传回实参D、传递方式由用户指定7.有以下程序voidfun(inta,intb,intc){a=456;b=567;c=678;}intmain(){intx=10,y=20,z=30;fun(x,y,z);printf(%d,/%d,%d\n,x,y,z);return0;}输出结果是()A、30,20,10B、10,20,30C、456,567,678D、678,567,4568.下述函数定义形式正确的是()。A、intf(intx;inty)B、intf(intx,y)C、intf(intx,inty)D、intf(x,y:int)9.关于函数参数,说法正确的是()。A、实参与其对应的形参各自占用独立的内存单元B、实参与其对应的形参共同占用一个内存单元C、只有当实参和形参同名时才占用同一个内存单元D、形参是虚拟的,不占用内存单元10.一个函数的返回值由()确定。A、return语句中的表达式B、调用函数的类型C、系统默认的类型D、被调用函数的类型11.以下正确的函数形式是()。A、doublefun(intx,inty){z=x+y;returnz;}B、fun(intx,y){intz;returnz;}C、fun(x,y){intx,y;doublez;z=x+y;returnz;}D、doublefun(intx,inty){doublez;z=x+y;returnz;}12.下列函数中,能够从键盘上获得一个字符数据的函数是()。A、puts()B、putchar()C、getchar()D、gets()13.以下程序的输出结果是()。fun(inta,intb,intc){c=a+b;}intmain(){intc;fun(2,3,c);printf(“%d\n”,c);return0;}A、2B、3C、5D、无定值14.分析以下程序的运行结果()。func(inta,intb){inttemp=a;a=b;b=temp;}intmain(){intx,y;x=10;y=20;func(x,y);printf(“%d,%d\n”,x,y);return0;}A、10,20B、10,10C、20,10D、20,2015.现有如下程序#includestdio.hintfun(intx){printf(x=%d\n,++x);}intmain(){fun(12+5);return0;}则程序的输出结果是A、x=12B、x=13C、x=17D、x=1816.以下函数fff(floatx){printf(“%d\n”,x*x);}的类型是()A、与参数X的类型相同B、void类型C、int类型D、无法确定17.以下正确的说法是()如果在一个函数中的复合语句中定义了一个变量,则该变量A.只在该复合语句中有效B.在该函数中有效C.在本程序范围内均有效D.为非法变量18.以下不正确的说法为()A.在不同函数中可以使用相同名字的变量B.形式参数是局部变量C.在函数内定义的变量只在函数范围内有效D.在函数内的复合语句中定义的变量在本函数范围内有效19.有以下程序voidf(intv,intw){intt;t=v;v=w;w=t;}main(){intx=1,y=3,z=2;if(xy)f(x,y);elseif(yz)f(y,z);elsef(x,z);printf(“%d,%d,%d\n”,x,y,z);}A、1,2,3B、3,1,2C、1,3,2D、2,3,120.以下正确的函数形式是()A.doublefun(intx,inty)B.fun(intx,y)C.fun(x,y)D.doublefun(intx,inty);二、判断题(一题1分,共12分)1.()return语句作为函数的出口,在一个函数体内只能有一个。2.()在C程序中,函数不能嵌套定义,但可以嵌套调用。3.()C语言的源程序中必须包含库函数。4.()在C程序中,函数调用不能出现在表达式语句中。5.()在C函数中,形参可以是变量、常量或表达式。6.()在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。7.()若定义的函数没有参数,则函数名后的圆括号可以省略。8.()函数的函数体可以是空语句。9.()函数的实参和形参可以是相同的名字。10.()C语言中函数返回值的类型由return语句中的表达式的类型决定。11.()C语言程序中的main()函数必须放在程序的开始部分。12.()函数调用中,形参与实参的类型和个数必须保持一致。三、分析程序写结果(每题2分,共14分)1、以下程式序的运行结果是_____________main(){inti=2,x=5,j=7;fun(j,6);printf(“i=%d;j=%d;x=%d\n”,i,j,x);}fun(inti,intj){intx=7;printf(“i=%d;j=%d;x=%d\n”,i,j,x);}2、以下程序的运行结果是_____________main(){increment();increment();increment();}increment(){intx=0;x+=1;printf(“%d”,x);}3、以下程序的运行结果是_____________main(){inta=1,b=2,c;c=max(a,b);printf(“maxis%d\n”,c);}max(intx,inty){intz;z=(xy)?x:y;return(z);}4、若输入一个整数10,以下程序运行结果是_____________main(){inta,e[10],c,i=0;printf(“输入一个整数:\n”);scanf(“%d”,&a);while(a!=0){c=sub(a);a=a/2;e[I]=c;i++;}for(;i0;i--)printf(“%d”,e[i-1]);}sub(inta){intc;c=a%2;returnc;}5、以下程序的运行结果是_____________main(){intx=2,y=3,z=0;printf(“(1)x=%dy=%dz=%d\n”,x,y,z);add(x,y,z);printf(“(3)x=%dy=%dz=%d\n”,x,y,z);}add(intx,inty,intz){z=x+y;x=x*x;y=y*y;printf(“(2)x=%dy=%dz=%d\n”,x,y,z);}6、以下程序的运行结果是_____________intx;main(){x=5;cude();printf(“%d\n”,x);}cude(){x=x*x*x;}7、函数fun的功能是计算xndoublefun(doublex,intn){inti;doubley=1;for(i=1;i=n;i++)y=y*x;returny;}主函数中已经正确定义m,a,b变量并赋值,并调用fun函数计算:m=a4+b4-(a+b)3。实现这一计算的函数调用语句为______________________。四、程序填空(一空2分,共34分)1.以下程序的功能是计算函数F(x,y,z)=(x+z)/(y-z)+(y+2×z)/(x-2×z)的值,请将程序补充完整。()#includestdio.hfloatf(floatx,floaty){floatvalue;value=【1】;returnvalue;}main(){floatx,y,z,sum;scanf(%f%f%f,&x,&y,&z);sum=f(x+z,y-z)+f(【2】);printf(sum=%f\n,sum);}2.以下程序是将输入的一个整数反序打印出来,例如输入1234,则输出4321,输入-1234,则输出-4321。请将程序补充完整。()voidprintopp(longintn){if(n==0)return;if(【1】){printf(-);n=-n;}while(n){printf(%ld,n%10);【2】;}}main(){longintn;scanf(%ld,&n);printopp(n);printf(\n);}3.下面的程序用递归定义的方法实现求菲波拉契数列1、1、2、3、5、8、13、21……第7项的值fib(7),菲波拉契数列第1项和第2项的值都是1。请将程序补充完整。#includestdio.hlongfib(【1】){switch(g){case0:return0;case1:case2:return1;}return(【2】);}main(){longk;k=fib(7);printf(k=%d\n,k);}4.下面是一个计算1至m的阶乘并依次输出的程序。程序中应填入的正确选项是【】。#includestdio.hdoubleresult=1;factorial(intj){result=result*j;returnresult;}main(){intm,i=0;doublex;printf(Pleaseenteraninteger:);scanf(%d,&m);for(;i++m;){x=factorial(i);printf(%d!=%.0f\n,【1】);}}5.以下程序的功能是求任意两个整数a和b的最大公约数,并予以显示。请将程序补充完整。()#includestdio.h#includestdlib.hlongcodivisor(longn1,longn2){longt;while(n2!=0){【1】;n1=n2;n2=t;}return(【2】);}main(){longa,b,x;printf(pleaseinputtwonumbers:);scanf(%ld%ld,&a,&b);x=codivisor(a,b);printf(maximumcommondivisorof%ldand%ldis:%ld\n,a,b,x);}6.以下程序是选出能被3整除且至少有一位是5的所有三位正整数k(个位为a0,十位为a1,百位为a2),打印出所有这样的数及其个数。请将程序补充完整。()#includestdio.hsub(intm,intn){inta0,a1,a2;a2=【1】;a1=【2】;a0=m%10;if(m%3==0&&(a2==5||a1==5||a0==5)){printf(“%d”,m);n++;}returnn;}main(){intm=0,k;f
本文标题:c语言函数练习题
链接地址:https://www.777doc.com/doc-4114190 .html