您好,欢迎访问三七文档
当前位置:首页 > 中学教育 > 初中教育 > C语言-练习题(函数)
一、选择题1.以下程序的运行结果是。#includestdio.hintfun(intn){intm=0,f=-1,i;for(i=1;i=n;i++){m=m+i*f;f=-f;}returnm;}intmain(){printf(m=%d\n,fun(10));return0;}A.m=5B.m=-6C.m=6D.m=-52.C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是。A.地址传递B.单项值传递C.由实参传给形参,再由形参传回给实参D.由用户指定传递方式3.以下程序有语法性错误,有关错误原因的正确说法是。#includestdio.hintmain(){intG=5,k;voidprt_char();...k=prt_char(G);...}A.语句voidprt_char();有错,它是函数调用语句,不能用void说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾D.函数名不能使用下划线4.以下程序的运行结果是。#includestdio.hintfun(inta,intb){if(ab)return(a+b);elsereturn(a-b);}intmain(){intx=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf(%d\n,r);return0;}A.-16B.-17C.17D.165.以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。#includestdio.h#includemath.hfloatf(float,float);intmain(){floatx,y,z,sum;scanf(%f%f%f,&x,&y,&z);sum=f()+f();printf(sum=%f\n,sum);return0;}floatf(floata,floatb){floatvalue;value=a/b;returnvalue;}A.x-y,x+yB.x+y,x-yC.z+y,z-yD.z-y,z+yA.x-y,x+yB.x+y,x-yC.z+y,z-yD.z-y,z+y6.以下程序可选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。#includestdio.hintsub(intk,inth){inta1,a2;a2=;a1=k-;if((k%3==0&&a2==5)||(k%3==0&&a1==5)){printf(%5d,k);h++;returnh;}elsereturn-1;}intmain(){intn=0,k,m;for(k=10;k=99;k++){m=sub(k,n);if(m!=-1)n=m;}printf(\nn=%d\n,n);return0;}A.k*10B.k%10C.k/10D.k*10%10A.a2*10B.a2C.a2/10D.a2%107.若用数组名作为函数调用的实参,则传递给形参的是。A.数组的首地址B.数组的第一个元素的值C.数组中全部元素的值D.数组元素的个数8.折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中间点之后的元素;反之,测试中间点之前的元素,测试方法同前。函数binary的作用是应用折半查找法从存有10个有序整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之,返回-1。请选择填空。#includestdio.hintbinary(inta[10],intm){intlow=0,high=9,mid;while(low=high){mid=(low+high)/2;if(ma[mid]);elseif(ma[mid]);elsereturn(mid);}return-1;}intmain(){inta[10]={1,2,3,4,5,6,7,8,9,10};intm,index;scanf(%d,m);index=binary(a,m);printf(%d\n,index);return0;}A.high=mid-1B.low=mid+1C.high=mid+1D.low=mid-1A.high=mid-1B.low=mid+1C.high=mid+1D.low=mid-19.以下程序的运行结果是。#includestdio.hvoidfun(intx){if(x/20)fun(x/2-2);printf(%d,x);}intmain(){fun(20);printf(\n);return0;}A.2082-1B.2820C.8D.-12820答案:1.A2.B3.C4.B5.BC6.CA7.A8.AB9.D二、填空题1.为使以下程序顺利进行,请填空补充完整程序。当输入的数值为57时,该程序的运行结果是。#includestdio.hintmain(){doublex,y;scanf(%lf%lf,&x,&y);printf(%lf\n,max(y,x));return0;}doublemax(doublea,doubleb){return(ab)?b-a:a-b;}2.以下函数fun的功能是:将输入的大写字母,先转换为与其对应的小写字母,然后再转换成该小写字母后的第3个字母,返回后输出。例如,若输入的字母为E,输出的字母则为h;若输入的字母为Y,输出的字母则为b。请填空。#includestdio.h#includestring.hcharfun(charc){c=;if(c='a'&&c='w')c=c+3;elseif(c='x'&&c='z')c=;returnc;}intmain(){charc;c=getchar();c=fun(c);putchar(c);return0;}3.若输入的值是-125,则以下程序的运行结果是。#includestdio.h#includemath.hvoidfun(int);intmain(){intn;scanf(%d,&n);printf(%d=,n);if(n0)printf(-);n=abs(n);fun(n);printf(\n);return0;}voidfun(intn){intk,r;for(k=2;k=sqrt(n);k++){r=n%k;while(r==0){printf(%d,k);n=n/k;if(n1)printf(*);r=n%k;}}if(n!=1)printf(%d\n,n);}4.下面add函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的部分是,改正后为。voidadd(floata,floatb){floatc;c=a+b;returnc;}5.以下函数fun的功能是:统计一个数中位值为0的个数,以及位值为1的个数。若输入111001,则输出为值为零的个数是2,位置为1的个数是4。请填空。#includestdio.hvoidfun(longn){intcoun0=0,coun1=0,m;do{m=;if(m==0)coun0++;if(m==1)coun1++;n=;}while(n);printf(coun0=%d,coun1=%d\n,coun0,coun1);}intmain(){longn;printf(\ninputn:\n);scanf(%ld,&n);printf(n=%ld\n,n);fun(n);return0;}6.以下函数fun的功能是:将输入的一个偶数写成两个素数之和的形式。例如,若输入数值8,则输出8=3+5。请填空。#includestdio.h#includemath.hvoidfun(inta){intb,c,d;for(b=3;b=a/2;b=){for(c=2;c=sqrt(b);c++)if(b%c==0)break;if(csqrt(b))d=;elsebreak;for(c=2;c=sqrt(d);c++)if(d%c==0)break;if(csqrt(d))printf(%d=%d+%d\n,a,b,d);}}intmain(){inta;printf(\ninputa:\n);scanf(%d,&a);fun(a);return0;}7.以下程序的功能是根据输入的y(Y)与n(N),在屏幕上分别显示出ThisisYES.与ThisisNO.。请填空。#includestdio.hvoidYesNo(charch){switch(ch){case'y':case'Y':printf(\nThisisYES.\n);;case'n':case'N':printf(\nThisisNO.\n);}}intmain(){charch;printf(\nEnterachar'y','Y'or'n','N':);ch=;printf(ch:%c,ch);YesNo(ch);return0;}8.以下Check函数的功能是对value中的值进行四舍五入,若计算后的值与ponse值相等,则显示WELLDONE!!,否则显示计算后的值。已有函数调用语句Check(ponse,value);请填空。#includestdio.hvoidCheck(intponse,floatvalue){intval;val=;printf(计算后的值:%d,val);if()printf(\nWELLDONE!!\n);elseprintf(\nSorrythecorrectansweris%d\n,val);}9.以下程序的运行结果是“output:153370371407”,该程序的功能是。#includestdio.hintf(intn){inti,j,k;i=n/100;j=n/10-i*10;k=n%10;if(n==i*i*i+j*j*j+k*k*k)returnn;elsereturn0;}intmain(){intn,k;printf(output:);for(n=100;n1000;n++){k=f(n);if(k!=0)printf(%5d,k);}printf(\n);return0;}10.若输入一个整数10,则以下程序的运行结果是。#includestdio.hintsub(inta);intmain(){inta,e[10],c,i=0;printf(输入一个整数:);scanf(%d,&a);while(a!=0){c=sub(a);a=a/2;e[i]=c;i++;}for(;i0;i--)printf(%d,e[i-1]);printf(\n);return0;}intsub(inta){intc;c=a%2;returnc;}11.以下程序的功能是求3个数的最小公倍数。请填空。#includestdio.hintmax(intx,inty,intz){if(xy&&xz)returnx;elseif()returny;elsereturnz;}intmain(){intx1,x2,x3,i=1,j,x0;printf(Input3numbers:);scanf(%d%d%d,&x1,&x2,&x3);x0=max(x1,x2,x3);while(1){j=x0*i;if()break;i++;}printf(Thezuixiaogongbeiofthreenumber%d,%d,%dis:%d\n,x1,x2,x3,j);return0;}12.函数gongyue的作用是求整数num1和num2的最大公约数,并返回该值。请填空。#includestdio.hintgongyue(intnum1,intnum2){inttemp,a,b;if(num1num2){temp=num1;num1=num2;num2=temp;}a
本文标题:C语言-练习题(函数)
链接地址:https://www.777doc.com/doc-5274662 .html