




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章 函数一、选择题1、以下正确的说法是( A )A) 实参可以是常量、变量或表达式 B) 实参类型不必同形参类型一致 C) 形参可以是常量、变量或表达式 D) 实参顺序与形参顺序无关2、以下函数首部的定义形式的正确的是( B )A) int fun(int x; int y) B) int fun(int x, int y) C) int fun(int x, y) D) int fun(int x, int y);3、以下描述正确的是( B )A) 如果形参和实参的类型不一致,应以实参类型为准 B) 如果函数值类型与返回值类型不一致,应以函数值类型为准 C) return语句后不能是表达式 D) 定义函数时,可以省略不写形参的类型,只写形参名4、下列关于函数的描述错误的是( D )A) c程序是由函数组成的 B) c程序中的函数是各自独立的 C) main函数可以调用其它的函数 D) 在main函数中可以嵌套定义别的函数5、关于C语言的主函数描述正确的是 ( )BA) C程序可以有多个main函数 B) C程序有且只有一个main函数C) C程序可以没有main函数 D) C程序不一定从main函数开始执行6、若定义的函数有返回值,则以下关于该函数调用的叙述错误的是( )DA) 函数调用可作为独立的语句存在 B) 函数调用可作为一个函数的实参C) 函数调用可以出现在表达式中 D) 函数调用可作为一个函数的形参7、以下对于return语句的作用叙述不正确的是( )CA) 可以将函数值返回给主调函数 B) 可以将程序流程返回到主调函数C) 一个函数只能有一个return语句 D) 一个函数可以没有return语句8、C语言规定,函数返回值的类型是由( D )决定的。A) return语句中表达式的类型 B) 调用该函数的主调函数的类型 C) 调用该函数时系统临时 D) 在定义函数时所指定的函数值类型9、在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为( )AA) int B) double C) void D) float10、若函数定义如下,则函数返回值的数据类型是( )Afloat fun(int x) int y=x+2; return(y);A) float B) int C) 不能确定 D) 编译出错11、以下正确的函数形式是( )DA) double fun(int x, int y) B) void fun(int x, y) z = x + y; int z; return z; return z; C) double fun(x, y) D) double fun(int x, int y) double z = x + y; double z = x + y; return z; return z; 12、函数调用时,若参数为“值传递”方式,则下列描述错误的是( B )A) 实参可以是表达式 B) 实参与形参共用同一内存单元C) 调用时为形参分配内存单元 D) 实参与形参类型应一致13、若函数定义如下,假设将常数1.6传给x,则函数的返回值是( )Bint fun(float x) float y=x+2; return(y);A) 3.6 B) 3 C) 4 D) 3.014、设有如下的函数,则函数返回值的类型是( ) Cggg(float x) return(x*x); A) 与参数x的类型相同 B) void C) int D) 无法确定15、有以下程序,则执行后输出的结果是( )A#include stdio.hvoid fun(int k,int n) int t; t=k; k=n; n=t;void main() int k=1, m=2; fun(k, m); printf(%d,%dn, k,m); A) 1,2 B) 2,1 C) 1,1 D) 2,216、以下程序运行后的输出结果是 ( ) D#include stdio.hint fun(int a, int b) if (ab) return(a);else return(b);void main( ) int x=3, y=8, z=6, r;r=fun( fun(x, y), 2*z);printf(%dn, r);A) 3 B) 6 C) 8 D) 12*数组作函数参数*17、对于一维数组名作函数实参,以下描述正确的是( A )A) 必须在主调函数中说明此数组的大小 B) 实参数组类型与形参数组类型可以不一致 C) 函数调用时是将实参数组中的所有元素值复制到形参数组中 D) 实参数组名与形参数组名必须保持一致18、数组名作参数时,以下叙述正确的是( )BA) 函数调用时是将实参数组的所有元素传给形参 B) 函数调用时是将实参数组的首地址传给形参 C) 函数调用时是将实参数组的第1个元素传给形参 D) 函数调用时是将实参数组所有元素的地址传给形参19、已有如下数组定义和函数调用语句,则fun函数的形参数组的正确定义方法是( C )int a34;fun(a);A) fun( int a6) B) fun(int a3 C) fun(int a4) D) fun(int a)20、有以下程序,则执行后的结果为( )C#include stdio.hvoid fun(int b, int n) for(int i=0;in;i+) +bi; void main() int x, a5=2,3,4,5,6; f (a, 5);printf(%dn, a1);A) 2 B) 3 C) 4 D) 5*嵌套和递归*21、以下描述错误的是( ) DA) C程序中,函数可以直接或间接的调用自己B) 函数调用时,函数名必须与所调用的函数名字完全一致C) 函数声明语句中的类型必须与函数返回值的类型一致D) 实参数可以与形参个数不一致22、关于递归函数的叙述错误的是( )CA) 递归函数是自己调用自己 B) 递归函数占用较多的存储空间 C) 递归函数的运行速度很快 D) 递归函数的运行速度一般比较慢23、关于递归函数的叙述错误的是( A )A) 用递归函数求n! 比用循环求n! 的速度快 B) 递归函数经常使用if结构 C) 递归函数运行时占用较多的存储空间 D) 通常递归函数的代码比较简洁24、下列的结论中正确的是( ) BA) 所有的递归程序均可以采用非递归算法实现 B) 只有部分递归程序可以用非递归算法实现C) 所有的递归程序均不可以采用非递归算法实现 D) 以上三种说法都不对25、关于二分搜索以下说法错误的是( )BA) 二分搜索算法可以用循环语句实现 B) 二分搜索对数据排列没有要求C) 二分搜索算法可以用递归函数实现 D) 二分搜索体现了分治法的思想*局部和全局变量及存储类别*26、以下描述错误的是( D )A) 在不同的函数中可以使用相同名字的变量 B) 函数定义中的形参是局部变量 C) 在一个函数内部定义的变量只能在该函数内使用 D) 在一个函数内的复合语句中定义变量在整个函数范围内有效27、以下对局部变量描述正确的是 ( ) DA) 在函数内部定义的变量 B) 在main函数中定义的变量是局部变量C) 形式参数也是局部变量 D)局部变量在程序的全部执行过程中一直占用存储单元28、在一个源文件中定义的全局变量的作用域为( )DA)本文件的全部范围 B)本程序的全部范围C)本函数的全部范围 D)从定义该变量的位置开始到本文件结束29、以下关于局部变量和全局变量的叙述错误的是( )DA) main函数中定义的变量是局部变量 B) 局部变量可以与全局变量重名C) 在所有函数外定义的变量是全局变量 D) 形式参数不是局部变量30、阅读下列程序,则执行后输出的结果是( )A#include stdio.hint k=1;void fun(int k) k+; k=k*6; void main() fun(k); printf(%dn, k); A) 1 B) 2 C) 6 D) 1231、对于函数中的局部变量来说,默认的存储类型是( A )A) auto B) static C) extern D) register32、C语言中,默认的函数的存储类别是( C )A) auto B) static C) extern D) 函数没有存储类别33、程序中定义的全局变量存放在以下哪个存储区 ( ) CA) 堆存储区 B) 栈存储区 C) 静态存储区 D) 程序代码区34、设在C程序中有2个文件f1.cpp和f2.cpp,若要定义一个只允许在f1.cpp中所有函数使用的全局变量,则该变量的存储类别应该是 ( ) D A) extern B) register C) auto D) static35、以下叙述不正确的是( )BA) 在C语言中,若整型变量做函数参数,调用函数时是把实参的值传送给形参B) 在C的函数中,应该尽量多的使用全局变量C) 在C语言中,函数的返回值使用return语句返回D) 在C语言中,函数可以嵌套调用二、填空题1、用户自定义函数,必须先 定义 后使用。2、C语言程序的基本单位是函数,C语言程序从 开始执行。main函数3、用户自定义函数包括两个部分: 声明部分 和执行部分,这两部分的顺序不能颠倒。4、从函数定义的角度看,函数可以分为标准库函数和 自定义函数 两种。5、对于有返回值的函数来说,通常函数体内包含有 return 语句。6、当一个函数的返回值类型缺省时,意味着该函数的返回值类型为 int 型。7、数组名作函数参数时,实际上是将实参数组的 传给形参。 首地址8、调用带参数的函数时,实参必须和形参 数量 相同, 顺序 一致。9、C语言函数自己调用自己的方式称之为函数的 。递归10、用递归求解问题的两个特点是 和 。递归的结束条件 求解问题的递归方式11、变量的作用域和生存期是分别从 空间 和 时间 的角度来体现变量的特性。12、变量的存储类型可分为 静态存储 和 动态存储 两种,具体的存储类型有四种:auto, static , register , extern 。13、一个已编译的C程序在运行时将占用4块内存区域: 、 、 、栈存储区。静态存储区 程序代码区 堆存储区14、根据函数能否被其他源文件中的函数调用,可分为内部函数和 。外部函数三、阅读程序题1、写出程序的输出结果。#include stdio.hvoid fun(int a, int b) int s;s=a*b/2; a+; b+;printf(s=%dn, s);void main( ) int a=10,b=16; fun(a, b);printf(a=%d, b=%dn, a, b);输出结果:s=80a=10, b=162、写出函数func的功能,假设输入x和y的值为18和24,写出程序的运行结果。#include int fun(int a, int b);void main ( ) int x, y, z;scanf(“%d %d”, &x, &y);z=fun(x, y);printf(“z=%d”,z);int fun(int a, int b) int r,t;if(ab) t=a; a=b; b=t; while(b!=0) r=a%b; a=b; b=r; return(a);函数功能:求两个数的最大公约数运行结果:z=63、写出程序的输出结果。#include stdio.hint fun1( ) int k=20; return k; int fun2( ) int a=15; return a; void fun3(int a, int b) int k;k=(a-b)*(a+b);printf(k=%dn, k);void main( ) fun3( fun1(), fun2() ); 输出结果: k=1754、写出程序的输出结果。#includefloat fun(int x, int y) return(x+y); void main() int a=2,b=5,c=8; printf(%3.0fn, fun( (int)fun(a+c, b), a-c) ); 输出结果:_ _ 95、写出fun1和fun2函数的功能和程序的运行结果。(5 分)#include int fun1(int x) int i, t=1; for(i=1; i=3; i+) t=t*x; return(t);int fun2(int n) int i, s=0; for(i=1; i=n; i+) s=s+fun1(i); return(s);void main( ) int y; y=fun2 ( 3 ); printf(y= %dn, y ); fun1函数的功能是:求x!fun2函数的功能是:求1!+2!+ +n!累加和程序运行结果是:y=366、写出程序的功能, 假设输入为:4,请写出输出结果。(难度3颗星)#include#define M 6void main( ) int n, i, j, pos, aM= 1, 3, 5, 7, 9; scanf(%d, &n); if (naM-2) aM-1=n; else for(pos=0; posn) break;for(j=M-1; jpos ; j-) aj=aj-1; apos=n; for( i=0; iM; i+) printf(%4d, ai); printf(n);功能:在有序数组中插入一个数,并保持其有序性输出结果:1 3 4 5 7 97、写出程序的运行结果和函数fun所实现的功能。#include#define N 3#define M 4void fun(int xNM) int i, j, p;for(i=0; iN; i+) p=0;for(j=1; jM; j+) if(xipxij) p=j ;printf(line %d : %dn, i, xip );void main( ) int aNM=1, 5, 7, 4, 2, 6, 4, 3, 8, 2, 3, 1; fun(a);运行结果:line0: 7line1: 6line2: 8函数fun所实现的功能:找出二维数组中每行中的最大值8、写出下面程序的输出结果。#includeint fun(int n) if(n=1) return 1; else return fun(n-1)+n; /该递归函数功能是计算1n的和void main() int i, sum=0; for(i=1;i=3;i+) sum=sum+fun(i); printf(sum=%dn,sum);输出结果:sum=109、写出下面程序的输出结果。#includechar str=ABCDEFGH;void fun(int i) printf(%c, stri); if(i3) i=i+2; fun(i); void main() int i=0; fun(i); printf(n);输出结果:ACE10、写出程序的运行结果。#includeint k=1;void fun(int x) int k;k=x+1; printf (k=%dn, k);void main( ) k+; printf (k=%dn, k);fun(k); printf (k=%dn, k);运行结果:k=2k=3k=211、写出程序的输出结果。#includeint a=3;void main() int s=0; int a=5; s+=a+; s+=a+; printf(s=%d, a=%dn, s, a);输出结果:s=8, a=412、写出程序的输出结果。#includevoid dec( ) static int x=5;x=x-1;printf(%d , x);void main( ) int k;for(k=0; k3; k+)dec( );输出结果:4 3 213、写出程序的输出结果。#include stdio.hvoid f1( ) static int i=1;i+;printf(%dn, i);void main( ) int i=0;printf(%dn, i);f1( );f1( );printf(%dn, i);输出结果:023015、写出程序的运行结果。#include int fun(int a) int b=1; static int c=2; b+; c+; return(a+b+c);void main( ) int a=3, x1, x2; x1=f(a); x2=f(a); printf(“x1=%d, x2=%dn”,x1,x2);运行结果: x1=8, x2=916、写出下面程序的输出结果。#includeint x=3;void fun( ) static int x=1; x*=x+1; printf(x=%dn ,x);void main( ) int i; for(i=1; ix; i+) printf(i=%d: ,i); fun( ); 输出结果:i=1: x=2i=2: x=617、写出程序的运行结果。#includeint fun(int a) static int f=1; f=f*a; return(f);void main( ) int i, a=3; for(i=1; i=3; i+) printf(“%dn”, fun(a);运行结果:392718、写出下面程序的输出结果。(选做题,难度4颗星)#includevoid fun(int a, int i, int j)int t;if(ij) t=ai; ai=aj; aj=t; fun(a, i+1, j-1);void main() int i,a5=1,2,3,4,5; fun(a, 0, 4); for(i=0;i5;i+) printf(%d, ai); printf(n);输出结果: 5, 4, 3, 2, 1,19、写出函数fun1和fun2的功能及程序的运行结果。(选做题,难度5颗星)#includevoid fun1 (int a, int p, int r);int fun2 (int a, int p, int r);void main( ) int i, a10=3,6,1,0,9,4,8,5,2,7; fun1(a, 0, 9); for(i=0; i10; i+) printf(%3d, ai); printf(n);void fun1 (int a, int p, int r) if (pr) int q=fun2(a, p, r); fun1 (a, p, q-1); fun2 (a, q+1, r); int fun2 (int a, int p, int r) int i=p, j=r+1, x=ap, t; while (1) while (a+ix) ; if (i=j) break; t=ai; ai=aj; aj=t; ap=aj; aj=x; return j;运行结果:0 1 2 3 4 5 6 7 8 9fun1的功能:将数组按中间值分成两组分别进行排序fun2的功能:找出数组中间值的下标四、程序填空题1、下面的递归函数是完成1n的累加,请填写完整。int fun(int k) int sum; if (k=0) printf(errorn);if (k= =1) ;else ;return(sum);return(1); sum=k+fun(k-1);2、下面的函数是完成1n的累乘,请填写完整。int fun(int k) if (k=0) printf (error!n);if ( ) return 1 ;else ;k=1 return k*a(k-1);3、编程计算公式 p=k!/(m-k)!,要求编写一个求阶乘的函数func,请在main函数中输入m、k的值,然后通过调用函数计算p,最后输出p的值。# include float func(int n);void main ( ) int m, k; float p;scanf (“%d%d”,&m,&k );p= ; printf(“p=%f n”, p);float func(int n) int i; float value; value= ; for ( ) return ( );func(k)/ func(m-k) 1 i=1;in;i+ value= value*i; value4、请填写程序完成功能:利用折半查找方法在升序数组a中实现查找x,若找到返回其下标,若找不到返回-1。#include int search(int a,int n,int x ) int low,high,mid; low=0; high=n-1; while( ) mid=(low+high)/2; if(amid=x) return ; else if(amidx) ; else ;return -1;low=high mid high=mid-1 low=mid+1五、编程题1、编程实现输入一组整数,对这组数进行降序排列,然后输出结果,要求定义2个函数,一个函数实现输入数据,另一个函数实现排序,最后在main函数中输出排序后的结果。#include#define N 10void input(int a);void sort(int a);void main() int i,xN; input(x); sort(x); for(i=0;iN;i+) printf(%d ,xi); printf(n);void input(int a) printf(请输入%d个整数:, N); for(int i=0;iN;i+) scanf(%d,&ai);void sort(int a) int i,j,k,t; for(i=0; iN-1; i+) k=i; for(j=i+1; jak) k=j; if(k!=i) t=ak; ak=ai; ai=t; 2、编程输出10n(n10)之间所有素数的和,要求编写函数fun1判断某个数是否为素数,编写函数fun2实现累加求和,在主函数中输入n,输出最后的计算结果。#include int fun1( int a ) int i; for(i=2;ia-1;i+) if(a%i=0) return 0; return 1; int fun2(int n) int i, s=0; for(i=10;i=n;i+) if(fun1(i) s=s+i; return s; void main() int n; scanf(%d,&n); printf(%dn, fun2(n); 3、利用泰勒级数公式,计算sin(x)的值,要求最后一项的绝对值小于10-5,要求编写3个函数分别计算正弦函数,幂函数和阶乘函数。#include#includedouble factorial(int n);double power(double x,int n);double sinfun(double x);void main()double x,value;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新解读《GB-T 30693-2014塑料薄膜与水接触角的测量》
- 人教版八年级下册期末复习:Unit 10-Unit 1 书面表达与范文
- 新解读《GB-T 8770-2014分子筛动态水吸附测定方法》
- 新解读《GB 31177-2014学生宿舍卫生要求及管理规范》
- 统编版语文五年级下册第1-8单元小古文阅读检测卷(含答案)
- 重庆产后瑜伽知识培训课件
- 重庆乐理知识培训班课件
- 课件-火力发电项目安全文明施工标准化图集
- 老年人认知症培训课件
- 《日语1》课程介绍与教学大纲
- 水利水电工程单元工程施工质量验收表、安装埋设考证表样、施工期观测精度和限差
- 2024年泰州海陵区数产集团所属泰州城发数字科技有限公司招聘笔试参考题库附带答案详解
- 国际音标卡片(打印版)
- 翁建平MODY识别与诊疗培训课件
- 高中物理校本课程生活中的趣味物理校本课程实施方案
- 防火防烟分区检查
- 《小学开学第一课:学生守则、行为规范、班级班规》课件
- 农产品营销的渠道策略讲义
- 工程总承包(EPC)模式市场应用现状
- 幼儿园行政工作保密协议
- 环境监测课件
评论
0/150
提交评论