第1章 C语言和计算机——1.2 C语言自定义命令:函数

问题:

1)什么是函数?

2)怎样在C语言中定义函数?

3)计算机怎样理解执行函数命令?

4)计算机会求正弦吗?

5)C语言中为何不能定义一个求两个数的和的函数?

函数、关键字和操作符号都是C语言命令,其中关键字和符号通常表示“简单”的命令,如+号表示让计算机执行加法,这些命令对应的步骤非常简单,计算机可以直接理解执行,而函数表示的命令比较复杂。scanf函数让计算机获得用户输入的数据并赋值给相关的变量,完成这样的命令需要复杂的步骤,作为机器的计算机本身并不能直接理解执行这样复杂的命令。函数实际上是程序员“自己定义”的命令,scanf函数和printf函数的定义非常复杂,下面以一个简单的函数为例来说明怎样在C语言中定义自己的命令。

数学上,函数是每个(组)输入值到唯一输出值的映射。函数的作用通常表现为把输入变成输出。函数的输入又称为自变量,函数的输出又称为函数值;在C语言中常称自变量为参数,称函数值为返回值。函数z=f(x,y)=x+y的作用是求两个数的和,f(3,5)的值为8。使用函数f时需要提供两个数,函数值就是这两个数的和。只所以说f(3,5)的值是8,是因为我们的大脑根据函数的映射关系执行了加法运算得到的结果是8,计算机不可能有这样的智能。为了让计算机能够执行这样的函数命令,程序员需要定义一个有这样功能的C语言函数,在定义函数命令时程序员需要安排细节提供加工步骤。

函数的功能为求两个参数的和,因此,计算机需要分配两个存储单元存放输入。计算机中的存储单元有类型,没有既可以存储整数又可以存放小数的存储单元!只能定义求两个整数的和的函数或求两个小数的和的函数。现定义求两个整数的和的函数,其定义形式如下:

int f(int x, int y)

{

  int z ;

  z = x + y ;

  return z ;

}

在定义中,int f(int x, int y)称为函数的首部,第一个关键字int表示让计算机准备一个整型的存储单元用于存储函数的返回值;字符f是函数的名字;圆括号是函数的标志;int x, int y表示让计算机准备两个整型的存储单元,并分别与变量x和变量y对应,xy又称为形参(形式参数)。形参xy用于存储函数的输入。

在定义中,一对花括号界定的部分称为函数的函数体,用于指挥计算机完成函数的映射,即利用存储在形参xy中的函数的输入值,得到函数的输出值。先利用int z ;让计算机为变量z分配一个整型存储单元,然后利用z = x + y ;让计算机求出xy的和,并把结果存入变量z中。语句return z ;中,return是关键字用于命令计算机停止执行函数中的语句,return后面如有变量就把变量的值作为函数的输出。这条语句将把变量z的值作为函数的输出。

有了这个函数定义,C语言中就多了一个函数命令f,它可以让计算机求出两个整数的和。使用函数f时需要提供两个输入,f(3,5)可理解为让计算机求出整数35的和,计算机怎样执行这个函数命令呢?

首先根据函数的首部申请两个整型的存储单元与形参xy对应,然后把35分别存入形参xy中,接着顺序执行函数体中的语句,遇到return命令时结束函数的执行,并把变量z的值8作为函数值,即命令f(3,5)执行的结果就是整数8

计算机只能直接理解执行C语言中简单的命令。C语言函数是复杂的命令,也是自定义命令,需要程序员为计算机明确函数命令怎样执行。函数通常表现为把输入变成输出。在定义函数时,程序员需考虑输入的个数和类型以及函数返回值的类型,设计把输入变成输出的步骤。

利用自定义函数命令f,也可以求出用户输入的两个整数的和,如下所示。

printf("请输入两个整数:\n");

scanf("%d%d", &a, &b);

c=f(a, b);

printf("和为%d", c);

语句c=f(a, b) ;执行时,变量a和变量b的值会分别存入形参xy中,然后函数f函数体中的语句顺序执行,最终把ab的和作为函数的返回值,赋值命令执行之后,变量c的值就是变量a与变量b的和。语句可理解为先利用函数命令f求出变量a与变量b的和,再把和存入变量c中。

与语句c=a+b ;相比,利用加号求和比利用函数命令f求和更简单更直接。加号+是计算机能够直接执行的C语言命令,而函数f需要程序员安排细节和执行步骤是自定义命令。求两个整数和的函数命令f无疑是不必要的,定义它仅为了演示函数命令定义的形式及函数命令的执行步骤。把一些常用的功能定义为函数, C语言就增加了许多“命令”,可极大地提高程序的编写效率。C语言有许多已经定义好的函数,它们常称为库函数。最常用的库函数自然是printf函数和scanf函数。计算机只会计算加减乘除,不会直接计算复杂的数学运算(如开平方根、求幂、求正弦等),但常用的复杂数学运算有对应的库函数(如sqrt函数、pow函数、sin函数等),可以利用这些“函数命令”指挥计算机完成运算(如sqrt(2.25)就是命令计算机求出2.25的算术平方根)。

利用函数命令时需清楚函数的输入输出及功能,如sin函数的首部为double sin(double x)功能为求x的正弦,但函数的输入要求为弧度而非角度。用sin函数求90度角的正弦时需用弧度表示角,即sin(3.1415926/180*90)的结果为1.0,是90度角的正弦值。关键字double表示存储小数的存储单元,/号表示除法命令,*号表示乘法命令,3.1415926/180的结果为每角度等于多少弧度。教材附录D中介绍了常用的C语言库函数。

重点:

1)函数的作用就是把输入变成输出。

2)定义函数实际上与编程类似,也需设计步骤和把步骤转换成C语言语句两个阶段。

3)函数扩展了C语言的功能。

4)函数的定义及使用。

5)由于存储单元的特点,C语言中没有可以求两个数的和的函数,只有求两个整数的和的函数或求两个小数的和的函数。

你可能感兴趣的:(C语言内涵教程,c语言,内涵,教程,周二强)