第5章 函数答案.docx
- 文档编号:24857976
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:17
- 大小:19.41KB
第5章 函数答案.docx
《第5章 函数答案.docx》由会员分享,可在线阅读,更多相关《第5章 函数答案.docx(17页珍藏版)》请在冰豆网上搜索。
第5章函数答案
第5章函数
一、选择题
1、以下所列的各函数首部中,正确的是(C)
A)voidplay(var:
Integer,varb:
Integer)
B)voidplay(inta,b)
C)voidplay(inta,intb)
D)Subplay(aasinteger,basinteger)
2、以下正确的函数的形式是(B)
A)doublefun(intx,inty)B)fun(intx,inty)
{z=x+y;returnz;}{intz=9;returnz;}
C)fun(intx,inty);D)doublefun(intx,y)
{intx,y;doublez;{doublez;
z=x+y;returnz;}z=x+y;returnz;}
3、以下正确的函数定义形式是(C)
A)doublefun(intx,inty)B)doublefun(intx;inty)
C)doublefun(intx,inty);D)doublefun(intx,y);
4、C语言规定,函数返回值的类型是由(D)
A)return语句中的表达式类型决定的
B)调用该函数时的主调函数类型决定
C)调用该函数时系统临时决定
D)在定义该函数时所指定的函数类型所决定
5、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(D)
A)函数调用可以作为独立的语句存在
B)函数调用可以作为一个函数的实参
C)函数调用可以出现在表达式中
D)函数调用可以作为一个函数的形参
6、C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是(B)
A)voidB)intC)floatD)double
7、以下函数值的类型是(A)
fun(floatx)
{floaty;
y=3*x-4;
returny;
}
A)intB)不确定
C)voidD)float
8、以下函数调用语句中,含有的实参个数是(B)
A)1B)2C)4D)5
func((exp1,exp2),(exp3,exp4,exp5));
9、有以下程序
voidf(intx,inty){
intt;
if(x } main(){ inta=4,b=3,c=5; f(a,b);f(a,c);f(b,c); printf("%d,%d,%d\n",a,b,c); }执行后输出的结果是(D) A)3,4,5B)5,3,4C)5,4,3D)4,3,5 10、以下程序的输出结果是(C) A)0B)29C)31D)无定值 fun(intx,inty,intz) {z=x*x+y*y;} main() {inta=31; fun(5,2,a); printf(“%d”,a); } 11、有以下程序 fun(inta,intb){ if(a>b)return(a); elsereturn(b); } main(){ intx=3,y=8,z=6,r; r=fun(fun(x,y),2*z); printf("%d\n",r); } 程序运行后的输出结果是(D) A)3B)6C)8D)12 12、有以下程序 floatfun(intx,inty) {return(x+y);} main() {inta=2,b=5,c=8; printf(“%3.0f\n”,fun((int)fun(a+c,b),a-c)); } 程序运行后的输出结果是(B) A)编译出错B)9 C)21D)9.0 13、有如下程序 longfib(intn){ if(n>2)return(fib(n-1)+fib(n-2)); elsereturn (2); } main(){ printf("%d\n",fib(3)); } 该程序的输出结果是(B) A)2B)4C)6D)8 14、以下程序的输出结果是(A) A)1B)2C)3D)4 longfun(intn) {longs; if(n==1||n==2)s=2; elses=n-fun(n-1); returns; } main() {printf("%ld\n",fun(3));} 15、有以下程序 intf(intn){ if(n==1)return1; elsereturnf(n-1)+1; } main(){ inti,j=0; for(i=1;i<3;i++)j+=f(i); printf("%d\n",j); } 程序运行后的输出结果是(B) A)4B)3C)2D)1 16、以下叙述中不正确的是(D) A)在不同的函数中可以使用相同名字的变量 B)函数中的形式参数是局部变量 C)在一个函数内定义的变量只在本函数范围内有效 D)在一个函数内的复合语句中定义的变量在本函数范围内有效 17、以下叙述中正确的是(A) A)全局变量的作用域一定比局部变量的作用域范围大 B)静态(static)类别变量的生存期贯穿于整个程序的运行期间 C)函数的形参都属于全局变量 D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值 18、以下程序的输出结果是(B) inta=5; fun(intb){ inta=10; a+=b++; printf("%d",a); } main(){ intc=20; fun(c); a+=c++; printf("%d\n",a); } A)3126B)3025C)2525D)3030 19、以下只有在使用时才为该类型变量分配内存的存储类说明是(A) A)auto和staticB)auto和register C)register和staticD)extern和register 20、以下叙述中不正确的是(C) A)一个变量的作用域完全取决于变量定义语句的位置 B)全局变量可以在函数以外的任何部分进行定义 C)局部变量的“生存期”只限于本次函数调用,因此不可能将局部变量的运算结果保持至下一次调用 D)一个全局变量说明为static存储类是为了限制其他编译单位的引用 21、有以下程序 inta=4; intf(intn){ intt=0; staticinta=5; if(n%2){inta=6;t+=a++;} else{inta=7;t+=a++;} returnt+a++; } main(){ ints=a,i=0; for(;i<2;i++)s+=f(i); printf("%d\n",s); } 程序运行后的输出结果是(B) A)24B)28C)32D)36 22、有以下程序 intf(intx,inty) {return((y-x)*x);} main(){ inta=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf(“%d\n”,d); } 程序运行后的输出结果是(B) A)10B)9C)8D)7 23、有以下程序 intfun(intx,inty) {if(x==y)return(x); elsereturn((x+y)/2); } main(){ inta=4,b=5,c=6; printf(“%d\n”,fun(2*a,fun(b,c))); } 程序运行后的输出结果是(B) A)3B)6C)8D)12 24、有以下程序 int fun(int a,int b) { if(b==0) return a; else return(fun(--a,--b)); } main() { printf("%d\n", fun(4,2));} 程序的运行结果是(B) A)1 B)2 C)3 D)4 25、有以下程序 intf(intx){ inty; if(x==0||x==1)return(3); y=x*x-f(x-2); returny; } main(){ intz; z=f(3); printf("%d\n",z); 程序的运行结果是(C) }A)0B)9C)6D)8 二、程序阅读题 1、以下程序的正确结果是2,5,1,2,3,-2 main() { inta=3,b=2,c=1; c-=++b; b*=a+c; { intb=5,c=12; c/=b*2; a-=c; printf("%d,%d,%d,",a,b,c); a+=--c; } printf("%d,%d,%d\n",a,b,c); } 2、有以下程序,当执行后,其结果是14 inta=1; intf(intc){ staticinta=2; c=c+1; return(a++)+c; } main(){ inti,k=0; for(i=0;i<2;i++){inta=3;k+=f(a);} k+=a; printf(“%d\n”,k); } 3、以下程序运行后的输出结果是136 fun(intx) {if(x/2>0)fun(x/2); printf("%d",x); } main() {fun(6);} 4、若有以下程序 intf(intx,inty) {return(y-x)*x;} main() {inta=3,b=4,c=5,d; d=f(f(3,4),f(3,5)); printf("%d\n",d); } 执行后输出结果是9 5、有以下程序 floatfun(intx,inty) {return(x+y);} main() {inta=2,b=5,c=8; printf("%3.0f\n",fun((int)fun(a+c,b),a-c)); } 程序运行后的输出结果是9。 6、以下程序的输出结果是1,6,3,2,3 main(){ inti=1,j=3; printf("%d,",i++); { inti=0; i+=j*2; printf("%d,%d,",i,j); } printf("%d,%d\n",i,j); } 7、以下程序的输出结果是15 intf() {staticinti=0; ints=1; s+=i;i++; returns; } main() {inti,a=0; for(i=0;i<5;i++)a+=f(); printf("%d\n",a); } 8、以下程序运行后的输出结果是3,2,2,3 voidfun(intx,inty) {x=x+y;y=x-y;x=x-y; printf(“%d,%d,”,x,y);} main() {intx=2,y=3; fun(x,y); printf(“%d,%d\n”,x,y);} 9、以下程序的运行结果是m=4k=4i=5j=5 。 intk=0; voidfun(intm) {m+=k;k+=m;printf("m=%dk=%d",m,k++);} main() {inti=4; fun(i++);printf("i=%dk=%d\n",i,k); } 10、有以下程序 intsub(intn){return(n/10+n%10);} main() {intx,y; scanf("%d",&x); y=sub(sub(sub(x))); printf("%d\n",y); } 若运行时输入: 1234<回车>,程序的输出结果是10 11、以下程序的输出结果是 15 。 int fun(int x) { static int t=0; return(t+=x); } main() { int s,i; for(i=1;i<=5;i++) s=fun(i); printf("%d\n",s); } 三、程序填空题 1、请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。 doublemax(double,double); main() {doublex,y; scanf("%lf%lf",&x,&y); printf("%lf\n",max(x,y)); } doublemax(doublea,doubleb) {return(a>b? a: b);} 2、下面程序的功能是: 将任意输入的一个偶数n分解为两个素数之和,程序中函数check用来判断一个整数x是否是素数,若是,返回1,否则返回0。 main(){ intn,i; intcheck(intx); do{ printf("Inputn: "); scanf("%d",&n); }while(n%2! =0); for(i=3;i<=n/2;i++) if(check(i)&&check(n-i)) printf("%d=%d+%d\n",n,i,n-i); } intcheck(intx){ inti; for(i=2;i if(x%i==0)return(0); return (1);} 3、以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0,请填空 intisprime(inta) { inti; for(i=2;i<=a/2;i++) if(a%i==0)return0; return1; } 4、请将以下程序中的函数声明语句补充完整。 intmax(int,int); main() {intx,y,(*p)(); scanf(“%d%d”,&x,&y); p=max; printf(“%d\n”,(*p)(x,y)); } intmax(inta,intb) {return(a>b? a: b);} 5、以下程序的功能是: 通过函数func输入字符并统计输入字符的个数。 输入时用字符@作为输入结束标志。 请填空。 long func() /* 函数说明语句 */ main() { long n; n=func(); printf("n=%ld\n",n); } long func() { long m; for(m=0;getchar()! ='@'; m++ ); return m; } 6、以下程序的功能是调用函数fun计算: m=1-2+3-4+…+9-10,并输出结果。 请填空。 intfun(intn){ intm=0,f=1,i; for(i=1;i<=n;i++){ m+=i*f; f=-f; } returnm; } main() {printf("m=%d\n",fun(10));} 7、以下sum函数的功能是计算下列级数之和。 s=1+x+x2/2! +x3/3! +........+xn/n! 请给函数中的各变量正确赋初值。 doublesum(doublex,intn){ inti;doublea,b,s; s=1; for(i=1;i<=n;i++){ a=a*x; b=b*i; s=s+a/b; } returns; } 8、通过函数求f(x)的累加和,其中f(x)=x2+1 main(){ printf("Thesum=%d\n",SunFun(10)); } SunFun(intn){ intx,s=0; for(x=0;x<=n;x++)s+=F(x); returns; } F(intx) {returnx*x+1;} 四、程序编程题 1、请编写函数fun,它的功能是: 计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。 例如,当n为20时,返回的值为0.583333。 下面已经给出了函数的首部,请编写函数体部分。 doublefun(intn) { 请完成函数体部分 } 2、请编写一个函数fun,它的功能是: 计算并输出给定整数n的所有因子(不包括1和自身)之和。 规定n的值不大于1000。 例如整数856的所有因子之和等于763。 下面已经给出了函数的首部,请编写函数体部分。 intfun(intn) { 请完成函数体部分 } 3、请编写函数fun,其功能是: 计算并输出3到n之间的(含3和n)所有素数的平方根之和。 例如,n为100,则返回值为148.872470。 要求n的值大于2但不大于100。 下面已经给出了函数的首部,请编写函数体部分。 doublefun(intn) { 请完成函数体部分 } 4、请编写一个函数,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。 例如: 实型数为1234.567,则函数返回1234.570000 实型数为1234.564,则函数返回1234.560000 下面已经给出了函数的首部,请编写函数体部分。 floatfun(floath) { 请完成函数体部分 }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 函数答案 函数 答案