c语言第五讲函数_第1页
c语言第五讲函数_第2页
c语言第五讲函数_第3页
c语言第五讲函数_第4页
c语言第五讲函数_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

函数 引例 例5 1 输入圆柱的高和半径 求圆柱体积 volume 3 1415926 r r h 要求定义和调用函数cylinder r h 计算圆柱体的体积 计算圆柱体积 includeintmain void doubleheight radius volume doublecylinder doubler doubleh 函数声明 printf Enterradiusandheight 输入提示 scanf lf lf 返回结果 函数的定义 函数是指完成一个特定工作的独立程序模块 库函数 由C语言系统提供定义如scanf printf 等函数自定义函数 需要用户自己定义如计算圆柱体体积函数cylinder main 也是一个函数 C程序由一个main 或多个函数构成 程序中一旦调用了某个函数 该函数就会完成一些特定的工作 然后返回到调用它的地方 函数经过运算 得到一个明确的运算结果 并需要回送该结果 例如 函数cylinder 返回圆柱的体积 函数完成一系列操作步骤 不需要回送任何运算结果 1 返回运算结果的函数定义 函数类型函数名 形参表 函数首部 函数体 函数实现过程return表达式 把函数运算的结果回送给主函数 只能返回一个值 函数返回值的类型 doublecylinder doubler doubleh doubleresult result 3 1415926 r r h returnresult 形参 类型1参数1 类型2参数2 类型n参数n参数之间用逗号分隔 每个参数前面的类型都必须分别写明 函数类型函数名 形参表 函数实现过程return表达式 不能写成doubler h doublecylinder doubler doubleh doubleresult result 3 1415926 r r h returnresult 分析函数的定义 doublecylinder doubler doubleh 函数首部 函数体 写在一对大括号内 doubleresult result 3 1415926 r r h 计算圆柱体积 returnresult 返回运算结果 函数类型 函数名 形参表 与函数类型一致 2 不返回运算结果的函数定义 void函数名 参数表 函数首部 函数体 函数实现过程return 可以省略return 这类函数通常用于屏幕输出等 表示不返回结果 不能省略否则函数类型被默认定义为int 例5 2 输出5之内的数字金字塔 输出数字金字塔 includeintmain void voidpyramid intn 函数声明 pyramid 5 调用函数 输出数字金字塔 return0 voidpyramid intn 函数定义 inti j for i 1 i n i 需要输出的行数 for j 1 j n i j 输出每行左边的空格 printf for j 1 j i j 输出每行的数字 printf d i putchar n 122333444455555 函数的调用 定义一个函数后 就可以在程序中调用这个函数 调用标准库函数时 在程序的最前面用 include命令包含相应的头文件 调用自定义函数时 程序中必须有与调用函数相对应的函数定义 1 函数调用的形式和过程 使用返回值 volume cylinder radius height printf f n cylinder radius height 完成操作 pyramid 5 常用于void类型函数的调用 常用于返回结果的函数的调用 常量 变量 表达式 函数名 实参表 函数调用的过程 计算机在执行程序时 从主函数main开始执行 如果遇到某个函数调用 主函数被暂停执行 转而执行相应的函数 该函数执行完后 将返回主函数 然后再从原先暂停的位置继续执行 函数遇return或最后的大括号 返回主函数 分析函数调用的过程 includeintmain void doubleheight radius volume doublecylinder doubler doubleh printf Enterradiusandheight scanf lf lf 调用函数 实参 形参 执行函数中的语句 返回调用它的地方 2 参数传递 函数定义时的参数被称为形式参数 简称形参 doublecylinder doubler doubleh 函数调用时的参数被称为实际参数 简称实参 volume cylinder radius height 实参 形参在参数传递过程中 实参把值复制给形参 形参和实参一一对应 数量一致 类型一致 顺序一致形参 变量 用于接受实参传递过来的值实参 常量 变量或表达式 单向传递 3 函数结果返回 函数返回的两种情况完成确定的运算 有一个运算结果返回给主调函数 完成指定工作 没有确定的运算结果需返回给主调函数 函数类型void 函数结果返回的形式 return表达式 return 表达式 例5 3 定义一个判断奇偶数的函数even n 当n为偶数时返回1 否则返回0 判断奇偶数的函数 inteven intn 函数首部 if n 2 0 判别奇偶数 return1 偶数返回1 elsereturn0 奇数返回0 4 函数原型声明 函数类型函数名 参数表 doublecylinder doubler doubleh voidpyramid intn 函数必须先定义后调用 将主调函数放在被调函数的后面 就像变量先定义后使用一样 如果自定义函数在主调函数的后面 就需要在函数调用前 加上函数原型声明 函数声明 说明函数的类型和参数的情况 以保证程序编译时能判断对该函数的调用是否正确 例5 4 输入精度e 使用格里高利公式求 的近似值 精确到最后一项的绝对值小于e 要求定义和调用函数funpi e 求 的近似值 用格里高利公式计算 的近似值 精度为e include includeintmain void doublee pi e代表精度 doublefunpi doublee 函数声明 printf Entere 提示用户输入精度 scanf lf 例5 5 求100以内的全部素数 每行输出10个 素数就是只能被1和自身整除的正整数 1不是素数 2是素数 要求定义和调用函数prime m 判断m是否为素数 当m为素数时返回1 否则返回0 使用函数求100以内的全部素数 include include 调用求平方根函数 需要包含数学库 intmain void intcount m intprime intm 函数声明 count 0 count记录素数的个数 用于控制输出格式 for m 2 m 100 m if prime m 调用prime m 判断m是否为素数 printf 6d m 输出m count 累加已经输出的素数个数 if count 10 0 printf n 如果count是10的倍数 换行 printf n 定义判断素数的函数 如果x是素数则返回1 真 否则返回0 假 intprime intm inti n if m 1 return0 1不是素数 返回0 n sqrt m for i 2 i n i if m i 0 如果m不是素数 return0 返回0 return1 m是素数 返回1 变量与函数 局部变量和全局变量 局部变量在函数内定义的变量 包括形参 作用范围 本函数内部定义在复合语句内的变量作用范围 复合语句内部全局变量在函数以外定义的变量 不从属于任一函数 作用范围 从定义处到源文件结束 包括各函数 例5 6在复合语句中定义局部变量 includeintmain void inta a 1 复合语句开始 intb 2 b a b a a b 复合语句结束 printf d a return0 b 小范围内的临时变量 4 例5 7全局变量定义 include stdio h intx 定义全局变量x intf intx 4 x为局部变量 returnx intmain void inta 1 x a 对全局变量x赋值 a f a的值为4 intb 2 b a b b的值为4 x x b 全局变量运算 printf d d a x return0 4 7 若局部变量与全局变量同名 局部变量优先 变量作用范围示例 intx 1 voidmain inta 2 intb 3 f intt 4 voidf intx 5 b 6 inta 7 x a b b x 5b 6t 4a没定义 x b t a 变量与函数 变量生命周期和静态局部变量 自动变量 auto 普通的局部变量intx y autointx y charc1 autocharc1 函数调用时 定义变量 分配存储单元 函数调用结束 收回存储单元 全局变量 从程序执行开始 到程序的结束 存储单元始终保持 变量生命周期变量从定义开始分配存储单元 到运行结束存储单元被回收的整个过程 存储区 存储类型 动态存储 自动变量静态存储 全局变量 静态局部

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论