计算机二级 C语言考试 C语言学习 第4讲课件

上传人:我*** 文档编号:144109413 上传时间:2020-09-06 格式:PPT 页数:35 大小:509.50KB
返回 下载 相关 举报
计算机二级 C语言考试 C语言学习 第4讲课件_第1页
第1页 / 共35页
计算机二级 C语言考试 C语言学习 第4讲课件_第2页
第2页 / 共35页
计算机二级 C语言考试 C语言学习 第4讲课件_第3页
第3页 / 共35页
计算机二级 C语言考试 C语言学习 第4讲课件_第4页
第4页 / 共35页
计算机二级 C语言考试 C语言学习 第4讲课件_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《计算机二级 C语言考试 C语言学习 第4讲课件》由会员分享,可在线阅读,更多相关《计算机二级 C语言考试 C语言学习 第4讲课件(35页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计,第四讲,函 数,1、函数概述 2、函数定义 3、函数的返回 4、函数的调用 5、函数的说明 6、函数的参数传递,一、函数概述,1、函数的重要性 C语言的最基本单位 前期所讲main函数 2、函数的分类 用户角度 形式角度,二、函数的定义 一般格式:,合法标识符,函数返回值类型 缺省int型 无返回值void,函数体,例 有参函数(现代风格) int max(int x,int y) int z; z=xy?x:y; return(z); ,例 无参函数 printstar( ) printf(“*n”); 或 printstar(void ) printf(“*n”); ,例

2、有参函数(传统风格) int max(x,y) int x,y; int z; z=xy?x:y; return(z); ,注意事项: 1、现代风格与传统风格; 2、函数名和形式参数都是合法的用户标识符; 3、函数不可以嵌套定义; 4、函数首部中:函数类型、其省略问题、无返回值; 5、除了int 类型的函数外,函数必须先定义后调用;,int max(int x1,int x2,int x3) /*定义函数的返回值类型,函数名,形参*/ int max; if (x1x2) max=x1; else max=x2; if (maxx3) max=x3; /*通过比较得到三个数的最大值放到max中

3、*/ return(max); /*返回运算结果*/ ,【例】编写函数,求三个整型参数的最大值。,三、函数的返回值 返回语句 形式: return(表达式); 或 return 表达式; 或 return; 功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数 说明: 函数中可有多个return语句 若无return语句,遇到函数结束的“”时,自动返回调用函数 若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换-函数调用转换 void型函数:无返回值的函数,例 无返回值函数 void swap(int x,int y ) int temp; temp=x;

4、 x=y; y=temp; ,printstar() printf(*); main() int a; a=printstar(); printf(%d,a); ,例 无返回值的函数返回后带回不确定值,输出:10,void printstar() printf(*); main() int a; a=printstar(); printf(%d,a); ,编译错误!,例 函数返回值类型转换,main() float a,b; int c; scanf(%f,%f, ,07/4(26)在C语言中,函数返回值的类型最终取决于( )A)函数定义时在函数首部所说明的函数类型B)return语句中表达式

5、值的类型C)调用函数时主函数所传递的实参类型D)函数定义时形参的类型 10/3(24)以下关于return语句的叙述中正确的是 A)一个自定义函数中必须有一条return语句 B) 一个自定义函数中可以根据不同情况设置多条return语句 C)定义成viod类型的函数中可以有带返回值的return语句 D)没有return语句的自定义函数在执行结束时不能返回到调用处 08/9 25)以下叙述中错误的是 ( ) A)用户定义的函数中可以没有return 语句 B) 用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值 C) 用户定义的函数中若没有return语句,则应当定义

6、函数为void类型 D)函数的return语句中可以没有表达式,例,四、函数的调用 调用形式: 函数名(实参表),函数语句:函数调用可单独成为一个语句 例 output(); printf(“Hello,World!n”); 函数表达式: 调用函数后的返回值可参加表达式的计算,这时要求被调函数带返回值。 例 sum=add(a,b); c=fac(n)/(fac(k)*fac(n-k) ; 函数参数:带返回值的函数调用亦可作为其它函数的参数(实际参数) 例 printf(“%d”,max(a,b); m=max(a,max(b,c);,函数调用方面题目,04/9 37.在函数调用过程中,如果函

7、数funA调用了函数 funB,函数funB又调用了函数funA,则()。A)称为函数的直接递归调用 B)称为函数的间接递归调用C)称为函数的循环调用 D)C语言中不允许这样的递归调用,03/9(26)若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。A)函数调用可以作为独立的语句存在 B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中 D)函数调用可以作为一个函数的形参 03/9 (27)有以下函数定义:void fun(int n, double x) 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是()。A)fun(int y,doubl

8、e m); B)k=fun(10,12.5);C)fun(x,n); D)void fun(n,x);,调用函数的过程是:(了解) 为函数的所有形参分配内存单元。 计算各个实参表达式的值,一一对应的赋值给相应形参(若是无参函数,上述过程不执行)。 进入函数体,执行函数中的语句,实现函数的功能。 执行到return语句时,计算return语句中表达式的值(若是无返回值函数,本项不做),返回到主调函数。 释放形参及本函数内的局部变量所占内存, 继续执行主调函数中的后继语句。 说明: 实参与形参个数相等,类型一致,按顺序一一对应 形参与实参的结合顺序,因系统而定(Turbo C 自右向左),main

9、() int i=2,p; p=f(i,+i); printf(%d,p); int f(int a, int b) int c; if(ab) c=1; else if(a=b) c=0; else c=-1; return(c); ,例 参数求值顺序,main() int i=2,p; p=f(i, i+); printf(%d,p); int f(int a, int b) int c; if(ab) c=1; else if(a=b) c=0; else c=-1; return(c); ,运行结果:0,运行结果:1,五、函数说明 对被调用函数要求: 必须是已存在的函数 库函数: #i

10、nclude 用户自定义函数: 函数类型说明 函数说明 一般形式: 函数类型 函数名(形参类型 形参名,. ); 或 函数类型 函数名(); 作用:告诉编译系统函数类型、参数个数及类型,以便检验; 函数定义与函数说明不同; 函数说明位置:程序的数据说明部分(函数内或外); 下列情况下,可不作函数说明 若函数返值是char或int型,系统自动按int型处理; 被调用函数定义出现在主调函数之前; 有些系统(如Borland C+)要求函数说明指出函数返值类型和形参类型,并且对void 和 int 型函数也要进行函数说明,对于函数的位置: 对于非int函数,调用单位的位置要在被调用单位在下面,否则编

11、译产生错误。 解决方法是:在调用单位加上被调用函数的声(说)明。,04/4(26) 若程序中定义了以下函数 double myadd(double a,double B) return (a+B) ;并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是()。A) double myadd(double a,B) ; B) doublemyadd(double,double);C) double myadd(double b,double A) ; D) double myadd(double x,double y);,例,六、函数参数及其传递方式 形参与实参 形式参

12、数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式,例 比较两个数并输出大者,main() int a,b,c; scanf(%d,%d, ,说明: 实参必须有确定的值 形参必须指定类型 形参与实参类型一致,个数相同 若形参与实参类型不一致,自动按形参类型转换函数调用转换 形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放,例,有如下程序(03/4 27) )int f1(int x,int y) return xy?x:y ; int f2(int x,int y) return xy? y:x ; main( ) int a=4,b=

13、3,c=5,d,e,f; d=f1(a,b);d=f1(d,c); e=f2(a,b);e=f2(e,c); f=a+b+c-d-e; printf(%d,%d,%dn,d,e,f);执行后输出结果是()。A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 3,5,4,08/9 22)下面的函数调用语句中func函数的是实 参个数是 ( ) func( f2(v1,v2), (v3,v4,v5),(v6,max(v7,v8); A)3 B)4 C) 5 D)8,参数传递方式 值传递方式 方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留

14、并维持原值 特点: 形参与实参占用不同的内存单元 单向传递,例 交换两个数,main() int a=3,b=5; printf(“a=%d,tb=%dn,a,b); printf(swapped:n); swap(a,b); printf(“a=%d,tb=%dn,a,b); swap(int x,int y) int temp; temp=x; x=y; y=temp; ,如何实现“地址传递”? 只能是:函数调用时,将数据的存储地址作为参数传递给形参,当然此时的形参只能是能存储地址的变量(指针变量)。才能达到“双向”传送的目的。,swap(p1,p2) int *p1,*p2; int p

15、; p=*p1; *p1=*p2; *p2=p; main() int a,b; scanf(%d,%d, ,例 交换两个数,05/9(14)以下关于函数的叙述中正确的是()。 A)每个函数都可以被其它函数调用(包括main函数) B)每个函数都可以被单独编译 C)每个函数都可以单独运行 D)在一个函数内部可以定义另一个函数02/9 (29) 有以下程序float fun(int x,int y) return(x+y); main() int a=2,b=5,c=8;printf(“%3.0fn”,fun(int)fun(a+c,b),a-c);程序运行后的输出结果是()。A) 编译出错 B

16、) 9 C) 21 D) 9.0,例,第八章 数 组,构造数据类型之一 数组:有序数据的集合,用数组名标识 元素:属同一数据类型,用数组名和下标确定 8.1 一维数组 一维数组的定义 定义方式: 数据类型 数组名常量表达式;,合法标识符,表示元素个数 下标从0开始, :数组运算符 单目运算符 优先级(1) 左结合 不能用( ),例 int a6;,编译时分配连续内存 内存字节数=数组维数* sizeof(元素数据类型),数组名表示内存首地址, 是地址常量,一维数组的引用 数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用整个数组 数组元素表示形式: 数组名下标 其中:下标可以是常量或整型表达式,例 int i=15; int datai; (不能用变量定义数组维数),例

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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