C语言程序设计课件:第3章-函数1.ppt

上传人(卖家):罗嗣辉 文档编号:2048329 上传时间:2022-01-22 格式:PPT 页数:34 大小:2.36MB
下载 相关 举报
C语言程序设计课件:第3章-函数1.ppt_第1页
第1页 / 共34页
C语言程序设计课件:第3章-函数1.ppt_第2页
第2页 / 共34页
C语言程序设计课件:第3章-函数1.ppt_第3页
第3页 / 共34页
C语言程序设计课件:第3章-函数1.ppt_第4页
第4页 / 共34页
C语言程序设计课件:第3章-函数1.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、Page 1第第3 3章章 函数和编译预处理函数和编译预处理Page 2函数概念的引入函数概念的引入/输入两个实数,求出其中的最大值输入两个实数,求出其中的最大值include include void main( )void main( ) float a,b,c;float a,b,c;printf(printf(请输入两个实数:请输入两个实数:); ); scanf(%f%f,&a,&b);scanf(%f%f,&a,&b);if (ab)if (ab)c = a;c = a;else else c = b;c = b;printf(printf(两个数中的大数为:两个数中的大数为:%f

2、 n,c);%f n,c); c即为即为a,b两数中的大数两数中的大数Page 3例例 求两数中的最大值求两数中的最大值void main( )void main( ) float max(float,float); float max(float,float); float a,b; float a,b; float c; float c; scanf(%f%f,&a,&b); scanf(%f%f,&a,&b); c= c=max(a,b)max(a,b); ; printf(max is %f,c); printf(max is %f,c); float max(float x,floa

3、t y) float max(float x,float y) float z; float z; if (xy) if (xy) z = x; z = x; else else z = y; z = y; return z;return z; Page 4模块化程序设计过程模块化程序设计过程main( )func1( )func2( )func3( )func4( )func5( ) 问题问题独立模块(函数)独立模块(函数)问题分块问题分块全局分析全局分析逐步细分逐步细分将一个大的程序按功能分将一个大的程序按功能分割成一些小模块割成一些小模块, ,各模块各模块相对独立。相对独立。可降低程序设

4、计的复杂性可降低程序设计的复杂性、提高元件的可靠性、避、提高元件的可靠性、避免程序开发的重复劳动、免程序开发的重复劳动、易于程序维护和功能扩充易于程序维护和功能扩充返回值返回值类型类型函数名,一般说明函数名,一般说明函数的功能函数的功能返回值作为函数返回值作为函数调用表达式的值调用表达式的值形参表,形参表,函数入口函数入口函数内部可以定义函数内部可以定义只能自己使用的变只能自己使用的变量,称内部变量量,称内部变量函数没有运算结果,函数没有运算结果,无返回值,用无返回值,用void定义返回值类型定义返回值类型用用void定义参数定义参数,表示没有参数,表示没有参数return语句后不语句后不需要

5、任何表达式需要任何表达式int Average(int x, int y) int result; result = (x + y) / 2; return result;void main() int a = 12; int b = 24; int ave; ave = Average(a, b); printf();x,y 在内存中创在内存中创建,且其值分别建,且其值分别为为a,b的值的值返回函数运算结果返回函数运算结果释放释放x,y,z变量空间变量空间控制权交还给控制权交还给mainvoid main() int a=12, b=24,ave; ave = Average(a,b); y

6、? xresult? b24 aave?1224void main() int a=12, b=24,ave; ave = Average(a,b); y? xresult? b24 aave?122418void main() int a=12, b=24,ave; ave = Average(a,b); y24 xresult18 b24 aave? 18程序运行到这里,还没有定义程序运行到这里,还没有定义Average函数,因此会出现编译错误函数,因此会出现编译错误解决方法解决方法1:函数定义放:函数定义放在函数调用之前在函数调用之前解决方法解决方法2:函数的原型说明:函数的原型说明函数

7、声明(函数函数声明(函数原型),声明时原型),声明时不要省略形参和不要省略形参和返回值的类型返回值的类型函数调用函数调用#include void main() float a,b,c,max3;printf(输入三个数输入三个数a,b,c:);scanf(%f%f%f,&a,&b,&c);if(ab)max3=a;elsemax3=b; if(max3c)max3=c; printf(max3=%fn,max3);【例例2-92-9】从键盘任意输入三个数,输出三个数中最大的数从键盘任意输入三个数,输出三个数中最大的数 输入三个数输入三个数a,b,c:a,b,c:3 4 53 4 5max3=

8、5.000000 max3=5.000000 将求三个数的将求三个数的最大值的功能最大值的功能用函数实现用函数实现#include void main() float a,b,c,max3;printf(输入三个数输入三个数a,b,c:);scanf(%f%f%f,&a,&b,&c);max3 = Max(a,b,c);printf(max3=%fn,max3); 从键盘任意输入三个数,输出三个数中最大的数从键盘任意输入三个数,输出三个数中最大的数 #include float Max(float x,float y,float z);void main() float a,b,c,max3;

9、printf(输入三个数输入三个数a,b,c:);scanf(%f%f%f,&a,&b,&c);max3 = Max(a,b,c);printf(max3=%fn,max3); 从键盘任意输入三个数,输出三个数中最大的数从键盘任意输入三个数,输出三个数中最大的数 第第3 3章章 程序控制结构程序控制结构#include #include void main()void main() int i,int i,sum=0sum=0; ;forfor (i=1;i=100;i+) (i=1;i=100;i+)sum = sum+i;sum = sum+i;printf(sum=%d,i=%dn,su

10、m,i);printf(sum=%d,i=%dn,sum,i); sum=5050,i=101sum=5050,i=101【例例】 用用for循环求循环求s=1+2+3100 实现函数,输入实现函数,输入n,求解求解1到到n的所有正的所有正整数的和。整数的和。并在并在main函数中调函数中调用,求前用,求前50与前与前100个数字的和个数字的和第第3 3章章 程序控制结构程序控制结构#include #include int SUM(int i)int SUM(int i) int s=0; int s=0; for (i=1;i=100;i+) for (i=1;i=100;i+) s =

11、s+i; s = s+i; return s; return s; void main()void main() printf(“%dn, printf(“%dn,SUM(50)SUM(50);); printf(“%dn, printf(“%dn,SUM(100)SUM(100);); 实现函数,输入实现函数,输入n,求解求解1到到n的所有正的所有正整数的和。整数的和。并在并在main函数中调函数中调用,求前用,求前50与前与前100个数字的和个数字的和课堂练习课堂练习 试编制计算试编制计算mn的函数,然后调用它来计算的函数,然后调用它来计算210的程序。的程序。#include void

12、main ( ) int power(int,int); int x,y,z ; x=2; y=10; z=power(x,y); printf(“%d”,z); int power(int m,int n) int i, k=1; for(i=1;i=n;i+) k*= m ; return( k ) ; 函数的原型说明函数的原型说明函数的值调用函数的值调用返回计算结果给主函数返回计算结果给主函数Page 25函数的值调用函数的值调用例例 利用值调用交换两个变量的值利用值调用交换两个变量的值void swap(int a,int b) int temp; temp=a; a=b; b=tem

13、p; printf(=in swap=n“); printf(“a=%d b=%d n“,a,b);void main(void) int x=7,y=11; printf(=original=n“) ; printf(“x=%d y=%d n“,x,y); swap(x,y); printf(=in main=n“); printf(“x=%d y=%d n“,x,y);711x:y:调用前:调用前:调用结束:调用结束:711x:y:调用:调用:711a:b:711x:y:swap:711x:y:117a:b:temp:练习练习 设计一个程序,输出所有的水仙花数。所谓水仙花设计一个程序,输出

14、所有的水仙花数。所谓水仙花数是一个三位数,其各位数字的立方和等于该数本身。数是一个三位数,其各位数字的立方和等于该数本身。如如: 153 = 13 + 53 +33#include #include void main()int i,a,b,c;for(i=100;in) min = n; for(int i=min;i=1;i-) if ( (m%i=0) & (n%i=0) )break; return i;void main() int m,n; scanf(%d%d,&m,&n); printf(%d,gcd(m,n);Page 29编译预处理编译预处理 先对先对源程序源程序在在编译之

15、前做一些处理编译之前做一些处理;再将预处理;再将预处理的结果和源程序一起进行通常的编译处理,得到的结果和源程序一起进行通常的编译处理,得到目标代码。目标代码。 种类种类- 包含文件包含文件 #include#include- 宏定义宏定义 #define#define- 条件编译条件编译 #if #else #endif#if #else #endif 格式:格式:- “# #” 开头开头- 单行书写单行书写- 语句尾不加分号,以回车符结束语句尾不加分号,以回车符结束Page 30 “包含文件包含文件”处理处理 功能:一个源文件可将另一个源文件的内容全部功能:一个源文件可将另一个源文件的内容全

16、部包含进来包含进来- #include #include 或或 #include #include “文件名文件名”- 处理过程:预编译时处理过程:预编译时, ,用被包含文件的内容取代该用被包含文件的内容取代该预处理命令,再对预处理命令,再对“包含包含”后的文件作为一个源后的文件作为一个源文件编译文件编译#include “file1.h”file2.cppAfile1.hBBA临时文件临时文件Page 31 “包含文件包含文件”处理处理/ file2.cpp 文件文件# include # include file1.hvoid main( ) printf(%d%d,x,y); print

17、f(%f %f ,x1,x2);/ file1.h 文件文件int x = 200,y=100;float x1 = 25.6,x2 = 28.9;包含的通常为包含的通常为“.h”头文件头文件一个一个include指令只能指定指令只能指定一个被包含文件一个被包含文件直接直接在系统在系统标准目录标准目录中中搜索搜索“ ” 先在当前先在当前用户用户目录搜索,目录搜索,再搜索标准目录再搜索标准目录的的指定路径指定路径Page 329.2 不带参数的宏定义不带参数的宏定义 格式:格式: #define #define 标识符标识符 字符或字符串字符或字符串/ 8.17# include # defin

18、e PI 3.1415926# define R 2.8# define AREA PI*R*R# define PRONMPT 面积为:面积为:# define CHAR !void main(void)printf(%s%f%cn,PRONMPT,AREA,CHAR);预编译处理时,将程序中的预编译处理时,将程序中的PI均均替代为替代为3.1415926,将,将PRONMPT均替代为均替代为面积为:面积为:“面积为面积为: ”3.14159262.82.8!;宏命通常为大写,以区别变量宏命通常为大写,以区别变量在宏定义中可以使用已定义的宏名在宏定义中可以使用已定义的宏名Page 339.2

19、 带参数的宏定义带参数的宏定义 #define #define 宏名宏名( (参数表)使用参数的参数表)使用参数的字符或字符串字符或字符串# include # define VOLUMN(a,b,c) a*b*c# define V1(a,b) a*b# define V2(a,b) (a)*(b)# define V3 (a,b) (a)*(b)void main(void) b = VOLUMN(1,2,3) ; c = V1(1+2,2+1); d = V2(1+2,2+1); e = V3(1+2,2+1);在宏调用预编译处理时,依次用在宏调用预编译处理时,依次用实参替代宏定义中的形参,并将实参替代宏定义中的形参,并将替代后的字符串替代宏调用替代后的字符串替代宏调用在宏定义中要用括号把形在宏定义中要用括号把形参扩起来,以减少错误参扩起来,以减少错误b=6c=6d=9宏定义时,宏名与左括号之间不宏定义时,宏名与左括号之间不能有空格。如果有空格,则将空能有空格。如果有空格,则将空格后的全部字符都作为无参宏所格后的全部字符都作为无参宏所定义的字符序列,而不作为形参定义的字符序列,而不作为形参2022-1-2234

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(C语言程序设计课件:第3章-函数1.ppt)为本站会员(罗嗣辉)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|