您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 第5章函数习题(C语言程序设计)
第5章函数第5章函数程序设计基础—C语言程序设计基础—C语言第5章函数函数的定义及构成数据类型函数名(形式参数表){声明变量语句可执行语句}通常把函数名和形参的说明部分称为“函数头”,用花括号括起来的部分称为“函数体”。voidprintstar(){printf(*******\n);}【例5.1】floatarea(floata,floatb){floats;s=a*b;returns;}【例5.2】数据类型默认为int型:函数执行后会获得一个值无值类型:void函数名是一个标识符,它的命名规则同变量相同形式参数(简称形参)的说明形式如下:数据类型形式参数1,数据类型形式参数2,声明形参实际是定义变量,形参在函数体内不赋值!函数的返回值(函数的值)可以是常数、变量或表达式return表达式;return(表达式);return;也可以没有return语句(void类型)定义形参a,b时假定a,b有值(实际没有,形式上认为有)intsum(intx,inty,intz){intm;m=x+y+z;returnm;}定义形参x,y,z时内部没有赋值,形式上认为有值return是函数的逻辑结尾,可以出现多条,但只能执行一条intf(inta,intb){if(ab)return1;elseif(a==b)return0;elsereturn-1;}intsum(intx,inty,intz){}函数体:{}可以是空函数,只写出函数的形式,先考虑如何调用回头再实现定义体第5章函数函数的调用过程floatf2(inta,intb){…return…;}f1(){…调用函数语句s=f2(x,y)…}主调函数被调用函数f1()floatf2(inta,intb)a=x;b=y第5章函数函数间的数据传递实参函数体内被封装函数外看不见局部变量把函数看作黑盒子破坏封装性有两种情况:1.全局变量2.函数内有输入输出语句scanf(),printf()传值传址第5章函数一、单项选择题(第136页)第5章函数1、以下说法正确的是()A.C语言程序总是从第一个定义的函数开始执行B.在C语言程序中,要调用的函数必须在main()函数中定义C.C语言程序总是从main()函数开始执行D.C语言程序中的main()必须放在程序的开始部分√第5章函数2、在下列关于C函数定义的叙述中,正确的是()B.函数不可以嵌套定义,但可以嵌套调用√第5章函数函数的调用可以是嵌套的,即在调用一个函数的过程中可以再调用另一个函数。C语言不允许嵌套定义,但可以嵌套调用。)!!*(!mnnmCnm【例5.6】计算组合数longcmn(intm,intn){return}main(){调用z=cmn()}longfac(intx){return}fac(m)fac(n)*fac(n-m)y=输出函数的设计原则:函数内尽量最简封装性要好不要输入输出语句第5章函数3.若函数是int型,变量z为float型,该函数体内有定义语句return(z);则该函数返回的值是()A.int型B.float型C.static型D.extern型√int函数名([形式参数表]){floatz;returnz;}第5章函数4、有如下函数调用语句:func(rec1,rec2-rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是()A.3B.4C.5D.有语法错误√main(){intz;intrec1=5,rec2=2,rec3=4,rec4=7,rec5=10;z=func(rec1,rec2-rec3,(rec4,rec5));}func(5,-2,10)intfunc(inta,intb,intc){returna+b+c;}第5章函数5、在函数调用时,如果实参是简单变量,它与对应的形参之间的数据传递方式是()A.地址传递B.单向值传递C.由实参传给形参,再由形参传给实参D.传递方式由用户指定√第5章函数6、下列方法中错误的是()A.主函数可以分为两个部分,即主函数说明部分和主函数体B.主函数可以调用任何非主函数的其它函数C.任何非主函数可以调用替他任何非主函数D.程序可以从任何非主函数开始执行××第5章函数7、以下对C语言函数的有关描述中,正确的是()A.在C语言程序中,如果没有定义函数的类型则默认为int型B.C语言既可以嵌套定义又可以递归调用C.C语言函数必须有返回值,否则不能使用函数D.在C语言程序中有调用关系的所有函数必须放在同一个源程序文件中√第5章函数二、填空题第5章函数1.C语言程序由main()函数开始执行,应在main()函数中结束;2.函数调用是,若形参实参均为数组,则其传递方式是传址第5章函数main(){inta[10]={1,2};sum(a,10);}voidsum(int*pintn){}main(){inta[10]={1,2};sum(a,10);}voidsum(inta[]intn){}第5章函数3.函数调用语句:fun(2*3,(4,5));的实参数目是22.下列函数的返回值类型是:fun(floatx){floaty;y=3*x+2;returny;}56,int3.C语言中,函数的默认存储类型是extern第5章函数三、写出程序运行结果第5章函数1.intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func((func(x,y),z);printf(“%d”,r);}2x5y8zr2a5b87释放7a8b1515释放释放第5章函数2.inta=5;fun(intb){staticinta=10;a+=b++;printf(“%d”,a);}main(){intc=20;fun(c);a+=c++;printf(“%d\n”,a);}5a20c20b10aa+=b,b++;3030a+=c,c++;21252125第5章函数3.func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){intk=4,m=1,p;p=func(k,m);printf(“%d”,p);p=func(k,m);printf(“%d\n”,p);}4k1mp4a1b0m2ii=i+m+1388释放8812174a1b17释放1717释放释放第5章函数4.fun(intx){if(x/20)fun(x/2)printf(“%d”,x);}main(){fun(6);}6x3x1x136第5章函数main(){fun(6);}fun(intx){if(x/20)fun(x/2)printf(“%d”,x);}fun(intx){if(x/20)fun(x/2)printf(“%d”,x);}fun(intx){if(x/20)fun(x/2)printf(“%d”,x);}6x3x1x136第5章函数5.inta=3;voidfun(){staticinta=0;a+=2;printf(“%d”,a);}main(){inti;for(i=1;i4;i++)fun();printf(“\n”);}3ai10a22243466第5章函数四、程序填空题第5章函数1、以下函数的功能是通过键盘输入数据,为数组中的所有元素赋值#defineN10voidarrin(intx[N]){inti=0;while(iN)scanf(“%d”,&x[i]);}voidarrin(intx[],intn)第5章函数2、下面invert函数的功能是将一个字符串str的内容颠倒过来voidinvert(charstr[]){intj,j,k;for(i=0,j=strlen(str)-1;ij;i++,j--)k=str[i];str[i]=str[j];str[j]=k;}adefgcg\0i--j元素交换第5章函数4.以下程序是计算s=1-1/2+1/4-1/6+1/8+…+1/n前n项的和s=s+fac/i每次循环:fac=-faci=i+2i=ndoublefun(intn){doubles=1.0,fac=1.0;inti;for(i=2;i=n;i+=2){fac=-fac;s=s+fac/i;}returns;}第5章函数4.以下程序是计算s=1/1!+1/2!+…+1/n!前n项的和分母是阶乘每次循环:第i项阶乘结果是facfac=fac*idoublefun(intn){doubles=0.0,fac=1.0;inti;for(i=1;i=n;i+=2){fac=fac*i;s=s+1/fac;}returns;}s=s+1/fac第5章函数5.以下comppare函数的功能是按照字典的顺序比较两个字符串a,b的大小,如果ab,则返回正值a==b则返回0;ab则返回负值abdgh\0abf\0abch\0fbc\0abc\0abc\0intcompare(chara[],b[]){inti;for(i=0;a[i]!=‘\0’&&b[i]!=‘\0’&&a[i]!=b[i];i++);return(a[i]-b[i]);}
本文标题:第5章函数习题(C语言程序设计)
链接地址:https://www.777doc.com/doc-3811798 .html