10.第十章 函数.txt

时间:2022-11-28 10:17:18
【文件属性】:
文件名称:10.第十章 函数.txt
文件大小:27KB
文件格式:TXT
更新时间:2022-11-28 10:17:18
函数 第十章 函数 10.1 理解函数 C语言函数是程序中对分解与抽象思想的实现。C语言把大段的程序代码按照功能分解开,体现出对重复使用的程序段的抽象。 例:求任意两个正整数的最大公约数(GCD)和最小公倍数(LCM)。 /*求最大公约数用辗转相除法*/ #include int main() { int i1,i2,i3,i4,gcd,lcm,temp; printf("Input i1 and i2:"); scanf("%d%d",&i1;,&i2;); i3=i1; i4=i2; temp=i2; while(temp!=0) { temp=i1%i2; i1=i2; i2=temp; } gcd=i1; lcm=i3*i4/gcd; printf("最大公约数:%d\n最小公倍数:%d\n",gcd,lcm); return 0; } 例:利用函数分解求任意两个正整数的最大公约数(GCD)和最小公倍数(LCM)。 /*利用函数分解求任意两个正整数的最大公约数(GCD)和最小公倍数(LCM)*/ #include int gcd(int i1,int i2); int lcm(int i1,int i2); int gcd(int i1,int i2) { int temp; temp=i2; while(temp!=0) { temp=i1%i2; i1=i2; i2=temp; } return i1; } int lcm(int i1,int i2) { return i1*i2/gcd(i1,i2); } int main() { int i1,i2; printf("Input i1 and i2:"); scanf("%d%d",&i1;,&i2;); printf("最大公约数:%d\n最小公倍数:%d\n",gcd(i1,i2),lcm(i1,i2)); return 0; } C程序结构: (1)一个C程序可以由多个模块构成,每个模块可由若干个小模块构成,继续分解,直到分解成不可分割的最小模块单元为止,最小模块单元即为一个函数。C程序由多个函数构成。每个函数可以单独放在一个文件中,也可以将若干个功能相关的函数放在一个文件中,C语言程序可以由多个文件组成,文件负责组织存放若干函数。 (2)源程序文件是C程序的编译单位,每个文件单独编译,便于调试,方便团队开发。 (3)main函数是程序执行的入口,main函数可以调用其他函数,其他函数调用结束后要返回main函数,main函数执行完毕,整个程序就结束了。 (4)main函数可以出现在任何位置,其他函数的位置也不是强制的,每个函数有且仅有一个main函数。 (5)C程序的所有函数都是平行定义的,在一个函数内部不允许定义另外的函数,函数可以互相调用,也可以调用自己,但是不能调用main函数。 10.2 函数定义和分类 10.2.1 函数定义 函数定义的一般形式: 1.无参函数的一般形式: 类型说明符 函数名() { 声明部分; 执行语句部分; } 例:输出当前时间。 #include #include /*showTime函数返回1979年1月1日0时0分0秒到当前的秒数*/ long showTime() { long lct; lct=time(0); /*time(0)返回1979年1月1日0时0分0秒到当前的秒数*/ return lct; } int main() { long lCurTime=showTime(); printf("%ld",lCurTime); return 0; } 函数由函数首部和函数体两部分构成。 (1)函数首部 函数首部包括类型说明符、函数名、形式参数。类型说明符指明了函数的类型,函数的类型实际上是函数返回值的类型。函数名是由用户自定义的标识符,函数名后有一个括号,无参函数的函数名括号中没有参数,但括号不可少。 (2)函数体 {}中的内容称为函数体。函数体包括声明部分和执行语句部分。声明部分对函数体内部用到的变量和函数的类型进行声明,执行语句部分是函数对数据进行加工完成函数功能的部分。 2.有参函数的一般形式: 类型说明符 函数名(形式参数表) { 声明部分; 执行语句部分; } 有参函数比无参函数多了形式参数表,形式参数表的格式为: 类型1 形参变量1,类型2 形参变量2,类型3 形参变量3,···,类型n 形参变量n 形参表中的变量称为形式参数,各参数之间用逗号间隔。在进行函数调用时,主调函数赋予形参实际的值。形参是变量,必须给以类型说明。 10.2.2 函数分类 从函数定义的角度看,函数可分为库函数和用户自定义函数。 (1)库函数:由C系统提供,用户无需定义,也不必在程序中作类型说明,只需在程序前包含该函数原型的头文件即可在程序中直接调用。如printf、scanf、sqrt等。 (2)用户定义函数:由用户按需要写的函数。对于用户自定义函数,不仅要在程序中定义函数本身,通常在主调函数模块中还必须对该被调函数进行类型说明,然后才能使用。被调函数与主调函数在同一文件中且被调函数在主调函数之前定义,可以不进行类型声明。 C语言的函数兼有其他语言中的函数和过程两种功能,可把函数分为有返回值函数和无返回值函数两种。 (1)有返回值函数:有返回值函数被调用执行完后向调用者返回一个执行结果,称为函数返回值。用户定义的需要返回函数值的函数,必须在函数定义和函数说明中明确返回值类型。 (2)无返回值函数:无返回值函数用于完成特定的处理任务,执行完成后不向调用者返回函数值。这类函数类似于其他语言的过程。用户定义无返回值函数时可指定函数的返回为“空类型”,空类型说明符为void。 例:输出当前时间。 #include #include /*showTime函数返回1979年1月1日0时0分0秒到当前的秒数*/ void showTime() { long lct; lct=time(0); /*time(0)返回1979年1月1日0时0分0秒到当前的秒数*/ printf("%ld",lct); } int main() { showTime(); return 0; }

网友评论