




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言函数练习题一、 选择题 1.在函数的说明和定义时若没有指出函数的类型,则( A )A: 系统自动地认为函数的类型为整型。B: 系统自动地认为函数的类型为字符型。C: 系统自动地认为函数的类型为实型。D: 编译时会出错。2.下面正确的函数定义形式是( A )A: double fun(int x,int y) B: double fun(int x;int y) C: double fun(int x,int y); D: double fun(int x,y); 3. 若调用一个函数,且此函数中没有return 语句,则正确的说法是:该函数( D ) A: 没有返回值;B: 返回若干个系统默认值;C: 能返回一个用户所希望的函数值;D: 返回一个不确定的值4. C语言允许函数返回值类型缺省定义,此时该函数隐含的返回值类型是( B )A: float 型B: int 型C: long 型D: double 型5. C语言规定,函数返回值的类型是由( D )(二级题)A: return 语句中的表达式类型所决定;B: 调用该函数时的主调函数类型所决定;C: 调用该函数时系统临时决定;D: 在定义该函数时所指定的函数类型所决定6.下面函数调用语句含有实参的个数为( B )func(exp1,exp2),(exp3,exp4,exp5); A: 1 B: 2 C: 5 D: 4 7. 以下错误的描述是( D )函数的调用可以A: 出现在执行语句中;B: 出现在一个表达式中;C: 为一个函数的实参;D: 作为一个函数的形参;8.若函数的形参为一维数组,则下列说法中正确的是( B )A: 调用函数时的对应实参必为数组名。B: 形参数组可以不指定大小。C: 形参数组的元素个数必须等于实参数组的元素个数。D: 形参数组的元素个数必须多于实参数组的元素个数。9.下面叙述中正确的是( C )A: 对于用户自己定义的函数,在使用前必须加以说明。B: 说明函数时必须明确其参数类型和返回类型。C: 函数可以返回一个值,也可以什么值也不返回。D: 空函数不完成任何操作,所以在程序设计中没有用处。10.若使用一维数组名作函数参数,则以下正确的说法是( C )A: 必须在主调用函数中说明此数组的大小;B: 实参数组类型与形参数组类型可以匹配; 必须C: 在被调函数中,不需要考虑形参数组的大小;D: 实参数组名与形参数组名必须一致11. 下面说法中不正确的是( B ) 在C 语言中A: 实参可以是常量、变量或表达式;B: 形参可以是常量、变量或表达式;C: 函数的参数是函数间传递数据的一种手段;D: 实参个数应与对应的形参个数相等,类型匹配12. 以下叙述中正确的是( B ) A 全局变量的作用域一定比局部变量的作用域范围大B 静态(static)类别变量的生存期贯穿于整个程序的运行期间C 函数的形参都属于全局变量 D 未在定义语句中赋初值的auto变量(不确定)和static变量(为0)的初值都是随机值13.下面程序的输出结果是( B ) #include void num() extern int x,y; int a=15,b=10;x=a-b; y=a+b; int x,y; main() int a=7,b=5; x=a-b; y=a+b;num();printf(%d,%dn,x,y); A: 12,2 B: 5,25 C: 1,12 D: 输出不确定14.下面程序的输出结果是( D )#includef(int a) int b=0;static int c=3;static为静态外部变量 C不恒等于3(在每次循环中),而是等于最近一次使用的值。b+;c+;return(a+b+c);main() int a=2,i;for(i=0;i3;i+) printf(%d ,f(a); A: 7 7 7 B: 7 10 13C: 7 9 11D: 7 8 9 15.下面程序的输出结果是( D )#include tr()static int x=3;x+;return(x);main() int i, x;for(i=0; i=2; i+ ) x=tr();printf(%dn, x);A: 3 B: 4 C: 5 D: 616. 下面程序的输出结果是( D )#include main( ) int x=1;void f1( );void f2(int);f1( ); f2(x);printf(%dn, x); void f1() int x=3; printf(%d , x); int x; void f2(int x ) printf(%d , +x); A: 1 1 1 B: 2 2 2 C: 3 3 3 D: 3 2 1 17.下列叙述中错误的是( A )A: 主函数中定义的变量在整个程序中都是有效的。 B: 在其它函数中定义的变量在主函数中也不能使用。C: 形式参数也是局部变量。D: 复合语句中定义的变量只在该复合语句中有效。18.下正确的说法是( A )如果在一个函数中的复合语句中定义了一个变量,则该变量A: 只在该复合语句中有效B: 在该函数中有效C: 本程序中有效D: 为非法变量19.下面程序的输出结果是( B )#include main( ) int x=10; int x=20;printf (%d, x); printf(%dn, x); A: 10,20B: 20,10C: 10,10D: 20,20 20. 以下叙述中不正确的是( D )A在不同的函数中可以使用相同名字的变量B函数中的形式参数是局部变量C在一个函数内定义的变量只在本函数范围内有效D在一个函数内的复合语句中定义的变量在本函数范围内有效21. 下面说法中不正确的是( D )A全局变量一定是外部变量B局部变量一定是内部变量。C全局变量作为函数间传递数据的手段时,与文件的作用类似,都是通过共享某种资源来传递数据。D全局变量与局部变量不可以重名。22. 以下程序的正确运行结果是( A )(二级题)#includefunc(int a,int b)static int m=0,i=2;i+=m+1;m=i+a+b;return(m);void main()int k=4,m=1,p;p=func(k,m); 8printf(%d,p);p=func(k,m);printf(%d,p);A8,17 B8,16 C8,20D8,823. C语言程序的基本单位是( C )(二级题)A. 程序行B. 语句 C. 函数D. 字符24.C语言规定,程序中各函数之间( A )(二级题)A. 既允许直接递归调用也允许间接递归调用B. 不允许直接递归调用也不允许间接递归调用C. 允许直接递归调用不允许间接递归调用 D. 不允许直接递归调用允许间接递归调用25. C语言可执行程序的开始执行点是( C )(二级题)A. 程序中第一条可执行语句 B. 程序中第一个函数 C. 程序中的main函数 D. 包含文件中的第一个函数26.C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为( D )(二级题)A. 该数组的长度。 B. 该数组的元素个数。C. 该数组中各元素的值。 D. 该数组的首地址。27.当调用函数时,实参是一个数组名,则向函数传送的是( B )(二级题)A. 数组的长度 B. 数组的首地址 C. 数组每一个元素的地址 D. 数组每个元素中的值28. 若有以下函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b);在此函数调用语句中实参的个数是( A )(二级题)A.3 B.4 C.5 D.629.在C语言中,函数的隐含存储类别是( C )(二级题)A. auto B. static C. extern D. 无存储类别30.在C语言中,若对函数类型未加明显式说明,则函数的隐含类型是( C )类型(二级题) A. void B. double C. int D. char31.在C语言中,形参的缺省存储类是( A )(二级题)A. auto B. register C. static D. extern32.以下函数值的类型是( A )(二级题)fun ( float x ) float y; y= 3*x-4; return y; A. int B. 不确定 C. void D. float33.以下说法中正确的是( C )(二级题) A. C语言程序总是从第一个的函数开始执行 B. 在C语言程序中,要调用的函数必须在main()函数中定义 C. C语言程序总是从main()函数开始执行 D. C语言程序中的main()函数必须放在程序的开始部分34.以下所列的各函数首部中,正确的是( C )(二级题) A. void play(var a:integer,var b:integer) B. void play(int a,b) C. void play(int a,int b) D. sub play(a as integer,b as integer)35.以下叙述中不正确的是( C )(二级题) A. 在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。 B. 在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容。 C. 在C中,外部变量的隐含类别是自动存储类别。 D. 在C中,函数形参可以说明为register变量。36.以下叙述中不正确的是( D )(二级题)A. 在不同的函数中可以使用相同名字的变量 B. 函数中的形式参数是局部变量 C. 在一个函数内定义的变量只在本函数范围内有效 D. 在一个函数内的复合语句中定义的变量在本函数范围内有效37.以下程序运行后,输出结果是( A )(二级题)C#includeint d=1; fun (int p) int d=5; d+=p+; printf(%d,d); main() int a=3; fun(a); d+=a+; printf(%dn,d); A.8 4 B.9 9 C.9 5 D.4 4 38.以下对C语言函数的有关描述中,正确的是( A )(二级题) A. 在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B. C函数既可以嵌套定义又可以递归调用 C. 函数必须有返回值,否则不能使用函数 D. C程序中有调用关系的所有函数必须放在同一个源程序文件中39.有如下程序 #includeint func(int a,int b) return(a+b); main() int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(%dn,r); 该程序的输出的结果是( D )(二级题)A. 12 B. 13 C. 14 D. 1540.有如下程序( B )(二级题)#includelong fib(int n) if(n2) return(fib(n-1)+fib(n-2); else return(2); main() printf(%dn,fib(3);该程序的输出结果是 A. 2 B. 4 C. 6 D. 841.以下程序的输出结果是( B )(二级题) #includeint a, b; void fun() a=100; b=200; main() int a=5, b=7; fun(); printf(%d%dn, a,b); A. 100200 B. 57 C. 200100 D. 7542.以下程序运行后,输出结果是( D )(二级题)#includefunc (int a,int b)int m=0 ,i=2; i+=m+1; m=i+a+b ; return(m); main() int k=4,m=1,p; p=func(k,m);printf(%d,p); p=func(k,m);printf(%dn,p); A 8,15 B 8,16 C 8,17D 8,8 43.以下程序的输出结果是( A )(二级题)#includelong fun( int n) long s; if(n=1 | n=2) s=2; else s=n-fun(n-1); return s; main() printf(%ldn, fun(3); A. 1 B. 2 C. 3 D. 4 44.以下程序的输出结果是( C )(二级题)#includeint d=1; fun(int p) static int d=5; d+=p; printf(%d ,d); return(d); main( ) int a=3; printf(%d n,fun(a+fun(d); A. 6 9 9 B. 6 6 9 C. 6 15 15 D. 6 6 15 45.下面程序的输出是( B )(二级题)#includeint w=3; fun(int k) if(k=0) return w; return(fun(k-1)*k); main() int w=10; printf(%dn,fun(5)*w); A.360 B.3600 C.1080 D.120046.下面程序的输出是( B )(二级题)#includeint m=13; int fun2(int x, int y) int m=3; return(x*y-m); main() int a=7, b=5; printf(%dn,fun2(a,b)/m); A. 1 B. 2 C. 7 D. 10 47.下面程序的输出是( C )(二级题)#includefun3(int x) static int a=3; a+=x; return(a); main() int k=2, m=1, n; n=fun3(k); n=fun3(m); printf(%dn,n); A. 3 B. 4 C. 6 D. 9 48.C语言中函数能否嵌套调用和递归调用( D )(二级题)A.二者均不可 B.前者可,后者不可 C.前者不可,后者可 D.二者均可49.有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5); 该函数调用语句中,含有的实参个数是( A )(二级题) A. 3 B. 4 C. 5 D. 有语法错50.有以下程序#includevoid fun(int a,int n) int i;for(i=0;in;i+)if(i%2=0)ai+=n;elseai-=n; main() int c5=5,4,3,2,1,i;fun(c,5);for(i=0;i5;i+)printf(%d,ci);printf(n);程序运行后输出的结果是( A )(二级题)A.10,-1,8,-3,6,B.5,4,3,2,1,C.10,2,8,4,6,D.5,-1,3,-3,1,51.有以下程序#include#define N 4void fun(int aN) int i;for(i=0;iN;i+)a0i=aN-1N-1-i; main() int xNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i;fun(x);for(i=0;iN;i+)printf(%d,xii);printf(n);程序运行后输出的结果是( A )(二级题)BA.16,6,11,16,B.1,6,11,16,C.4,7,10,13,D.17,17,17,17,52.有以下程序#include#define N 4double fun(double a) double x;x=a-(int)a;return x; main() double a=3.1415;printf(%fn,fun(a);程序的运行结果是( C )(二级题)A.3.000000B.3.141500C.0.141500D.0.00000053.有如下程序#includeint sum(int data)static int init=1;return init +=data;main() int i;for(i=1;i=1;i+)printf(%d,sum(i);printf(n);程序运行后输出的结果是( A )(二级题)A.2,B.2,3,C.3,D.1,54.以下针对全局变量的叙述错误的是( C )(二级题)A.全局变量的作用域是从定义位置开始至源文件结束B.全局变量是在函数外部任意位置上定义的变量C.用extern说明符可以限制全局变量的作用域D.全局变量的生存期贯穿于整个程序运行期间55.有以下程序#includevoid fun(int a,int n) int i;for(i=0;in;i+)if(i%3=0)ai-=n;elseai+=n; main() int c5=6,7,8,9,10,i;fun(c,5);for(i=0;i5;i+)printf(%d,ci);printf(n);程序运行后输出的结果是( A )(二级题)A.1,12,13,4,15,B.10,9,8,7,6,C.1,7,13,9,15,D.10,12,8,4,6,56.有以下程序#includeint sub(double a,double b)return (int)(a-b-1.3);main()printf(%dn,sub(3.2,4.1);程序运行后输出的结果是( A )(二级题)A.-2B.1.7C.-3D.2.057.有如下程序#includevoid convert(char ch)if(chX) convert(ch+1);printf(%c,ch);main()convert(W);printf(n);程序运行后输出的结果是( D )(二级题)A.YZB.VWC.XYD.XW58.有如下程序#includevoid get_put()char ch;ch=getchar();if(ch!=n) get_put();putchar(ch);main()get_put();程序运行时,输入ABCD,则输出结果是( B )(二级题)A.DCDCB.DCBAC.BABAD.ABCD59.以下叙述错误的是( A )(二级题)A.未经赋值的全局变量值不确定B.未经赋值的auto变量值不确定C.未经赋值的register变量值不确定D.未经赋值的静态局部变量值为060.有如下程序#includeint sum(int a,int b)return a+b-2;main()int i;for(i=0;i5;i+)printf(%d,sum(i,3);printf(n);程序运行后的输出结果是( D )(二级题)A.54321B.01234C.45678D.12345二、 填空题1. C 语言规定,可执行程序的开始执行点是 main() 。2.阅读以下程序,若输入15,写出程序运行结果 1111 。#include stdio.hint main( ) int n; void dectobin(int n); scanf(%d,&n); dectobin(n); printf(n); void dectobin(int n) int a16=0; int i=0; while(n!=0) ai=n%2; i+; n/=2; i=i-1; while(i=0) printf(%d,ai); i-; 3. 写出以下程序运行结果 function:x=1.000000, y=2.000000, av=1.500000 main:a=1.000000, b=2.000000, c=3.000000 。#include stdio.h float average(float x, float y, float av) av = (x+y)/2.0; printf(function:x=%f, y=%f, av=%fn, x, y, av); return av; main() float a=1, b=2, c=3; average(a,b,c); printf(main:a=%f, b=%f, c=%fn, a, b, c); 4.以下isprime 函数的功能是判断形参a 是否为素数,是素数,函数返回1,否则返回0,请填空int isprime(int a) int i; for(i=2;i=a/2;i+) if(a%i=0) return 0 ; return 1 ; 5. 有以下程序 #includeint sub(int n) return (n/10+n%10); main() int x,y; scanf(%d,&x); y=sub(sub(sub(x); printf(%dn,y); 若运行时输入:1234,程序的输出结果是 10 . 6.以下程序运行后的输出结果是 4 3 3 4 #includevoid swap(int x,int y) int t; t=x;x=y;y=t; printf(%d %d ,x,y); main() int a=3,b=4;swap(a,b); printf(%d %d ,a,b); 7.通过函数求f(x)的累加和,其中f(x)x2+1 main() printf(The sum=%dn,SunFun(10); SunFun(int n) int x,s=0;for(x=0;x=n;x+) s+=F( x ); return s; F( int x) return x*x+1 ; 8.函数fun 的功能是计算xn double fun(double x,int n) int i; double y=1; for(i=1;i=n;i+) y=y*x; return y; 主函数中已经正确定义m,a,b 变量并赋值,并调用fun 函数计算:m=a4+b4- (a+b)3 。实现这一计算的函数调用语句为 fun(a,4)+fun(b,4)-fun(a+b,3) 9.在内存中,供用户使用的存储区可分为三个部分,它们是 程序区 、 静态储存区 、 动态储存区 。10.函数直接或者间接地自己调用自己,被称为函数的 递归调用 。11.在函数内部定义的只在本函数内有效的变量叫 局部变量 ,在函数以外定义的变量叫 全部变量 。12. 以下程序的输出结果是 。#includevoid fun(int x,int y) x=x+y;y=x-y;x=x-y;printf(%d,%d,x,y); main() int x=2,y=3;fun(x,y);printf(%d,%dn,x,y); 13. 以下程序的输出结果是 。#includeint fun(int a,int b) printf(a=%d,b=%d ,a,b);return(ab?a:b); main() int i=2,j=5,k=3,m;m=fun(fun(i,j),fun(j,k);printf(m=%dn,m); 14. 下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其他以此类推。请填空。void fun(int x,int b) int k=0,r;dor=x% 2 ;bk+=r;x/= 2 ;while(x);15.分析以下程序的输出结果是 0 。#includeint fun(int a,int b) if(ab) return 1;else if(ab) return -1;else return 0; main() int i=2,j;j=fun(i-,+i);printf(j=%dn,j); 16.分析以下程序的输出结果是 20 。#includeint func(int a,int b,int c) return (a+b+c); main() int i=5,j;j=func(i-,+i,+i);printf(%dn,j); 17. 以下程序的输出结果是 128 。#includeint fac_sum(int n)static int f=1,t=1,s=0;int i;if(nt)for(i=t+1;i=n;i+)f=f*i;elsef=1;for(i=1;i=n;i+) f=f*i;t=n;s=s+f;return(s);main()int a=3,5,2,i,sum;for(i=0;i3;i+)sum=fac_sum(ai);printf(sum=%dn,sum);18. 以下程序的输出结果是 2 4 6 。#includevoid fun()static int a=0;a+=2;printf(%d,a);main()int cc;for(cc=1;cc4;cc+)fun();printf(n);19. 以下程序的输出的最后一个值是 120 。#includeint ff(int n)static int f=1;f=f*n;return f;main()int i;for (i=1;i=5;i+)printf(%dn,ff(i);20. 分析以下程序的执行结果 2,3 2,4 。#includevoid fun()int x=1;static int y=2;x+;y+;printf(%d,%d ,x,y);main()fun();fun();printf(n)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 儿童亲子互动玩具品牌授权经营与品牌形象合作合同
- 货币市场基金投资风险报告补充协议
- 旅游意外伤害及保险服务协议
- 城市绿化树木病虫害检测补充协议
- 2024年中国油烟机壳市场调查研究报告
- 人教版五年级下册数学 4.5.3 练习十七 课时练
- 英文版雇佣合同协议
- 英文论文转让合同协议
- 覆膜机胶辊采购合同协议
- 西班牙口罩购买协议合同
- MOOC 英语语法与写作-暨南大学 中国大学慕课答案
- 威图电柜空调SK3304500使用说书
- 2024年山东省济南市历下区中考二模地理试题
- 电子书 -《商业的底层逻辑》
- 人居环境科学市公开课一等奖省赛课微课金奖课件
- 4.2 应对挫折提升抗逆力(高效教案)-【中职专用】中职思想政治《心理健康与职业生涯》(高教版2023·基础模块)
- 外贸谈判知识分享课件
- 教学课件-思想政治教育心理学-杨芷英
- 网络互连设备-交换机VLAN配置
- 国际企业的财务管理完整版
- 2024年爱数技术认证工程师考试题目
评论
0/150
提交评论