首页 > 用户发贴区 > 编程问题提问区 > 全局变量的问题
2008
10-14

#include “Stdio.h”
#include “Conio.h”
float max,min,sum; /*利用全局变量来带回值*/
float average(float score[],int n)
{int i;
float sum=score[0];
max=min=score[0];
score[0];
for(i=1;i<n;i++)
{sum=sum+score[i];
if(max<score[i])max=score[i];
if(min>score[i])min=score[i];
}
return sum; /*只能带回一个值*/
}


int main(void)
{float a[10];
int i;
printf(“please input numbers:\n”);
for(i=0;i<10;i++)
scanf(“%f”,&a[i]);
sum=average(a,10); /*此处只能用a,因为用数组名作为函数实参时,不是把数组元素值传递给形参,而是把实参数组的起始地址传递给形参*/
printf(“%5.1f\n%3.2f\n%2.4f”,sum,max,min);
  getch();
  return 0;
}


输入10个数字,输出和,最大,最小值。


在红色字体使用的是全局变量来带会最大最小值,我想请问下,我在使用全局变量的时候,不管是不是给max,min赋值,或者赋值多少,


例如


float max,min,sum;


float max=0,min=0,sum;


float max=445,min=45,sum;


最后输出的值都是按照数组中的实际大小来输出,请问为什么不管max,min,怎么定义都不影响结果呢?


全局变量的问题》有 2 条评论

  1. 星情飞飞 说:

     

    我觉得应该是被后面的值覆盖了

  2. Perfect 说:

    因为你在average()函数中对全局变量max,min进行了复制,新的值把旧的值覆盖了

     

留下一个回复