第6章_函数与模块化程序设计基础

更新时间:2023-09-05 22:33:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言的教师课件,总结

第六章

第6章 模块化程序设计1. 概述:模块,函数,算法 2. 函数的定义与说明(重点) 3. 函数的调用(重点,难点递归调用) 4. 变量的作用域(重点) 5. 变量的存储属性(重点,难点) 6. 编译预处理1

C语言的教师课件,总结

第六章

6.1 概述6.1.1 模块与函数 1.功能模块 求解较小问题的算法和程序称作“功能模 块”, 各功能模块可以先单独设计,然后将求 解所有子问题的模块组合成求解原问题的程 序。 “自顶向下”的模块化程序设计方法: 将一个大问题分解成多个解决小问题的模块 的设计思想。2

C语言的教师课件,总结

第六章

2.由功能模块组成程序的结构图:主控模块

模块1

模块2

模块n

模块1_1

模块1_n

模块2_1

模块2_n

模块n_1

模块n_n

3. 函数:完成相对独立功能的程序3

C语言的教师课件,总结

第六章

【例6-1】输入年月日,计算出该日为该年的第几天。主控模块

输入

求总天数

输出

判断闰年

求某月的天数

图6-2 程序结构图

C语言的教师课件,总结

第六章

程序实现: (1)判断闰年。 int leap(int year) {int lp;lp=(year%4==0&&year%100!=0||year%400==0)?1:0;

return lp; }

C语言的教师课件,总结

第六章

(2)求某月的天数。int month_days(int year,int month) { int ds,d; switch(month) {case 1: case 3: case 5: case 7: case 8: case 10: case 12:d=31;break; case 2:d=leap(year)?29:28;break; default:d=30;} return d; }6

C语言的教师课件,总结

第六章

(3)求天数和。int days(int year,int month,int day) {int i,ds=0; for (i=1;i<month;i++) ds=ds+month_days(year,i); ds=ds+day; return ds; }

C语言的教师课件,总结

第六章

4) 在主函数中分别调用三个函数。void main() { int year,month,day,t_day; printf("Input year-month-day:\n"); scanf("%d-%d-%d",&year,&month,&day); t_day=days(year,month,day); printf("%d-%d-%d is %dth day of the year!\n",year, month,day,t_day); }

注意:在完整的程序中,前三个函数应放在main( )函数之前。8

C语言的教师课件,总结

第六章

6.1.2 模块设计三个原则 模块独立。 功能独立的子功能 模块之间的关系简单 使用独立变量

模块规模适当 分解模块要注意层次 对问题抽象化 设计时细化

C语言的教师课件,总结

第六章

6.2 函数定义与使用一、标准库函数 定义在不同的头文件中 用户使用时,必须用#include“头文件”把相应的 头文件包含到程序中来。#include <math.h> /* 包含math.h头文件 */ #include <stdio.h> /* 包含 stdio.h 头文件 */ main( ) { double a, b; scanf (“%lf “,&a); /*调用输入函数,输入变量a的值*/ b = sin (a); /*调用sin函数,求sin (a) 的值*/ printf( “%6.4lf”, b); } /*调用输出函数,输出变量b的值*/10

C语言的教师课件,总结

第六章

二、用户自定义函数1. 函数类型 无参函数 函数的定义无参数说明 有参函数 定义的参数有一个或一个以上的参数 空函数 当定义的函数既无参数也无执行语句。 空函数被调用时,什么也不做立即返回其调用函 数。

C语言的教师课件,总结

第六章

2. 函

数定义 方式1函数返回值类型名 函数名(参数列表) 参数类型说明 { 局部变量说明; 如: int max(a,b) 语句序列; } int a,b; 函数返回值类型名 函数名(参数类型说明及参数列表) { 局部变量说明; 语句序列; } 如: int max(int a,int b)12

方式2

C语言的教师课件,总结

第六章

【例6-3】定义符号函数sign。int sign(x)/*函数返回值类型未说明,默认为int,建议给出函数类型说明*/

int x; /*形式参数说明*/ {int y; /*函数体局部变量*/ y=x>0?1:(x==0?0:-1); return y; /*返回函数值*/ } 注意:C语言函数分为两大部分: 函数的说明部分 函数体部分。13

C语言的教师课件,总结

第六章

函数各部分作用1)函数的说明部分 函数说明部分说明函数的类型, 函数名, 参数表 及参数类型。(1)函数的类型说明 函数的类型即函数的返回值类型。若函数不提供返 回值,则可定义其类型为: void。 例如: void putdata(int a) (2) 函数名 函数名又称函数标识符。命名遵循C语语言标识符 的规定;函数名要反映函数完成的功能。14

C语言的教师课件,总结

第六章

(3)参数表参数表写在函数名后的( )内,由一个或多个变 量标识符及类型标识符组成。 参数表中的变量称为形式参数, 简称形参。 若函数没有形参,则称为无参函数,其后 “( )”不能省略。 参数必须指定类型。形参的类型说明有两种:方法1: int max(a,b) int a,b; 方法2: int max(int a, int b)

省略函数类型名时,C语言默认其为int型。15

C语言的教师课件,总结

第六章

2)函数体函数体包括变量定义和执行语句序列。函数所 完成的工作由函数体中一段程序实现。 函数的返回值用返回语句return返回,形式:return(表达式);或 return 表达式;

如果函数的类型与return语句的表达式的类 型不一致时, 则以函数的类型为准。返回时 自动进行数据转换。(见下页例题)16

C语言的教师课件,总结

第六章

例6.3 定义函数power(x,n), 求x的n次方。 函数定义如下:float power( float x, int n) { int i; float t=1; for(i=1;i<=n;i++) t = t * x; /* 1*x*x*…*x 共乘n次 */ return t; } /* 返回t的值 */

C语言的教师课件,总结

第六章

6.3 自定义函数的调用6.3.1 函数调用与声明 1. 函数的调用 有参数函数的调用形式:函数名(参数)

无参数函数的调用形式:函数名()

注意:当实际参数的个数、次序、类型与对应形 式参数的个数、次序、类型不一致时,系统并 不提示错误,后果却难以预测。

C语言的教师课件,总结

第六章

函数调用形式 函数语句调用、函数表达式调用和函数参数调 用void max(int a,int b,int c) { int y; y=(a>b)?a:b; y=y>c?y:c; printf("max=%d\n",y);} void main() {int x,y,z,m; scanf("%d,%d,%d",&x,&y,&z); max(x,y,z); } /*采用函数语句形式调用函数max*/19

本文来源:https://www.bwwdw.com/article/k1ui.html

Top