问题描述:
有一个一维数组,存放十个学生的成绩,编写一个程序,当主函数调用此函数后,能求出平均分,最高分,最低分。
解题思路:
众所周知,一个函数只能带回一个函数返回值,此处,要求通过函数调用得到三个值,那该怎么办呢?------------->>>>全局变量可以解决这个问题
代码如下:
#include<stdio.h>
float Max; //全局变量, 存放最大值,整个源程序有效(定义开始到整个程序结束)
float Min; //全局变量,存放最小值
float average(float b[],int n)
{
int i;
float total;
Max = b[0];
Min = b[0];
total = b[0];
for(i=1;i<n;i++)
{
if(b[i] > Max)
{
Max = b[i];
}
if(b[i] < Min)
{
Min = b[i];
}
total = total + b[i];
}
return total/n;
}
int main()
{
float array[10];
int i;
float ave;
printf("Please input ten numbers:\n");
for(i=0;i<10;i++)
{
scanf("%f",&array[i]);
}
ave = average(array,10);
printf("the max is %6.2f\n",Max);
printf("the min is %6.2f\n",Min);
printf("the average is %6.2f\n",ave);
return 0;
}
总结如下:
全局变量----------->>>>>>可以用于增加函数的返回值
全局变量也有其弊端,非必要时刻不要使用
1:在程序执行过程中一直占用内存,而不是在需要时才开辟空间(局部变量)
2:降低函数的通用性,收到外部变量的影响
3:降低程序的清晰性,人们往往难以清楚地判断出每个瞬间外部变量的值