C语言第三讲 程序结构 (上)



《C语言第三讲 程序结构 (上)》由会员分享,可在线阅读,更多相关《C语言第三讲 程序结构 (上)(41页珍藏版)》请在装配图网上搜索。
1、,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,1,第三讲 程序结构(上),2,主要内容,自顶向下的分析方法,函数的概念,系统函数的使用,无参无返回值函数,自顶向下的分析方法,分析问题的基本方法,案例示例,模块结构图,3,4,自顶向下的分析方法,分析问题的基本方法,把一些任务分割成小的更容易控制的大块,再继续细分为更小的任务,直到所有的小任务能很容易实现,功能分解,早起活动,起床,刷牙,洗脸,吃早饭,拿饭卡,去食堂,排队买饭,吃饭,收拾餐具,离开食堂,早读,5,6,实例分析,打印图形,女孩,房子,男孩,7,分析:,基本组件,圆,平行线,横线,交叉线,8
2、,设计,画女孩,画一个圆,画一个三角形,画一个交叉线,画三角形,画交叉线,画一横线,9,结构图,10,模块的实现,-,函数,自顶向下的分析结果得到模块结构图,每一个模块在,C,程序中的实现与函数相对应。,当用,C,来编程序时,一个复杂的大程序可被分割成更容易控制的函数和子函数,函数的概念,几种不同的函数类别,main,函数,系统函数,用户自定义函数,函数的操作三步曲,定义函数,声明函数,调用函数,11,12,main,函数,void main(void),一个可执行的,C,程序包含一个且只包含一个,main,函数,main,函数是唯一由,系统自动调用,执行的函数,其它函数通过,函数调用语句,调
3、用执行。,函数定义的一般形式,定义形式,函数类型 函数名(参数),函数类型的对应,void,无,return,具体数据类型,return,缺省 等价于,int,型,13,系统函数,系统函数介绍,使用系统函数,常用数学库函数,14,系统函数介绍,系统提供的一写好的功能代码,可以直接调用,系统函数的声明,系统函数的程序段:,stdio.h,:标准输入输出函数,math.h,:数学函数,string.h,:字符串处理函数,15,使用系统函数,中已定义,#include,-,引入系统函数的声明,按照函数调用的方法调用,使用函数三步曲,函数定义,函数声明,函数调用,16,17,C,函数中可调用其他函数,
4、#include,void main(void),printf(“Hello C Worldn”);,printf(“Hello C World”);,18,printf-Formatted Print,printf,是一个实现复杂功能的系统函数,我们只需学会调用它,而不需要写函数,函数可以多次被调用,19,如何调用一个函数,printf,是函数的名称,使用一个函数,函数名后面一定要跟,(),(),里是函数的参数,.,它提供函数所需要的数据,.,例如需要显示的字符串是,printf,所需要的参数。,例如,add(23.5,67.8),包含两个参数,23.5,和,67.8,,参数之间以逗号分隔。
5、,20,常用数学库函数,平方根函数,sqrt(x),绝对值函数,fabs(x),fabs(-3.56),的值为,3.56,幂函数,pow(x,n),:,x,n,pow(1.1,2),的值为,1.21,(即,1.12,),指数函数,exp(x),:,e,x,exp(2.3),的值为,e,2.3,以,e,为底的对数函数,log(x),:,ln x,log(123.45),的值为,4.815836,以,10,为底的对数函数,log10(x),:,log,10,x,log10(123.45),的值为,2.091491,。,21,例,2-5,计算存款的本息,输入存款金额,money,、存期,year,和
6、年利率,rate,,根据公式计算存款到期时的本息合计,sum,(税前),输出时保留,2,位小数。,sum=money(1+rate),year,sum=money*pow(1+rate),year),22,例,2-5,程序,#include,#include,int main(void),int money,year;,double rate,sum;,printf(“Enter money:);,scanf(%d,printf(“Enter year:);,scanf(%d,printf(“Enter rate:);,scanf(%,lf,sum=money*,pow(1+rate),yea
7、r),;,printf(sum=%.2f,sum);,return 0;,Enter money:,1000,Enter year:,3,Enter rate:,0.025,sum=1076.89,scanf(,%d,%d,%lf,&money,&year,&rate,);,用户自定义函数,-,无参无返回值函数,函数的定义,函数的声明,函数的调用,23,24,写自己的函数,void triangle(void),printf(*n);,printf(*n);,printf(*n);,无返回值函数,void,函数的作用仅仅是执行一系列的指令,与数学函数不同,无参无返回值的函数的定义,void,函
8、数名(,void,),函数体,25,无参无返回值的函数的声明,void,函数名(,void,),;,函数声明的作用是告诉编译系统用户自定义函数的存在,编译系统在检查被调用的函数时要知道调用信息包括:函数名,参数,返回类型。,26,无参无返回值的函数的调用,函数名();,27,28,使用自己写的函数,:sample01_04.cpp,/*a program to output a triangle*/,#include,void triangle(void);,main(),printf(About to print a triangle);,triangle();,printf(That wa
9、s it!n);,void triangle(void),printf(*n);,printf(*n);,printf(“*n”);,函数声明,函数调用,函数定义,调用我们自己写的函数,()中可以不包括任何东西,但()一定要写。,可放在,main,函数之前,也可以放在,main,函数的后面。但不能放在,main,函数函数体中,函数和函数之间地位是平等的,没有嵌套关系。,告诉编译器,存在着这样一个用户自定义的函数,及它的调用方法:名称、参数、返回值。,29,完成画简图的程序(,sample01_06.cpp,),完成画基本组件的函数,画一个圆,画一个横线,画一个交叉线,画一个平行线,完成画三角形
10、的函数,画一个交叉线,画一个横线,在,main,函数中调用子函数完成画小女孩,画一个圆,画三角形,画一个交叉线,30,完成画基本组件的函数,/*,*Draws a circle,*/,void draw_circle(void),printf(*n);,printf(*n);,printf(*n);,/*,*Draws intersecting lines,*/,void draw_intersect(void),/*Use 2 s to print 1*/,printf(/n);,printf(/n);,printf(/n);,31,完成画基本组件的函数,/*,*Draws a base l
11、ine,*/,void draw_base(void),printf(-n);,/*,*Draw a parallel,*/,void draw_parallel(void),printf(|n);,printf(|n);,32,完成画三角形的函数,/*,*Draws a triangle,*/,void draw_triangle(void),draw_intersect();,draw_base();,33,画小女孩,#include,/*function prototypes*/,void draw_circle(void);/*Draws a circle */,void draw_i
12、ntersect(void);/*Draws intersecting lines*/,void draw_base(void);/*Draws a base line */,void draw_triangle(void);/*Draws a triangle */,int,main(void),/*Draw a circle.*/,draw_circle();,/*Draw a triangle.*/,draw_triangle();,/*Draw intersecting lines.*/,draw_intersect();,return(0);,34,关于程序的两个顺序,程序的执行顺序
13、,从,main,函数开始执行,执行完,main,函数结束,遇到调用函数,执行转向被调用函数,执行完子函数,返回调用处,继续向下执行,程序的书写顺序,函数书写顺序与执行循序无关,函数定义写在函数调用之前,函数声明可省略,但不主张。,35,执行示例,36,有关函数的问题,我能多次调用一个函数吗?,自己写的函数能包含调用另一个函数的语句吗?,一个函数能包含语句吗?,YES to all three,37,思考,main,函数中三句语句功能还不明显,可增加一个函数,draw_girl,画小女孩,请修改程序,main,38,画小女孩函数,/*,*Draws a girl,*/,void draw_gir
14、l(void),/*Draw a circle.*/,draw_circle();,/*Draw a triangle.*/,draw_triangle();,/*Draw intersecting lines.*/,draw_intersect();,39,完成画小女孩程序,#include,/*function prototypes*/,void draw_circle(void);,void draw_intersect(void);*/,void draw_base(void);,void draw_triangle(void);,void draw_girl(void);,int,main(void),draw_girl();,return(0);,40,实践,修改,sample01_04.cpp,完成 小男孩和小房子函数,并在,main,函数中调用输出,修改,sample01_03.cpp:,打印四个三角形,改错题,error01_03.cpp,41,改错题,error01_03.cpp,void main(),printstar;,sayHello(void);,printstar;,void printStar(void),printf(“*”);,void sayHello(void),printf(“hello world!”);,
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。