初学!一个关于求一维数组元素平均值的问题,急!

来源:百度知道 编辑:UC知道 时间:2024/06/14 10:09:23
例程:
问题1:在主函数里已经定义了 i ,为什么还要在 AvelD 函数里再次定义;
问题2:为什么程序到了最后在 AvelD 的函数头里又冒出一个 temp[],它起一个什么作用?

#include<iostream>
using namespace std;
float AvelD(float[],int);
int main()
{
float x[100],average,num=1000.0;
int i,total=100;
for(i=0;i<100;++i)
{
x[i]=num;
num++;
}
average=AvelD(x,total);
cout<<"平均:"<<average<<endl;
return 0;
}

float AvelD(float temp[],int total)
{
int i;
float sum=0.0,ave;
for(i=0;i<total;++i)
{
sum=sum+temp[i];
}
ave=sum/total;
return ave;
}

问题1:主函数中的变量i作用范围只在主函数,关于变量的作用范围,在没用相关关键字(如static、extern等)的情况下,如果变量在函数内定义,其作用范围只是从定义的位置起到函数结束,如果在函数外部(即全局变量),其作用范围从定义的位置起到整个代码的结束。所以main函数与AvelD函数中的变量i是不相关的,也就是它们根本就是两个不同的变量,只不过变量名都为i,就是同名字的两个人。for循环一般都习惯用i做为变量名。
关于static、extern等关键字请查看C++语言相关书籍
问题2: temp[]是AvelD函数的形式参数(形参),其作用是将main函数中定义的x[100]这个数组传递到AvelD函数中进行运算。
关于形参,实参等概念,请查看C++语言相关书籍

在主函数里的 i 只在主函数里起作用,它不是全局量,所以AvelD 函数里不能用它。
AvelD 函数自己声明了一个 i ,这个 i 只在 AvelD 函数 起作用,与 主函数里的 i 同名,但它们是不同的人。

temp[] 是AvelD 函数的形式参数,调用AvelD时将被 实在参数 x[],代替。
sum=sum+temp[i]; 就是算 x[] 的累加,
x[0]+x[1]+x[2]+..x[total-1]
sum 是 累加的和。
--------------------------------------
for(i=0;i<100;++i) -- ?
for(i=0;i<total;++i) -- ?

for(i=0;i<100;i++) -- 应当是 i++
for(i=0;i<total;i++) -- 应当是 i++

问题1:在主函数里已经定义了 i ,为什么还要在 AvelD 函数里再次定义;

main()跟AvelD两个函数里边定义的是局部变量,所以需要再次定义。

问题2:为什么程序到了最后在 AvelD 的函数头里又冒出一个 temp[],它起一个什么作用?
temp[]是形参,调用该函数时,需要用同样规格的一个实参