《C语言程序设计教程》课件

上传人:494895****12427 文档编号:252415084 上传时间:2024-11-15 格式:PPT 页数:31 大小:671.21KB
返回 下载 相关 举报
《C语言程序设计教程》课件_第1页
第1页 / 共31页
《C语言程序设计教程》课件_第2页
第2页 / 共31页
《C语言程序设计教程》课件_第3页
第3页 / 共31页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,C,语言程序设计教程,Huanghuai University Department of Computer Science,主讲:傅 丰,黄淮学院计算机科学系,高等教育出版社,谭浩强 张基温等编著,C语言程序设计教程Huanghuai Universit,1,第四章,模块化程序设计,1,函数,4.1.1 C,程序结构,4.1.2,函数,定义,与函数,声明,4.1.3,函数的(传值),调用,4.1.4,函数的,嵌套,调用,4.1.5,函数的,递归,调用,2,变量的存储属性,3,编译预处理,2,学时,2,学时,本节,2,学时,2,学时,第四章 模块化程序设计1 函数2学时2学时本节2学时2学,2,1,函数(程序模块),一、,C,程序的结构,较大的程序一般分为若干个程序模块,。每个模块实现一个特定的功能。,常将一些常用的功能模块编写成函数,以被多个程序调用,。,main(),f1();,f2(),;,f1(),f11();,f2(),f21();,f22();,f11(),f21(),f22(),main(),f1(),f2(),f11(),f21(),f22(),P102,例,1,(略),1 函数(程序模块)一、C程序的结构 较大的程序一般分为,3,函数值类型,函数名(类型,形参,,,),函数体,二、函数定义与函数声明,1,、函数定义(自定义函数,即程序模块),1,、函数值类型:即函数体中,return,语句中表达式值的类型。无返回值时(无,return,语句),函数值类型为,void,。默认为,int,型。,2,、形式参数:形参间用逗号分隔,无参时括号不能省。编译时不为,形参,分配存储空间,调用时才临时为其分配存储空间,从调用函数的,实参,得到值,称为“,虚实结合,”。调用结束时,形参所占空间被释放。,3,、函数体:由声明部分和语句部分组成。函数体中定义的变量只在执行该函数时才存在。声明部分和语句部分都省略时,为空函数:,void f()4,、函数的返回:函数执行到最后一个操作或遇到,return,语句时,,返回,主调函数,同时,撤消,为函数体中,变量,及,形参,分配的存储空间。,5,、函数不能嵌套定义,一个函数不能定义在别的函数内部。,说,明,声明部分,语句部分,return(,表达式,);,所需的已知量,函数值类型 函数名(类型 形参,)函数体,4,P104,例,2,:找出函数定义部分,main(),double new_style(int a,double x);,double new_style(int a,double x),/*,函数体,*,/,func1(),func2(),错,P107,:,函数不能嵌套定义,P104例2:找出函数定义部分 main(),5,int,jdz,(,int x,),return(x=0?x:-x);,P105,例,3,:编写求一个整数的绝对值的函数,main(),int a,b;,scanf(“%d”,b=,jdz(,a,),;,printf(“%dn”,b);,函数定义,函数调用,形参,实参,实参,形参,执行函数体,返回调用处,int jdz(int x)P105例3:编写求一个整数的,6,P106,例,4,:编写打印,n,个空格的函数,void,spc,(,int n,),int i;,for(i=1;i=n;i+),printf(“”);,main(),int m;,scanf(“%d”,spc(,m,),;,函数定义,函数调用,形参,实参,实参,形参,执行函数体,返回调用处,P106例4:编写打印n个空格的函数void spc(in,7,P106,例,5,:编写求表达式值的函数:,y=,float,f,(,float x,)if(x0)return(x*x+x+1);else return(x*x*x+x+3);,main()float x,y;scanf(“%f”,y=,f(,x,),;,printf(“%fn”,y);,函数定义,函数调用,形参,实参,实参,形参,执行函数体,返回调用处,x,2,-x+1 x10)return(2*n+3);else return();,错,P107,例,6,:,P106例5:编写求表达式值的函数:y=float f(f,8,例:函数定义:,double func(double a,int b,float c)/*,函数体,*,/,函数声明应为:,double func(double a,int b,float c),;,或:,double func(double x,int y,float z);,1,、可不写形参名:,double func(double,int,float);2,、不能只写形参名而不写类型:,double func(x,y,z);,3,、只有函数返回值为,int,或,char,时,函数值类型才可以省略。,4,、函数定义的声明中形参的次序与类型要一致。如:,double func(int y,float z,double x);,错误,5,、当某函数要被多个函数调用时,可将函数的调用声明写在所有函数前。如:,2,、函数声明:,函数值类型,函数名(类型,形参,,);,对在本函数中要调用的函数所做的说明,函数原型(函数定义的第一行),说,明,fun1(),f(a,b);,fun2(),f(c,d);,float f(float x,float y),main(),float f(float x,float y);,例:函数定义:double func(double a,9,三、函数的,(,传值,),调用,函数名(实参,实参,,),无返回值:函数名,(,实参表,),;,有返回值:变量,=,函数名,(,实参表,),;,P109,例,7,:,main()int a=3,b=5;void swap(int x,int y);swap(,a,b,);,printf(“a=%d,b=%dn”,a,b);,void swap(,int x,int y,),int temp;,temp=x,x=y,y=temp;,printf(“x=%d,y=%dn”,x,y);,函数调用,函数定义,形参,实参,执行函数体,返回函数值,释放相应空间,函数声明,实参,形参,实参,形参,3,5,a,b,3,3,5,x,y,5,3,3,temp,x=5,y=3,a=3,b=5,程序的运行:,值传递,三、函数的(传值)调用函数名(实参,实参,)无返回值:函数,10,P110,例,8,:,实参与形参的个数类型要一致,main()float add();float x=1.5,y=-5.7;,printf(“%f+%f=%fn”,x,y,add(,x,y,);,float add(,unsigned int a,unsigned int b,),printf(“a=%u,b=%un”,a,b);,return(a+b);,函数调用,形参,实参,执行,函数,体,返回函数值,释放相应空间,函数声明,实参,形参,实参,形参,1.5,-5.7,x,y,a,b,a=0,b=0,1.500000+-5.700000=0.000000,程序的运行:,0,0,函数定义,P110例8:实参与形参的个数类型要一致main()f,11,P136,习题,9,:写出程序的输出结果,main()int i,j,x,y,n,g;i=2;j=3;g=x=5;y=9;n=7;fun(,n,6,);printf(“g=%d;i=%d;j=%d;n”,g,i,j);printf(“x=%d;y=%dn”,x,y);fun(,n,6,);,fun(,int i,int j,)int x,y,g;g=8;x=7;y=2;,printf(“g=%d;i=%d;j=%dn”,g,i,j);printf(“x=%d;y=%dn”,x,y);,形参,实参,实参,7,n,6,g=8;i=7;j=6;,x=7;y=2,g=5;i=2;j=3;,x=5;y=9,g=8;i=7;j=6;,x=7;y=2,程序的运行:,i,j,g,x,y,2,3,5,5,9,形参,i,j,7,6,g,x,y,8,7,2,形参,i,j,7,6,g,x,y,8,7,2,P136习题9:写出程序的输出结果main()int,12,main()u=f1(i,t);,函数不能嵌套定义,但可以嵌套调用,四、函数的嵌套调用,c=f2(b-1,b+1);,return(x);,main,函数,f1,函数,f2,函数,main()u=f1(i,t);函数不能嵌套,13,课堂练习,main(),int x,n,s;,s=power(x,n);,P136,习题,1,:指出程序中的错误,power(y),int i,p=1;,for(i=1;i=n;+i),p=p*y;,;,power,函数的调用未声明。,实参,x,、,n,未赋值。,实参,x,、,n,与形参,y,个数不符。,整个程序无输出。,未说明形参,y,的类型。,变量,n,未定义,应将之作为形参定义。,通过主函数对,power,函数的调用可以看出该函数有返回值,因此,power,函数定义中应有,return(p);,语句,且在第一行应说明函数值的类型。,最后的,;,号多余。,求,y,n,课堂练习main()P136习题1:指出程序中的错误pow,14,main(),int n;,char ch;,scanf(“%c%d”,p(,ch,n,);,P136,习题,3,:,编写一个函数重复打印给定的,字符,n,次,void p(,char c,int n,),int i;,for(i=1;i=n;i+),printf(“%c”,c);,printf(“n”);,main()P136习题3:编写一个函数重复打印给定的字符,15,#define PI 3.14,#include,“,math.h,”,main(),int x,y,i;,double,rd,=PI/180;,for(x=0;x=360;x=x+15),y=(int)(10+10*sin(x*rd);,for(i=1;i=y;i+),printf(“”);,printf(“*n”);,P136,习题,2,:画正弦曲线,若画下列形式的正弦曲线,则每行应输出:,y,个空格、,1,个,*,号、换行,空格数,y,与,sin,值有关。而,sin,值在,-1,,,1,内,故应将放大同样倍数的,sin,值作为,y,值。,算法分析:,y,个空格,*,*,*,*,*,*,*,*,*,sin(x),#define PI 3.14P136习题2:画正弦曲线,16,P136,习题,4,:,编写求一个给定数字的所有因子的函数。,void f(int n),int i=2;,while(n!=i),if(n%i=0),printf(“%d*”,i);,n=n/i;,else,i+;,printf(“%dn”,n);,如:,72=2*2*2*3*3,n,变小,i,变大,递推函数,n=n/i,n%i=0,是,否,当因子,i,不是,n,时(还有因子),输出因子,i,i=i+1,输出最后没有因子的数,n,或,i,i,取最小因子,2,P136习题4:编写求一个给定数字的所有因子的函数。void,17,判断正负,P136,习题,8,:,编写将,整数,转换为字符串的函数,itoa,void itoa(,int x,),char ch1,ch2,ch3,ch4,ch5;,int n;,if(x0),printf(“-”);x=-x;,if(x/10000!=0)n=5;,else if(x/1000!=0)n=4;,else if(x/100!=0)n=3;,else if(x/10!=0)n=2;,else n=1;,ch5=x/10000+0;,ch4=(x%10000)/1000+0;,c
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!