C语言函数题库及答案

上传人:大米 文档编号:488378751 上传时间:2022-08-25 格式:DOCX 页数:15 大小:34.14KB
返回 下载 相关 举报
C语言函数题库及答案_第1页
第1页 / 共15页
C语言函数题库及答案_第2页
第2页 / 共15页
C语言函数题库及答案_第3页
第3页 / 共15页
C语言函数题库及答案_第4页
第4页 / 共15页
C语言函数题库及答案_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《C语言函数题库及答案》由会员分享,可在线阅读,更多相关《C语言函数题库及答案(15页珍藏版)》请在金锄头文库上搜索。

1、第六部分 函数一、单项选择题1 . C语言中的函数返回值的类型是由(D)决定A. return语句中的表达式B.调用函数的主调函数C.调用函数时临时D .定义函数时所指定的函数类型2 .下面不正确的描述是( B ) 。A.调用函数时,实参可以是表达式B.调用函数时,实参和形参可以共用内存单元C.调用函数时,将形参分配内存单元D.调用函数时,实参与形参的类型必须一致3 .在 C 语言中,调用一个函数时,实参变量和形参变量之间的数据传递是(D )A.地址传递B .值传递C.由实参传递给形参,并由形参传回给实参D.由用户指定传递方式4 . 下面的函数调用语句中含有( A )个实参int a,b,c;

2、int sum(int x1,int x2);total=sum(a,b),c);A 2 B 3 C 4D 55 .在C语言中(C )A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义和调用均不可以嵌套C.函数的定义不可以嵌套,但是函数的调用可以嵌套D.函数的定义和调用均可以嵌套6 .关于C语言中的return语句正确的是(C )A.只能在主函数中出现B.在每个函数中都必须出现C.可以在一个函数中出现多次D.只能在除主函数之外的函数中出现7. 两个形参中,第一个形参为指针类型、第二个形参为整型, 则对函数形参的说明有错误的是( D )A. int a(float x,int n)8.

3、 int a(float *x,int n)9. int a(float x10,int n)D.int a(float x,int n)8. 在C语言中,函数的数据类型是指(A )A. 函数返回值的数据类型B. 函数形参的数据类型C. 调用该函数时的实参的数据类型D. 任意指定的数据类型9. 已知如下定义的函数:fun1(a) printf(n%d,a) ;则该函数的数据类型是( C )A.与参数a的类型相同B void 型C整型D无法确定10. 定义一个函数实现交换x 和 y 的值,并将结果正确返回。能够实现此功能的是( D )A. swapa(int x,int y) int temp

4、;temp=x; x=y ; y=temp;B. swapb(int *x,int *y) int temp ;temp=x; x=y ; y=temp;C.swapc(int *x,int *y) int temp ;temp=*x ; *x=*y ; *y=temp ;D. swapd(int *x,int *y) int *temp ;temp=x; x=y ; y=temp;(B)11. 求一个角的正弦函数值的平方。能够实现此功能的函数是A.sqofsina(x) float x ;return(sin(x)*sin(x) ;B. double sqofsinb(x) float x

5、;return(sin(double)x)*sin(double)x)C.double sqofsinc(x) return(sin(x)*sin(x)D. sqofsind(x) float x ;return(double(sin(x)*sin(x)12.已知函数定义如下:float fun1(int x,int y) float z ;z=(float)x/y ;return(z);主调函数中有int a=1,b=0 ;可以正确调用此函数的语句是(D )A.printf(%f,fun1(a,b) ; B. printf(%f,fun1(&a,&b) ;C. printf(%f,fun1(

6、*a,*b) ; D.调用时发生错误13.下面函数的功能是(B )a(s1,s2)char s1,s2口; while(s2+=s1+);A.字符串比较B.字符串复制C.字符串连接D.字符串反向二、填空题1 .在C语言中,存储类型为 局部和自动型的变量,只能在使用它们时才占用存 储空间。2 .在一个源文件中定义的全局变量的作用域为整个源程序。3 .下面程序的执行结果是84int d=1;fun(int p)int d=5;d+=p+;printf( %d”,d); main() int a=3; fun(a); d+=a+;printf( %d”,d);4 .该fun函数的功能是求10的阶乘。

7、1) #include2) long fun ( int n)3) if (1)4) return (n*fun(2);5) else if ( 3)6) return 1;第一处:n1第二处:n-1 第三处:n=1解析:从第2、4行看到了函数名,函数体中又出现了函数的调用,则是递归。我们知道:n!=n*(n-1)!这就是一个递归的表达式,写成函数就是fun(n)=n*fun(n-1)。因此,4行处填写n-1。又:1!=1故3, 5行就好填了。因此答案是 n1 n-1 n=1。还有0!=1故,还可 填写:n0 n-1 n=0注意:3 5行的条件是相反的,这也是 if与else条件的互斥性。5

8、.程序的功能是计算 s=1!+2!+3!+n!1) long fun(int n)2) int i;3) long s;4) s=1;5) for (i=1; i=n; i+)6) s=2;7) return s;8) 9) main()10) long s;11) int k,n;12) scanf(%d,&n);13) s=3;14) for (k=1; k=n; k+)15) s=4;16) printf(%ldn, s);17) 第一处:1第二处:s*i第三处:0第四处:s+fun(k)解析:首先,搞清楚函数fun、 main各自的功能。Fun是求一个数的阶乘,我们知道:n!=1*2*

9、3*n同时要死记住:求积,积的初值一般等于1。故fun中s是用来存放积的,其初值等于1;求阶乘是连乘,故 s=s*iMain是求和,记住:和的初值一般等于0.两个函数中的局部变量s的作用是不同的。Main中的s是存放和的。最后:注意一些变量的类型。阶乘是求积,积的增长速度是比较快的,为防止溢出,fun的返回值类型是long。输出中ld是输出长整数。6 .请在函数fun的横线上填写若干个表达式,使从键盘上输入一个整数n,输出斐波纳契数列。斐波契数列是一种整数数列,其中每数等于前两数之后,如:0 1 1 2 3 5 8 131) int fun(int n)2) if(-1)3) return 0

10、;4) else if(2)5) return 1;6) else7) return 3;8) 第一处:n=0第二处:n=1第三处:fun(n-1)+fun(n-2)解析:求斐波契数列:一项等于其前两项的和。这也是一个递归。求斐波契数列的第n项的值,n从0开始。7 .请补全函数fun,该函数的功能是求出以下分数序列的前n项之和。和值通过函数值返回到main函数。1) #include2) #include3)1 fun(int n)4) int a,b,c,k;5) double s;6) s=0.0;7) a=2;8) b=1;9) for(k=1;k=n;k+)10) 11) s=s+(

11、2)a/(3)b;12) c=a;13) a=a+b;14) b=c;15) 16) return s;17) 第一处:double第二处:double第三处:double解析:从第11-14总结出数列的表达式。第 1项是a/b=2/1;3/2 4/3故:s=2/1+3/2+4/3+ 和的初值是 0。记住:两个整数进行算术运算结果也是整数,算术运算中只要有一个操作数是实数,运算结果就是实数。本题希望结果是实数,故要进行强制类型转换,2, 3只要有一个进行强制转换就可以最后,函数需要有一个返回值类型,当然也是双精度浮点数了。8.给定程序的功能是计算并输出下列级数的前N项之和SN,直到SN大于q为

12、止,q的值通过形参传入。1) double fun( double q )2) int n;3) double s;4) n = 2;5) s = 2.0;6) while (s 1 q)7) 8) s=s+(double)(n+1)/n;9) 2;10) 11) printf(n=%dn,n);12) 3;13) 第一处:s = q第二处:n+第三处:return s解析:从第8行,从数学的角度总结出数列的表达式。(n+1)/n n从2开始,每次增加 1,故:SN=2+3/2+4/3+ 和的初值是 2.0 循环条件是“ SN大于q为止” ,while是满足条件才循环,故填写 s = q 最后

13、,函数需要有一个返回值。14) 定程序功能是计算S=f(-n)+f(-n+1)+ +f(0)+f(1)+f(2)+ +f(n)的值。float f( double x)if (x = 0.0 | x = 2.0)return 1;else if (x 0.0)return (x -1)/(x-2);elsereturn (x +1)/(x-2);double fun( int n )int i; double s=0.0, y;for (i= -n; i=2; i+) y=f(1.0*i); s+= y; return 3;main ()printf(%fn, fun(5);第一处:0.0第二

14、处:n第三处:s解析:函数f ( double x)求每个单项的值。 ifelse的条件是互斥的。fun()是求和。10 .给定程序的功能是计算score中m个人的平均成绩 aver,将低于aver的成绩放在below中,通过函数名返回人数。int fun(int score, int m, int below口)int i, j = 0 ;float aver = 0.0 ;for(i = 0 ; i m ; i+) aver += scorei;aver /= (float) m ;for(i = 0 ; i m ; i+)if(scorei aver) belowj+ =1;return j ;main()int i, n, below9;int score9 = 10, 20, 30, 40, 50, 60, 70, 80, 90;n =

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号