欢迎来到天天文库
浏览记录
ID:51963613
大小:225.50 KB
页数:49页
时间:2020-03-26
《C语言进阶及试题剖析全部课件第5章 程序的组织结构.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、5.3自定义函数5.2标准函数5.1函数概述5.4函数与数组的应用实例5.5递归算法与递归函数第5章程序的组织结构5.1函数概述结构化程序设计方法的核心是自顶向下,逐步求精,具体的实现策略是将复杂的问题逐步分解成相对简单的子问题,这样将有利于降低解决问题的难度,提高程序开发的效率。将一个问题分解成若干个子问题的过程称为模块化。在C程序中,模块用函数实现。函数是构成C程序的基本单位。它由函数首部和函数体两个部分组成,函数首部包含函数的返回类型、函数名称和参数表的声明,函数体包含实现特定功能所需要执行的语句序列。5.2标准函数C语言提供了很多标准函数,它们被
2、放置在一起,形成了一个标准函数库。函数原型函数原型是指不包含函数体的函数声明。C语言规定,所有的函数必须先定义后调用。对于标准函数而言,由于它们的定义已经在C语言提供的标准函数库中,所以,人们在调用它们的时候,只需要在程序的前面利用编译预处理命令include将相应的函数原型加入到程序中就可以了。例1:根据给定的两个坐标点(x1,y1)和(x2,y2),计算两点之间的距离。问题分析计算两点之间距离的公式为d=在这个公式中含有平方和开平方的运算,可以直接利用C语言提供的标准函数实现这两个运算。算法描述#include#include3、th.h>main(){intx1,y1,x2,y2;doubledistance;printf("Enter2coordinates(x1,y1,x2,y2)");scanf("%d%d%d%d",&x1,&y1,&x2,&y2);printf("Thefirstcoordinateis(%d,%d)",x1,y1);printf("Thesecondcoordinateis(%d,%d)",x2,y2);distance=sqrt(pow(x2-x1,2)+pow(y2-y1,2));printf("Thedistanceis%f4、",distance);}程序代码例2:掷骰子游戏。骰子是一个有六个面的正方体,每个面分别印有1~6之间的小圆点代表点数。假设这个游戏的规则是:两个人轮流掷骰子6次,并将每次投掷的点数累加起来。点数多者获胜;点数相同平局。请编写程序,模拟这个游戏的过程,并给出玩100盘之后,谁是最终的获胜者。随机数的产生及应用实例问题分析由于每个人掷骰子所得到的点数是随机的,所以需要借助随机数发生器,每次产生一个1~6之间的整数,以此模拟玩者掷骰子的点数。为了计算在每盘中,甲、乙两人所掷的点数,需要定义两个int型变量d1,d2,用于作为记录每个人投掷点数的累加器。为了5、记录每个人的获胜盘数,需要再定义两个int型变量c1,c2,用于记录每个人获胜的盘数。算法描述#include#includemain(){intd1,d2,c1,c2,i,j;c1=c2=0;/*初始化*/randomize();/*初始化随机数产生器*/for(i=1;i<=100;i++){/*模拟游戏过程*/d1=d2=0;for(j=1;j<=6;j++){/*两个人轮流掷骰子*/d1=d1+random(6)+1;d2=d2+random(6)+1;}if(d1>d2)c1++;/*累加获胜盘数*/els6、eif(d1c2)/*输出最终获胜者信息*/printf("Thefirstwin.");elseif(c1<函数名>(<参数表>){<函数体>;}例:doubledistance(intx,inty){doubled;d=sqrt(x*x+y*y);returnd;}C语言规定,一个函数可以有返回值,也可以没有返回值。如果有返回值,返回值的类型在函数名前7、声明,并在函数体中利用return语句将返回值返回;如果没有返回值,在函数名前声明void。默认的返回类型是int。函数名不但应该符合C语言的自定义标识符命名规范,还应该“见名知意”。参数表是函数之间交换信息的接口。既可以通过它将外界的数据传递给函数,也可以通过它将函数的操作结果带出函数。如果形式参数属于一维数组类型,无须指出一维数组的元素个数。函数体是函数的核心部分,在这里列出了需要执行的语句序列。函数的调用函数调用语句的基本格式为:<函数名>(<实在参数表>);实在参数与形式参数的数据类型和个数一一对应。函数的返回值在声明函数的时候,函数名前使用了保8、留字void,说明这个函数没有返回值;否则,这个函数执行完毕后,应该返回一个相应
3、th.h>main(){intx1,y1,x2,y2;doubledistance;printf("Enter2coordinates(x1,y1,x2,y2)");scanf("%d%d%d%d",&x1,&y1,&x2,&y2);printf("Thefirstcoordinateis(%d,%d)",x1,y1);printf("Thesecondcoordinateis(%d,%d)",x2,y2);distance=sqrt(pow(x2-x1,2)+pow(y2-y1,2));printf("Thedistanceis%f
4、",distance);}程序代码例2:掷骰子游戏。骰子是一个有六个面的正方体,每个面分别印有1~6之间的小圆点代表点数。假设这个游戏的规则是:两个人轮流掷骰子6次,并将每次投掷的点数累加起来。点数多者获胜;点数相同平局。请编写程序,模拟这个游戏的过程,并给出玩100盘之后,谁是最终的获胜者。随机数的产生及应用实例问题分析由于每个人掷骰子所得到的点数是随机的,所以需要借助随机数发生器,每次产生一个1~6之间的整数,以此模拟玩者掷骰子的点数。为了计算在每盘中,甲、乙两人所掷的点数,需要定义两个int型变量d1,d2,用于作为记录每个人投掷点数的累加器。为了
5、记录每个人的获胜盘数,需要再定义两个int型变量c1,c2,用于记录每个人获胜的盘数。算法描述#include#includemain(){intd1,d2,c1,c2,i,j;c1=c2=0;/*初始化*/randomize();/*初始化随机数产生器*/for(i=1;i<=100;i++){/*模拟游戏过程*/d1=d2=0;for(j=1;j<=6;j++){/*两个人轮流掷骰子*/d1=d1+random(6)+1;d2=d2+random(6)+1;}if(d1>d2)c1++;/*累加获胜盘数*/els
6、eif(d1c2)/*输出最终获胜者信息*/printf("Thefirstwin.");elseif(c1<函数名>(<参数表>){<函数体>;}例:doubledistance(intx,inty){doubled;d=sqrt(x*x+y*y);returnd;}C语言规定,一个函数可以有返回值,也可以没有返回值。如果有返回值,返回值的类型在函数名前
7、声明,并在函数体中利用return语句将返回值返回;如果没有返回值,在函数名前声明void。默认的返回类型是int。函数名不但应该符合C语言的自定义标识符命名规范,还应该“见名知意”。参数表是函数之间交换信息的接口。既可以通过它将外界的数据传递给函数,也可以通过它将函数的操作结果带出函数。如果形式参数属于一维数组类型,无须指出一维数组的元素个数。函数体是函数的核心部分,在这里列出了需要执行的语句序列。函数的调用函数调用语句的基本格式为:<函数名>(<实在参数表>);实在参数与形式参数的数据类型和个数一一对应。函数的返回值在声明函数的时候,函数名前使用了保
8、留字void,说明这个函数没有返回值;否则,这个函数执行完毕后,应该返回一个相应
此文档下载收益归作者所有