- 1、本文档共49页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计基础(二) 高级语言程序设计(一)(C Programming) 第二讲:C程序设计基础(二) 本章目标 掌握函数的定义及调用方式 掌握函数参数传递方式 掌握一维数组的定义和使用 掌握简单的文件输入/输出 模块化程序设计 将复杂问题分解为简单问题的程序设计方法称为结构化程序设计,其特点为: 自顶向下(top-down design); 逐步细化(stepwise refinement); 模块化(modular programming); 模块化的好处: 功能分解的需要; 代码重用; 标准(库)函数 标准I/O库函数 #include stdio.h ( scanf,printf, getchar, putchar…) 标准数学函数 #include math.h (sin, cos, sqrt…) … 问题2.1 问题: 已知一组三角形的三边(如(2.0, 2.0, 2.0)、(3.0,4.0,5.0)、(2.5, 3.1, 3.8)),计算其面积。计算三角形面积的公式为: 定义求三角形面积函数 tri_area函数定义 ?double tri_area(double a, double b, double c) { double s,area; ?s = (a + b + c) / 2.0; area = sqrt(s*(s-a)*(s-b)*(s-c)); return (area); } 函数定义与调用 在ANSI C标准中,函数定义形式为: 类型 函数名(参数说明) { [局部变量定义或说明] 语句 } 函数定义与调用(续) 函数名一般是标识符,一个程序只有一个main函数,其它函数名可随意取,当然最好是有助于记忆的名字,如getchar函数。 在ANSI C标准中,函数(返回值)类型不允许省略,即使是返回整型值(int),当函数无返回值时,应其类型说明为void类型。 局部变量定义或说明可有可无。 注意:在C语言中,函数定义不允许嵌套,即在一个函数体内不能包含有其它函数的定义。 问题2.1:代码实现 ? double tri_area(double a, double b, double c) { double s,area; ?s = (a + b + c) / 2.0; area = sqrt(s*(s-a)*(s-b)*(s-c)); return (area); } 函数定义与调用(续) 函数调用形式:函数名([实参表]) 其中实参个数、类型、排列次序应和形参定义时一致。(老版本的C编译器往往不做这方面的检查) 函数通过return语句将值返回给调用函数。它有两种使用形式: 1)return expr; (函数有返回值) 2)return; (函数无返回值,对应函数类型为void) 注意:使用return语句只能返回一个值。 函数(返回值)类型说明 即函数定义时,函数返回值类型的说明,在ANSI C标准中,函数类型必须显式说明,当函数无返回值时(即“过程”),则函数类型可说明成void。 在C语言中,函数返回值的类型可以是基本类型或指向其它类型的指针(也可返回结构或联合类型)。 函数原型说明(prototype) 在ANSI C标准中,所有函数必须要有原型说明,用以说明函数的返回值类型、函数参数类型、个数及次序。函数原型说明有两种形式: 直接使用函数的头部。如, double tri_area(double a, double b, double c); 在原型说明中仅给出类型、个数及次序,无形参变量名。如, double tri_area(double , double, double ); 函数原型类似于后面将介绍的外部变量说明,在调用任何函数之前必须确保其已有函数原型说明。 注意:函数原型说明的类型、参数类型、个数及次序必须与函数定义时一致,否则会产生错误。 函数参数 调用函数时,实参的类型、排列次序和个数应与函数定义时形参相对应(在ANSI C标准中,若不一致,将出现编译错误)。 C函数的参数传递全部采用传值。传值调用实际上重新拷贝了一个副本给形参,因此,我们可以把函数形参看作是局部变量。传值的好处是传值调用不会改变调用函数实参变量的内容,因此,可避免不必要的副作用。 函数参数(续) 如何理解“传值”调用?让我们来看一个试图交换两个数据值的例子。 void swap ( int x, int y) { int temp; ?temp = x; x = y; y = temp; } ?main( ) { int a = 2, b = 3; printf(“a=%d, b=%d\n”, a, b); swap
文档评论(0)