您好,欢迎访问三七文档
第七章函数7.1选择题[题7.3]以下正确的函数定义形式是_______。A)doublefun(intx,inty)B)doublefun(intx;inty)C)doublefun(intx,inty);D)doublefun(intx,y);[题7.4]以下正确的函数形式是_______。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;}[题7.5]以下正确的说法是_______。在C语言中A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共占用存储单元D)形参是虚拟的,不占用存储单元,[题7.8]以下正确的说法是_______。A)定义函数时,形参的类型说明可以放在函数体内B)return后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参与实参的类型不一致,以实参类型为准[题7.9]C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是_______。A)地址传递B)单向值传递C)由实参传给形参,再由形参传回给实参D)由用户指定传递方式[题7.10]以下程序有语法性错误,有关错误原因的正确说法是_______。main(){intG=5,k;voidprt_char();......k=prt_char(G);......}A)语句voidprt_char();有错,它是函数调用语句,不能用void说明B)变量名不能使用大写字母C)函数说明和函数调用语句之间有矛盾D)函数名不能使用下划线[题7.11]C语言允许函数值类型缺省定义,此时该函数值隐含的类型是_______。A)float型B)int型C)long型D)double型[题7.12]C语言规定,函数返回值的类型是由_______。A)return语句中的表达式类型所决定B)调用该函数时的主调函数类型所决定C)调用该函数时系统临时决定D)在定义该函数时所指定的函数类型所决定[题7.13]下面函数调用语句含有实参的个数为_______。func((expl,exp2),(exp3,exp4,exp5));A)1B)2C)4D)5[题7.14]以下错误的描述是_______。函数调用可以A)出现在执行语句中B)出现在一个表达式中C)做为一个函数的实参D)做为一个函数的形参[题7.15]以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。#includestdio.h#includemath.hfloatf(float,float);main(){floatx,y,z,sum;scanf(%f%f%f,&x,&y,&z);sum=f([1])+f([2]);printf(sum=%f\n,sum);}floatf(floata,floatb){floatvalue;value=a/b;return(value);}[1]A)x-y,x+yB)x+y,x-yC)z+y,z-yD)z-y,z+y[2]A)x-y,x+yB)x+y,x-yC)z+y,z-yD)z-y,z+y[题7.16]以下正确的描述是_______。在C语言程序中A)函数的定义可以嵌套,但函数的调用不可以嵌套B)函数的定义不可以嵌套,但函数的调用可以嵌套C)函数的定义和函数的调用均不可以嵌套D)函数的定义和函数的调用均可以嵌套[题7.17]以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。sub(intk,intn){intal,a2;a2=[1];a1=k-[2]);if((k%3==0&&a2==5)||(k%3==0&&a1==5)){printf(%d,k);n++;returnn;}elsereturn-1;}main(){intn=0,k,m;for(k=10;k=99;k++){m=sub(k,n);if(m!=-1)n=m;}printf(\nn=%d,n);[1]A)k*10B)k%10C)k/10D)k*10%10[2]A)a2*10B)a2C)a2/10D)a2%10[题7.19]若用数组名作为函数调用的实参,传递给形参的是_______。A)数组的首地址B)数组第一个元素的值C)数组中全部元素的值D)数组元素的个数[题7.20]已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式为_______。inta[3][4];f(a);A)f(intarray[][6])B)f(intarray[3][])C)f(intarray[][4])D)f(intarray[2][5])[题7.22]折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。函数binary的作用是应用折半查找法从存有10个整数的a数组中对关键m进行查找,若找到,返回其下标值;反之,返回一1。请选择填空。binary(inta[10],intm){intlow=0,high=9,mid;while(low=high){mid=(low+high)/2;if(ma[mid])[1]elseif(ma[mid])[2]elsereturn(mid);}return(-1);}[1]A)high=mid-1B)low=mid+1C)high=mid+1D)low=mid-1[2]A)high=mid-1B)low=mid+1C)high=mid+1D)low=mid-1[题7.23]以下正确的说法是_______。如果在一个函数中的复合语句中定义了一个变量,则该变量A)只在该复合语句中有效B)在该函数中有效C)在本程序范围内均有效D)为非法变量[题7.24]以下不正确的说法为_______。A)在不同函数中可以使用相同名字的变量B)形式参数是局部变量C)在函数内定义的变量只在本函数范围内有效D)在函数内的复合语句中定义的变量在本函数范围内有效[题7.25]以下程序的正确运行结果是_______。#defineMAX10inta[MAX],i;main(){printf(\n);subl();sub3(a);sub2();sub3(a);}sub2(){inta[MAX],i,max;max=5;for(i=0;imax;i++)a[i]=i;}sub1(){for(i=0;iMAX;i++)a[i]=i+i;}sub3(inta[]){inti;for(i=0;iMAX;i++)printf(%d,a[i]);printf(\n);}A)0246810121416180l234B)0l234024681012141618C)0l2345678901234D)024681012141618024681012141618[题7.26]以下程序的正确运行结果是_______。#includestdio.hvoidnum(){externintx,y;inta=15,b=10;x=a-b;y=a+b;}intx,y;main(){inta=7,b=5;x=a+b;y=a-b;num();printf(%d,%d\n,x,y);}A)12,2B)不确定C)5,25D)1,12[题7.27]凡是函数中未指定存储类别的局部变量,其隐含的存储类别为_______。A)自动(auto)B)静态(static)C)外部(extern)D)寄存器(register)[题7.28]在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是_______。A)externB)registerC)autoD)static[题7.29]以下程序的正确运行结果是_______。main(){inta=2,i;for(i=0;i3;i++)printf(%4d,f(a));}f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}A)777B)71013C)7911D)789[题7.30]以下程序的正确运行结果是_______。#includestdio.hmain(){intk=4,m=1,p;P=func(k,m);printf(%d,,p);P=func(k,m);printf(%d\n,p)}func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}A)8,17B)8,16C)8,20D)8,87.2填空题[题7.32]在C语言中,一个函数一般由两个部分组成,它们是[1]和[2]。答:[1]函数首部(函数说明部分)[2]函数体[题7.34]下面add函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的部分是[1];改正后为[2]。voidadd(floata,floatb){floatc;c=a+b;returnc;}答:[1]voidadd(floata,floatb)[2]floatadd(floata,floatb)[题7.35]以下程序的运行结果是_______。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);}答:i=7;j=6;x=7i=2;j=7;x=5[题7.36]以下程序的运行结果是_______。main(){increment();increment();increment();}increment(){intx=0;x+=1;print(%d,x);}答:111[题7.38]以下程序的功能是根据输入的y(Y)与n(N),在屏幕上分别显示出ThisisYES.与ThisisNO.。请填空。#includestdio.hvoidYesNo(charch){switch(ch){case‘y’:case‘Y’:printf(\nThisisYES.\n);[1];case‘n’:case‘N’:printf(\nThisisNO.\n);}}main(){charch;printf(\nEnterachar‘y’,’Y’or‘n’,’N’:);ch=[2];printf(ch:%c,ch);YesNo(ch);}答:[1]break[2]getchar()[题7.39]以下Check函数的功能是对value中的值进行四舍五入计算,若计算后的值与ponse值相等,则显示WELLDONE!!,否则显示计算后的值。已有函数调用语句Check(ponse,value);请填空。voidCheck(intponse,floatvalue){intval;val=[1];printf(计算后的值:%d,val);if([2])printf(\nWELLDONE!!!\n);elseprintf(\nSorrythecorrectansweris%d\n,val);}答:[1](int)((value*10+5)/10)[2]ponse==val[题7.40]以下程序的功能是_______。#includestdio.hf(intn){inti,j,k;i=n/100;j=n/10-i*10;k=n%10;if(i*l00十j*10+k==i*i*i+j*j*j+k*k*)returnn;elsereturn0;}m
本文标题:第七章-函数习题
链接地址:https://www.777doc.com/doc-4718975 .html