基于任务驱动的C语言程序设计 (6)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•
7
6.1.3函数声明
• C函数分为标准库函数和用户自定义函数。 • 标准库函数调用前须在程序开头用“#include命令行”包 含相应头文件;对于用户自定义的函数,如果函数调用在 函数定义之前,则需在程序的开头进行声明。
8
6.1.4参数传递
• 函数定义时的参数称为形参,函数调用时的参数称为实参。 例6-1中rad是形参,而主函数中定义并赋值的r是实参, 参数传递就是在函数调用时将实参的值传递给形参。
3
6.1.1程序的执行过程
图6-2 例6-1程序的执行过程
4
• 知识点:
• (1)不管一个程序包含多少个函数、每个函数的定义位置在哪里, 程序总是从main函数开始执行,而且在main函数中结束运行; • (2)程序中出现函数调用语句时,程序转向被调函数的定义位置处 执行,执行结束后,返回主调函数,从调用语句的下一条语句继续执 行; • (3)不管是系统提供的库函数,还是自己编写的函数,只有当它们 存在时才能被调用; • (4)调试程序时,为方便查错,经常单击F7键单步执行。
2
• scanf("%f",&r); /*输入圆的半径*/ • a=area(r); /*调用area 函数计算圆的面积*/ • c=cir(r); /*调用cir函数计算圆的周长*/ • printf("\nthe area is %f,the circumference is %f.",a,c); /*输出面积和 周长*/ • } • float area(float rad) /* area函数定义*/ • { float a; • a=PI*rad*rad; • return(a); • } • float cir(float rad) /* cir函数定义*/ • { float c; • c=2*PI*rad; • return(c); • }
grade=section(score); /*调用函数section将score划分等级, 并将结果赋值给grade;*/ printf("\nGrade:%c",grade); /*输 出等级*/ } char section(int score2) /*section函数定义*/ { ①定义变量 /*定义函数体中将 要用到的所有变量*/ ②将score2划分等级 ③将结果告诉主函数 /*使用 return语句返回结果*/ }
6
• • • •
知识点: (1)area是函数名,应遵循标识符的命名规范,好的函数名能反映函数的功 能。 (2)area()函数的返回值是的圆的面积,返回值类型是float型。 (3)rad是形式参数, area()函数只需主函数告诉它圆的半径,所以只定义 了一个形参rad。“{}”中的部分是函数体,分为数据声明语句和执行语句如。 如“float a;”是数据声明语句,“a=PI*rad*rad;”是执行语句。return语句的功 能是结束本函数的运行,将“()”中的值返回主调函数。 (4)C程序由主函数和若干个自定义函数构成,自定义函数可以放在主函数 前,也可以放在主函数后。为提高程序的可读性,习惯上常常把主函数放在 所有自定义函数之前。
11
• 1.问题分析 • 问题分解由两个函数实现,主函数解决三个问题:1.输入成绩并判 断是否为有效成绩(0-100);2.调用子函数将成绩划分等级; 3.输出结果。算法流程如图6-5所示。 • 子函数解决两个问题:1.将成绩划分等级;2.将结果告诉主函数, 如图6-6所示。
12
•
图6-5主函数的流程图
•
教学重点
Biblioteka Baidu
– 问题的分解; – 函数的定义与调用; – 形参与实参的使用。
•
教学难点
– 参数传递。
1
6.1引例——求圆的面积与周长
【例6-1】以下计算圆面积和周长的程序由三个函数组成:main函数、 area函数和cir函数组成,其中main函数调用了area函数和cir函数。 1.程序代码 #include "stdio.h" #define PI 3.1415926 float area(float rad); /* area函数声明*/ float cir(float rad); /* cir函数声明*/ void main() /*主函数*/ { float r,a,c; printf("\nplease input the radius:");
9
6.1.5函数调用
• 函数调用就是在一个函数的函数体中调用另一个函数,如 例6-1在main()函数中调用函数area()和cir()。 • 注意:实参与形参的个数、顺序和类型必须一致。
10
6.2.1单个元素作函数参数
【例6-2】编写程序,输入一位同学某门课程的成绩,调用自 定义函数将该成绩划分等级(划分原则:90-100分为'A'; 80-90分为'B';70-80分为'C';60-70分为'D';低于60分为 'E')。
图6-6自定义函数的流程图
13
程序框架:
• char section(int score2); /* 子函数声明*/ • void main() /*主函数定义*/ • { int score,flag=1; • char grade; • printf("\nPlease input a score:"); • while(flag) /*从键盘输 入一个有效成绩*/ • { scanf("%d",&score); • if(score>=0 && score<=100) • flag=0; • else printf("\nError data!Please input a score again:"); • } •
第六章 函数
•
教学目标
– 熟悉结构化程序设计思想,了解自动变量、静态变量、外部变量、寄存 器变量的概念和作用域;理解函数的概念; – 掌握函数的定义、函数的形式参数和实际参数以及函数调用时的参数传 递; – 掌握函数嵌套调用的方法; – 能够从总体出发,将待解决问题分解为子问题,最后分别用函数实现。
5
6.1.2函数定义
• 函数定义就是定义函数的功能,由返回值类型、函数名、 形式参数列表和函数体组成。例如以下area函数的定义: • float area(float rad) /*返回值类型、函数名(形式参 数列表)构成函数头*/ • {float a; /*数据声明语句*/ • a=PI*rad*rad; /*执行语句*/ • return(a); /*返回变量a的值 */ • }