main()在调用max()时,输入3和2,屏幕输出3; main()在调用min()时,输入3和2,屏幕输出3; main()在调用average()时,输入3和2,屏幕输出2.5; 结果没有问题,只是有些许遗憾的地方. 例如:同一个程序,同一组数据3和2,在求解max,min,average时要重复输入3次; 要是能在开始求解前,输入3和2,分别存在变量a和b中,然后,a和b能让3个函数共用,就简单一些了。要实现上面的想法,我们需要把程序改动2个地方: 1、要在调用3个函数之前,输入3和2。 于是我们把3个子函数中的输入语句scanf("%f%f",&a,&b);移动一下,移动到main()函数中,放在 调用3个子函数之前,当然3个子函数中就不要输入语句了。 2、存放3和2的变量a和b,必须能被max()、min()、average()和main()共用。 我们把3个子函数中的 float a,b;也移动一下,移到程序的开头部分, 紧跟着#include〈stdio.h 〉.当然三个函数中的float a,b;语句就不要了. 于是程序4变成了如下程序5: 程序5:
这样程序5就实现了我们的数据3和2,只输入1次的想法。
需要强调说明一下为什么变量定义语句float a,b;要移到函数外?: 我们看到的程序4,max()、min()、average()每一个函数的函数体中都有同样的变量定义 语句float a,b; 各自是各自的,互不相干。这是因为C语言规定,在某个函数内定义的变量,只能 在本函数中使用,其他函数不能使用。因此max()函数中的float a,b;和min()函数中的float a,b; 是不同的变量,就和你有2只手,我有两只手,都叫手,但你是你的,我是我的。当变量的定义在某 个函数内部,我们叫该变量为局部变量。我们的程序4中,所有变量都是在某个函数内部定义的, 都是局部变量。 在程序5中。我们将float a,b;移出函数,移动到紧跟着#include〈stdio.h〉,在max()、min()、 average()和main(),4个函数的前面。这一移动不要紧,一下子,变量a和b不再属于任何一个函数, 而是在函数之外定义的,对于我们这个程序,变量a和b在所有函数之前。 C语言规定,当变量的定义不在任何函数内部,或者说变量的定义在函数之外,我们叫它全局变量 或全程变量。 我们的程序5中的float a,b;语句定义了2个全局变量,按照C语言的规定,从这一句开始, 其后的所 有函数都可以使用这2个变量,因此max()、min()和average(),以及main()4个函数都可以使用这2个变 量。全局变量可以为本程序文件中其他函数所共用。它的有效范围为从定义变量的位置开始到本源程 序文件结束。 你翻回头看看程序5,确实是这样的。 |