admin 管理员组

文章数量: 887021

济南大学c语言,C语言

第六章 函 数

【教学目的】

理解“函数”概念,学会构造程序模块

掌握函数的定义和调用

掌握函数之间的信息传递

掌握函数的递归调用

熟悉 C 标准库中常见的库函数

【教学内容】

正确定义函数及其声明

函数的调用的方式及其返回值

函数的参数,两种重要的传递方式——传值调用和传址调用

命令行参数

函数的递归调用

【教学重点和难点】

掌握函数的定义,在实际问题中如何构造函数这样的程序模块。

掌握函数的传值调用和传址调用,特别是传址调用。注意两种方式的区别,什么情况下

用哪一种方式更高效,更方便。

主函数带参数的情况,参数如何传递,程序如何执行。

掌握递归算法,包括递归的基本概念,递归函数的动态执行过程,递归程序的编写方法。

【问题的提出】

在前五章中所出现的程序都只有一个 main 函数,当开发和维护大型程序时,程序往往很

大,用一个 main 函数编写的程序会很长,不利于多人合作开发大型程序(或软件),也不利

于程序的阅读和调试。在这种情况下提出了一种好的办法,就是用更容易管理的小程序块 (即

模块)来建立程序,这种程序设计技术称为“细化”(divide and conquer) 。

从组成上看,各个功能模块彼此有一定的联系,功能上各 自独立,从开发过程上看,可

能不同的模块由不同的程序员开发,怎样将不同的功能模块连接在一起,成为一个程序,怎

样保证不同的开发者的工作既不重复,又能彼此衔接,这就是模块化设计。在 C 语言中,用

函数实现功能模块的定义,一个文件中可以包含多个函数。

C 语言的程序通常是用程序员编写的新函数和 C 标准库中的函数写成的。C 标准库中提

供了丰富的函数集,这些函数能够完成常用的数学计算、字符串操作、字符操作、输入/输

出以及其它许多有用的操作。这些函数给程序员提供了很多必要的功能,减少了程序员的工

作量,节省了开发时间,使程序具有更好的可移植性。标准库函数存放在不同的头文件中,

使用时只要把头文件包含在用户程序中,就可以直接调用相应的库函数了。即在程序开始部

分用如下形式: #include 或: #include "头文件名"。

用户可根据自己的需要,编写完成指定任务的函数,这些函数称为“自定义函数”。函数

的使用是通过函数调用实现的,函数调用指定了被调用函数的名字和调用函数所需的信息(参

数) 。

【教学要点】

1. 函数定义、声明、调用及返回值

【例 6.1 】定义一个函数,用于求两个数中较大的数。

分析: 根据题意,需要自定义一个函数实现求大数的功能;而在 main( ) 中实现两数的

输入、调用自定义函数及输出功能。

源程序如下:

main()

{ float max(float n1, float n2) ; /* 在 main( ) 中对被调用函数max( )进行声明 */

float num1,num2,m ;

printf("input two numbers:\n") ;

scanf("%f%f", &num1, &num2) ; /* 输入两个数 */

m=max(num1,num2); /* 调用 max( ) 函数,返回后的较大值存于m 中 */

printf("max=%f\n",m) ; /* 输出较大数 */

getch();

}

float max(float n1, float n2) /* 定义一个函数 max( )求较大数,其返回值为 float 型*/

{ return (n1>n2?n1:n2) ; /* 返回表达式的值 */

}

说明:

1. 任何一个函数都是由函数说明和函数体两部分组成。根据函数是否需要参数,可将

函数分为无参函数和有参函数两种。在本例中定义一个函数 max( )是有参函数,调

用有参函数时,调用函数将赋予这些参数实际的值。为了与调用函数提供的实际参

数区别开,将函数定义中的参数表称为形式参数表,简称形参表。本例中将实参num1 、

num2

本文标签: 济南大学c语言 C语言