C语言程序设计第六章函数试题及答案_第1页
C语言程序设计第六章函数试题及答案_第2页
C语言程序设计第六章函数试题及答案_第3页
C语言程序设计第六章函数试题及答案_第4页
C语言程序设计第六章函数试题及答案_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计第六章函数试题及答案1选择题*6.1建立函数的目的之一,以下正确的说法是o提高程序的执行效率B)提高程序的可读性C)减少程序的篇幅D)减少程序文件所占内存参考答案:B*6.2以下正确的说法是o用户若需要调用标准库函数,调用前必须重新定义用户可以重新定义标准库函数,若如此,该函数将失去原有意义用户系统根本不允许用户重新定义标准库函数用户若需要调用库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动寻找该文件。参考答案:B6.3以下正确的函数定义形式是。Ajdoublefiin(mtx,mtv)B)doublefun(intx;iiitv)C)doublefi

2、in(mtx,mtv);D)doubelfun(intx;intv);参考答案:A*6.4以下正确的函数形式是。Ajdoublefiin(mtx,mtv)z=x+y;ieturnz;Bjdoublefun(mtx,y)mtz;returnz;C)ftin(x,y)intx,y;doublez;z=x+y;letuinz;Djdoublefiin(mtx,mtv)doublez;z=x+y;ieturnz;参考答案:D*6.5以下正确的说法是o实参和与其对应的形参占用独立的存储单元实参和与其对应的形参共占用一个存储单元只有当实参和与其对应的形参同名时才共占用一个存储单元形参是虚拟的,不占用存储单

3、元参考答案:A参考分析:本题并不严谨,因为实参可以是表达式,当实参为表达式时,实参并不单独占用独立的存储单元。6.6若调用一个函数,且此函数中没有etum语句,则正确的说法是该函数。没有返回值B)返回若干个系统默认值C)返回一个用户所希望的函数值D)返回一个不确定的值参考答案:D参考分析:函数有没有返回值是由函数类型所决定的,当没有letnin语句,系统不能返回一个确定的值而已。6.7以下不正确的说法是,C语言规定o实参可以是常量、变量或表达式形参可以是常量、变量或表达式实参可以是任意类型实参应与其对应的形参类型一致参考答案卫6.8以下正确的说法是o定义函数时,形参的类型说明可以放在函数体内B

4、jreturn后面的值不能为表达式如果函数的类型与返回值类型不一致,以函数类型为准如果形参与实参的类型不一致,以实参类型为准参考答案:C6.9C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是地址传递B)单向值传递C)由实参传给形参,再由形参传回实参D)由用户指定传递方式参考答案:B6.10以下程序有语法性错误,有关错误原因的正确说法是omainOintG=5,k;voidpit_char();k=pit_char(G);语句voidpit_chai();有错,它是函数调用语句,不能用void说明变量名不能使用大写字母函数说明和函数调用语句之间有矛盾函数名不能使用下划线参考答案:C

5、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是oA)float型B)int型C)long型D)double型参考答案:BC语言规定,函数返回值的类型是由所决定。return语句中的表达式类型调用该函数时的主调函数类型调用该函数是系统临时指定在定义该函数时所指定的函数类型参考答案:DTOC o 1-5 h z*6.13下面函数调用语句含有实参的个数为ofim(expl、exp2),(exp3,exp4,exp5);A)1B)2C)4D)5参考答案:B参考分析:该函数的实参是两个逗号表达式。6.14以下错误的描述是o函数调用可以A)出现在执行语句中B)出现在表达式中C)作为函数的实参D)作

6、为函数的形参参考答案:D6.15以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。#include#includefloatf(float,float);mainOfloatx,yz,sum;scanf(H%f%f%f&x,&y,&z);sum=f(1)+f(2);pnntf(nsum=%fiiH,sum);floatf(floata,floatb)floatvalue;fhlue=a/b;letuni(value);【1】A)x-y,x十yB)x十y,xy2A)x-y,x十yB)x+y,x-v参考答案:【1】B2C6.16以下正确的描述

7、是oC)z+y,z-yC)z+y,z-yD)zy,z+yD)zy,z+yA)函数的定义可以嵌套,但函数的调用不可以嵌套B)函数的定义不可以嵌套,但函数的调用可以嵌套C)函数的定义和函数的调用均不可嵌套D)函数的定义和函数的调用均可以嵌套参考答案:B6.17以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有的这样的数及其个数。请选择填空。sub(intk.mtn)intal,a2;a2=1;al=k-2;if(k%3=0&a2=5)|(k%3=0&al=5)pnntf(n%4d,k);n+;ietiinin;elsereturn-1;mainQintn=0,kjn;foi(k=10;k

8、%ciin,getone,putone);voidlianoi(intnchaione.chartwo,chartluee)if(ii=l)move(one,tluee);elselianoi(n-l,one,tluee?two);move(one,tluee);hanoi(n-l,two,one,tluee);A)A-CE)ACC)ACD)ACABABABABCBCAC-BCBB-AABA-CACCBBCB-AABA-CACB-CB-CABA-BA-CA-C参考答案:C6.19若用数组名作为函数调用的实参,传递给形参的是A)数组的首地址B)数组第一个元素的值C)数组中全部元素的值D)数组元素

9、的个数参考答案:A6.20已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组位ay的错误定义方式为Omta34;f(a);A)f(intarray6)B)f(mtarray3)C)f(intanav4)D)f(intanav25)参考答案:B6.21若使用一位数组名作为函数实参,则以下正确的说法是。必须在主调函数中说明此数组的大小实参数组类型与形参数组类型可以不匹配在被调函数中,不需要考虑形参数组的大小实参数组名与形参数组名必须一致参考答案:C6.22以下函数binary的作用是应用折半查找法从存有10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之,返回-1。请选

10、择填空。mtbmaiy(mta,intm)intlow=0Jngh=9,nnd;while(low=high)nnd=(low+lngh)/2;if(manud)2;elseletuin(mid);lennn(-l);A)lugh=mid-1B)high=nud十1C)low=mid-1D)low=mid+1参考答案:【1】A2D6.23如果在一个复合语句中定义了一个变量,则有关该变量正确的说法是oA)只在该复合语句中有效B)只在该函数中有效C)在本程序范围内均有效D)为非法变量参考答案:A6.24以下不正确的说法为o在不同函数中可以使用相同名字的变量形式参数是局部变量在函数内定义的变量只在本

11、函数范围内有效在函数内的复合语句中定义的变量在本函数范围内有效参考答案:D6.25以下程序的正确运行结果是o#defineMAX10UltaMAXj;mainOpriiitf(nn,);sublO;sub3(a);sub2O;sub3(a);sub2()intaMAX丄max;max=5;fbi(i=O;imax;i+)ai=i;sub1()foi(i=0;iMAX;i+)ai=i+i;sub3(iiita)mt1;foi(i=0;iMAX;i+)pnntf(n%3dM,ai);pnntf(HnM);A)024681012141618B)0123401234024681012141618C)0

12、123456789D)02468101214161801234024681012141618参考答案:D*6.26以下程序的正确运行结果是o#nicludevoidnumQexternintx,y;inta=15,b=10;x=a-b;y=a-rb;mtx,y;maiiiQinta=7,b=5;x=a+b;y=a-b;num();pnntfC%d%dn”,x,y);TOC o 1-5 h zA)12,2B)12,25C)5,25D)5,2参考答案:C6.27凡是函数中未指定存储类别的局部变量,其隐含的存储类别为oA)autoB)staticCjexteinD)registei参考答案:A6.2

13、8在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是OA)externB)registeiC)autoD)static参考答案:D*6.29以下程序的正确运行结果是omaiiiQinta=2,i;foi(i=0;i3;i+)pnntfC%4d,f(a);mtf(iiita)intb=0;staticintc=3;b卄;c十十;ietuni(a+b+c);A)o答TOC o 1-5 h z777B)71013A)o答7911D)789:D*6.30以下程序的正确运行结果是o#includemainOintk=4,m=Lp;p=fimc(k,m)

14、;pnntf(H%d/p);p=fimc(k,m);printf(H%d,n,p);fiinc(intajntb)staticmtm=0,i=2;i+=m+l;m=i十a+b;A)&17B)&16C)&20D)&8参考答案:A2填空题6.31C语言规定,可执行程序的开始执行点是【o参考答案:main函数6.32在C语言中,一个函数一般由两个部分组成,它们是【1】和【2】。参考答案:【1】函数声明2函数体*6.33若输入的值是-125,以下程序的执行结果是o#includemainOintn;scaiifCd&n);pnntf(n%d=ii);if(n0)pnntf(H-u);n=abs(n);

15、fim(n);fiin(uitn)intkj;foi(k=2;kl)pnntf(H*n);r=n%k;if(n!=l)pm】tfC%dE卫);参考答案:-125二5*5*5参考分析:本程序用来将整数分解为素数因子的乘积。6.34下面add函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的部分是11;改正后为【2】。voidadd(floata.floatb)floatc;c=a+b;fetunic;参考答案:【1】voidadd(floata,floatb)2floatadd(floata,floatb)6.35以下程序的运行结果是omaiiiQinti=2,x=5,j=7;pnn

16、tf(ni=%d;j=%d;x=%dnirJj,x);fiin(uiti,intj)intx=7;pnntf(ni=%d;j=%d;x=%dnirJj,x);参考答案:i=7;j=6;x=7i=2;j=7;x=56.36以下程序的运行结果是omainOinciementO;increment0;increment0;uicrement()intx=0;x+=l;pniitf(n%drx);参考答案:1116.37以下程序的运行结果是o#includemainOinta=l,b=2,c;c=max(a,b);pnntf(nniaxis%dnn,c);max(mtx,inty)liltz;z=(x

17、v)?x:y;ietuni(z);参考答案:maxis26.38以下程序的功能是根据输入的”y”(”Y”)与,H(”N”),在屏幕上分别显示出“ThisisYES.”与ThisisNO.o请填空。#nicludevoidYesNo(cliarch)switcli(ch)caseV:caseTprintffiTlusisYES.E);1;casernr:caserN,:pnntf(niiTlusisNO.S);mainOcharch;pnntf(nnEnteracharV/Y*oich=2;pnntf(nch:%cch);YesNo(ch);参考答案:【1】break【2】getchai()6.

18、39以下Check函数的功能是对value中的值进行四舍五入计算,若计算后的值与ponse值相等,则显示”WELLDONE!”,否则显示计算后的值。已有函数调用语句Check(ponse,value);请填空。voidClieck(mtponse,floatvalue)intval;val=1;pnntf(计算后的值:%dval);if(2)pmHf(”nWELLDONE!n”);elsepnntf(nnSon-vtheconectansweris%diin,val);参考答案:【1】value+0.52ponse=val6.40以下程序的功能是o#nicludef(mtn)intij,k;i

19、=ii/l00;j=ii/lO-i*10;k=n%10;if(i*l00+j*10十k=i*i*i巧*j*j十k*k*k)leturnn;elsereturn0;mainOintn.k;piintf(HOutputM);foi(n=100;n1000;n+)k=f(n);if(k!=O)pimtf(H%d”,k);pnntfCE);参考答案:输出所有的水仙花数。6.41以下程序的功能是用二分法求方程2x3-4x2+3x-6=0的根,并要求绝对误差不超过0.001。请填空。#nicludefloatf(floatx)retuin(2*x*x*x-4*x*x+3*x-6);maiiiQfloatm

20、=-100,n=90j;r=(m+n)/2;while(f(r)*f(n)!=0)if(11)m=i;elsen=r;if(2)break;r=(m+n)/2;prmtf(n方程的解是%63fnU);参考答案:1f(r)*f(n)02n-m0;i)printf(,r%dn,eM);参考答案:10106.43以下程序的功能是计算下面函数的值。请填空。sin(x)siii(y)siii(z)F(x)=+十sm(x-y)*sin(x-z)sm(y-z)*sui(y-x)sin(z-x)*sin(z-v)#include#includefloatf(float,float,float);maiiiQp

21、nntf(ninputx,y,z:iin);scanf(H%f%f%f&x,&y,&z);SU111=【1】;pnntf(nsum=%fii,sum);floatfffloata,floatb,floatc)floatvalue;value=2;letuni(value);参考答案:1f(x,y,z)+f(y、z,x)+f(z、x,y)2siii(a)/sin(a-b)/sin(a-c)参考分析:本题答案非常不严谨,完全可以写成多种方式,比如1Rx,xxz)+Ky,y-z,yx)+Kz、zx、z-y)2sm(a)/sin(b)/sin(c)1f(xyz)2sin(a)/sin(a-b)/sii

22、i(a-c)+sin(b)/sin(b-c)/sm(b-a)+sin(c)/sin(c-a)/sin(c-b)6.44已有函数pow,现要求取消变量i后pow函数的功能不变。请填空。修改前的pow函数:mtpow(mtxjnty)niti,j=l;foi(i=l;i0或y=l【3】y-或-y6.45以下程序的运行结果是输出如下图形。请填空。*#includevoida(mti)intj,k;foi(j=0;j=7-i;j+)pnntf(H”);foi(k=0;k1;k-H-)pnntfC,*u);pnntf(HnH);mainOint1;foi(i=0;i=0;i)3;参考答案:【1】2*1+

23、1【2】ai【3】ai参考说明:最长的一行前面有5个空格。6.46以下程序的功能是求三个数的最小公倍数,请填空。#includemtmax(intxjnty.mtz)if(xv&xz)Tetum(x);elseif(【1)retuin(y);elsereturn(z);mainOintxLx2,x3j=lJ.xO;pnntffInputtlueenumber:n);scanf(”d%d%d”,&xl、&x2,&x3);xO=max(xl、x2、x3);while(l)j=xO*i;if(2)break;i卄;pnntf(nzuixiaogongbeishu=%dn,j);参考答案:【l】yx&

24、yz2j%xl=O&j%x2=0&j%x3=O参考分析:本题有错误,若x=zy这种条件下max函数不能正确返回最大值。若将所有条件均改为=就可以了。6.47函数gongyue的作用是求整数numl和num2的最大公约数。请填空。mtgongyue(mtnumljntnuni2)inttemp,a,b;if(numl【1nuni2)temp=num1;num1=nuni2;nuni2=temp;a=numl;b=num2;while(2)temp=a%b;a=b;b=temp;ietui11(a);参考答案:【1】2b参考分析:本题需要修改,作为函数,没有必要将numl赋值给a,另外,不必须要n

25、uml大,nuni2还有【2】可以为b!=06.48以下程序的运行结果是omainOintx=2,y=3,z=0;printf(l)x=%dy=%dz=%dn”,x,y,z);add(x,y,z);printf(3)x=%dy=%dz=%dn”,x,v,z);add(intxjntvjntz)z=x+y;x=x*x;y=y*y;pnntf(M(2)x=%dy=%dz=%dn”,x、v、z);参考答案:x=2y=3z=0 x=4y=9z=5x=2y=3z=06.49下面函数pi的功能是根据以下公式,返回满足精度(0.0005)要求的口值,请填空。n/2=1+1/3+1/3*2/5+1/3*2/5

26、*3/7+1/3*2/5*3/7*4/9+.#include#include#includedoublepi(doubleeps)doubles,t;liltn;foi(【1】;teps;n+)s+=t;t=n*t/(2*n+l);retuin(2);mainOdoublex;pnntf(niiPleaseenteraprecision:n);pnntf(nneps=%lfn=%lfx,pi(x);参考答案:【1】s=O,t=l,n=l22*s6.50下面是一个计算阶乘的程序。程序中错误的语句是【1】,应改为【2】。#includedoublefac(int);maiiiQintn;pnntf

27、(nEntefanintegei:M);scanfC%dS&ii);pnntf(nnn%d?=%lgnii,n,fac(fac(n);doublefac(intn)doubleiesult=1.0;while(nl|nl|nl&n170)result*=n;*6.51函数f的形参a为一个10X10的二维数组,n的值为5,以下程序段的运行结果为of(inta20,intn)inti,jjk;j=n/2+l;alUl=l;i=l;for(k=2;kn)i=i+2;j=j-1;elseif(Kl)i=n;尸1;if(aiU=O)aiU=k;elsei=i+2;j=j-l;aij=k;main()inta2020=05n,ij;scanf(”d,&n);K5;for(i=l;i=n;i+)foiO=l;J=n;j+)printfC%3d”,aij);参考答案:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论