文档介绍:第四章函数?函数–C语言是程序模块;也称为子例程(procedure)?ANSI C 标准函数–如:printf( ),scanf( )等预先准备好的函数–支持常见的数学运算、字符串处理、输入输出等众多功能(见附录B)?专用函数库(厂商提供)–图象处理、用户界面、数据库访问…(Win32 API)– 外部函数的使用?函数调用方式(函数调用表达式)–函数名(实在表达式1,实在表达式2,。。。)?先说明、后引用–#include 头文件–包含厂商提供的头文件(包含文件)?例如:–标准输入输出:–字符串处理:–数学函数:–字符处理:-1:数学函数的使用#include <>#include <>/*数学函数头文件*/main( ){double x, y;/*双精度数*/scanf( “%lf”, &x );/*读入x */y = sin( x );/*求sin(x) */printf( “sin(%lf) = %lf\n”, x, y )/*输出sin(x) */printf( “cos(%lf) = %lf\n”, x, cos(x) );/*输出cos(x) */}3函数原型的概念?代表函数的类型–包括函数参数个数、顺序、返回值类型?例如:标准函数的函数原型说明–double sqrt( double x );求x 的平方根–double sin( double x );求x 的正弦值–int rand( void );求一个随机数–/*void 表示无参数*/–?函数sqrt 和sin 的类型相同–函数原型相同;引用必须代入规定类型的参数4随机数的产生#include <>#include <>main( ) // 阅读程序{int i = 1;while( i <= 20 ) {printf( “%10d”, 1 + rand()%6 );if( 0 == i++%5 ) printf( “\n”);}}指定头文件(函数原型)生成一个随机数5程序读解?循环–控制变量i i=1, i<=20, i++–循环20 次?每次输出1+ rand() % 6–取值为1-6 的随机数?i%5 时输出\n–每5次循环,输出换行?总结–输出20 个随机数,每5 自定义函数?目的–支持代码复用(reuse、重用)–支持软件模块化:C语言的程序结构= 若干个函数–支持结构化程序设计?结构化程序设计的观点–自顶向下、逐步求精、信息隐蔽–算法设计首先考虑整体功能,逐步细化,考虑子功能–的实现;–函数(子例程)是实现子功能的主要手段7自定义函数?目的–支持代码复用(reuse、重用)–支持软件模块化:C语言的程序结构= 若干个函数–支持结构化程序设计?结构化程序设计的观点–自顶向下、逐步求精、信息隐蔽–算法设计首先考虑整体功能,逐步细化,考虑子功能的实现;–函数(子例程) 函数的编制?基本结构返回值类型函数名(类型参数名,类型参数名…){/*形式参数*/变量说明(局部变量)语句组}?程序例:计算两个整数中的最大值int max( int a, int b ){if( a > b )return a;/*返回a */elsereturn b;}9函数的调用main( ){intx, y;scanf( “%d%d”, &x, &y );printf( “max = %d\n”, max(x, y) );}?基本要求–实参和形参个数相等,按顺序匹配,类型相符–返回值作为函数调用表达式的值参加计算,类型应符合计算要求实在参数10