《函数与指针》ppt课件_第1页
《函数与指针》ppt课件_第2页
《函数与指针》ppt课件_第3页
《函数与指针》ppt课件_第4页
《函数与指针》ppt课件_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、第一季:C语言程序设计与构造化编程本章内容掌握函数概念及函数应用会应用C语言的内置函数纯熟使用C语言中的自定义函数理解函数参数及参数的传递方式理解指针的概念 根本掌握指针的用法理解指针和数组的关系根本掌握指针作为函数参数的用法 为什么要使用函数/主函数void main void main int m_num, m_result;int m_num, m_result;printfprintf 请输入您要求阶乘的数: ; ;scanfscanf%d, &m_num%d, &m_num; ;m_result = qiuJieChengm_result = qiuJieChengm

2、_numm_num; ;printfprintf%d%d的阶乘为:%dn, m_num, %dn, m_num, m_resultm_result; ; /求num的阶乘函数int qiuJieCheng int numint i = 1, result = 1;whilei = numresult = result * i;i = i + 1;return result;函数机制的优点使程序变得更简短而明晰 有利于程序维护可以进步程序开发的效率 进步了代码的重用性 C语言中的函数类型 内置函数:由语言系统提供;用户无须定义,也不必在程序中作类型说明;只需在程序前包含有该函数定义的头文件; 自

3、定义函数:用户在程序中根据需要而编写的函数;常用内置函数内置函数头文件用处double sqrtdouble xmath.h计算x的平方根double powdouble x, double y计算x的y次幂double ceildouble x求不小于x的最小整数,并以double形式显示double floordouble x求不大于x的最大整数,并以double形式显示int toupperint xctype.h假如x为小写字母,那么返回对应的大写字母int tolowerint x假如x为大写字母,那么返回对应的小写字母int randstdlib.h产生一个随机数void exit

4、int retval终止程序问题描绘:求自然数110的平方根和立方。 内置函数sqrt 和pow 例如2664#include #include void main int x=1; double squareroot,power; whilex = 10 squareroot=sqrtx;power=powx,3;printf %d的平方根:%3.2ft%d的立方:%5.0f n, x,squareroot,x,power;x+; 1的平方根: 1.00 1的立方: 1 2的平方根: 1.41 2的立方: 8 3的平方根: 1.73 3的立方: 27 4的平方根: 2.00 4的立方: 64

5、 5的平方根: 2.24 5的立方: 125 6的平方根: 2.45 6的立方: 216 7的平方根: 2.65 7的立方: 343 8的平方根: 2.83 8的立方: 512 9的平方根: 3.00 9的立方: 72910的平方根: 3.16 10的立方: 1000Press any key to continue内置函数ceil和floor例如2664#include #include void main printf=floor=; printfn floor99.1 = %f n,floor99.1; printf floor-99.1 = %fn,floor-99.1; printf

6、 floor99.9 = %fn,floor99.9; printf floor-99.9 = %fn,floor-99.9; printfn=ceil=; printfn ceil99.1 = %fn,ceil99.1; printf ceil-99.1 = %fn,ceil-99.1; printf ceil99.9 = %fn,ceil99.9; printf ceil-99.9 = %fn,ceil-99.9; =floor= floor99.1 = 99.000000 floor-99.1 = -100.000000 floor99.9 = 99.000000 floor-99.9

7、= -100.000000=ceil= ceil99.1 = 100.000000 ceil-99.1 = -99.000000 ceil99.9 = 100.000000 ceil-99.9 = -99.000000Press any key to continuetoupper和tolower例如2664#include#includevoid main char msg1,msg2,to_upper,to_lower;printf请输入一个小写字母:;msg1=getchar;to_upper=touppermsg1;printf转换为大写:%cn,to_upper;printf请输入一

8、个大写字母:;fflushstdin;msg2=getchar;to_lower=tolowermsg2;printf转换为小写:%cn,to_lower; 请输入一个小写字母:d转换为大写:D请输入一个大写字母:E转换为小写:ePress any key to continue内置函数rand例如2664#include #include /#includevoid main int i; printf产生 10 个 0 到 99 之间的随机数序列:nn; /srandunsignedtimeNULL; fori=0; iy?x:y; return m;该函数名为displayDiscoun

9、t,无参数,使用void说明无返回值,函数体内的语句用于根据产品的价格求折扣后的价格。该函数名为max,它有两个double类型的参数,返回值为double类型。在函数体内有三条语句实现了求两个数中较大的数,并将它返回。函数原型说明#include float count int, int;void main . . . . . .float countint x,int y . . .函数原型说明在形式上与函数头部类似,最后加一个分号。原型说明中参数表里的参数名可以不写只写参数类型函数调用形式 通过在程序中使用函数名称,可以执行函数中包含的语句,这称为调用函数 函数之间允许互相调用,也允许嵌

10、套调用 函数还可以自己调用自己,称为递归调用函数调用#includevoid main:set_discount;displayDiscount;:float set_discount : :float displayDiscount : :void reverse : :#includevoid main:palindrome;:void palindrome : reverse; :函数嵌套调用 从一个函数调用另一个函数称为函数的嵌套调用 /* 此函数用于计算 a 的阶乘 */int factorialint a if a = 1 return 1; else a = a * factor

11、iala-1; return a; 函数递归调用 在一个函数体内调用自身称为函数的递归调用 函数调用例如#include#includevoid AreaOfRectvoid AreaOfRect; ;void AreaOfTrianglevoid AreaOfTriangle; ;void AreaOfRoundvoid AreaOfRound; ;void mainvoid main int select;int select;printfprintf 0 0、退出n 1n 1、长方形n 2n 2、三角形n 3n 3、圆形nn; ;printfprintf 请选择功能: ; ;scanfs

12、canf%d,&select%d,&select; ;ififselect = 0select = 0 return; return;switchswitchselectselect case 1 : case 1 : AreaOfRectAreaOfRect; ; break; / break; /长方形 case 2 : case 2 : AreaOfTriangleAreaOfTriangle; ; break; / break; /三角形 case 3 : case 3 : AreaOfRoundAreaOfRound; ; break; / break; /圆形 de

13、fault : printfdefault : printf 输入有误,请在 0 04 4 之间选择。nn; ; void AreaOfRectvoid AreaOfRect int x,y; int x,y; printf printf 请输入长方形的长:; ; scanf scanf%d,&x%d,&x; ; printf printf 请输入长方形的宽:; ; scanf scanf%d,&y%d,&y; ; printf printf 面积为:%dn,%dn,x x * * y y; ; void AreaOfTrianglevoid AreaOfTri

14、angle int x,y; int x,y; printf printf 请输入三角形的底:; ; scanf scanf%d,&x%d,&x; ; printf printf 请输入三角形的高:; ; scanf scanf%d,&y%d,&y; ; printf printf 面积为:%dn,%dn,x x * * y y/2/2; ; void AreaOfRoundvoid AreaOfRound int r; int r; printf printf 请输入圆形的半径:; ; scanf scanf%d,&r%d,&r; ; prin

15、tf printf 面积为:%dn,3.14%dn,3.14* *r r* *r r; ; printf%5dn, a;printf%5dn, b;printf%5dn, c;函数的参数 函数有时要求用户传入数据,这些数据是函数的参数 函数的参数分为形式参数和实际参数,函数定义中声明的参数为形式参数,函数调用时传入的参数为实际参数函数形参和实参void main . . . . . . display 10, 20.5 ;display int num, float fraction . . . . . . 实际参数函数调用形式参数函数调用时传参的方式 值传递将实参拷贝一份赋值给形参 址传递让

16、形参和实参共享一片内存空间,即内存地址一样函数的返回值 函数可以有返回值也可以没有返回值 当函数有返回值的时候其返回值的类型在函数定义时指定,在函数体内部由return语句进展返回操作 当函数没有返回值时,用void关键字标识变量的作用域什么是作用域 海洋动物 陆地动物 两栖动物变量的作用域 变量的有效范围 变量的作用域决定了变量在某个程序块中的可访问性什么是指针指针就是内存地址162000a20005000 p_a两个关键的运算符 取地址符int i = 10;&i; 以上代码片段会得到变量i的地址指针 指针运算符间接运算符int *p_i;p_i = &i;*p_i; 以上

17、代码将变量i的地址存放在指针变量p_i中,即让指针变p_i指向变量i。最后一句使用了指针运算符,*p_i其实就是变量i指针变量和变量的指针用来存放地址的变量称为指针变量变量的指针就是变量的地址指针变量的定义与引用int i = 10;int *p_i;p_i = &i;*p_i = 20;指针的赋值运算指针变量之间可以进展赋值运算,指针变量的赋值结果为让两个指针变量指向同一片内存空间指针的算术运算指针变量也可以像一般的变量一样进展+运算或加上一个整数的运算,但是指针的算术运算和普通算术运算的含义不同,指针的运算是让指针变量的值加上一个T类型变量所占用的内存大小的值,即使指针挪动了一个T型变量的位置,指针的算术运算常用来操作数组元素指针的关系运算指针的关系运算一般只做“=的运算,判断两个指针是否指向同一片内存空间指针变量作为函数参数函数的参数不仅可以是整型,实型等数据类型,指针类型也能作为函数的参数指针变量作为函数参数,调用时是将实参的地址

温馨提示

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

评论

0/150

提交评论