C语言中对n的疑惑,以下有例子,求赐教。

我经常对n比较苦恼,我我得到的n值总是和真实值之间有1左右差别。比如此例
n到底等于几比较合适

float average(float array[],int n)
{ int i;
float aver,sum=array[0];
for(i=1;i<n;i++)
sum=sum+array[i];
aver=sum/n;
return(aver);
}

我截取了程序的一部分,应该能说明问题。 假设此例中i=5 那么n=6才正确吧 可是例子中说i<n 那问题就出来了,n可以等于6也可以是7也可以是8只要不小于6就行了,可题中目的是要求他等于6 请问我哪里出错了 求赐教
哎呀 是我错啦 没看到前文的关系

第1个回答  2012-08-08
array是一个数组,其实就是该数组的首地址,这里的n是这个数组的长度,也是需要求平均数的个数。
这里使用先求和再求平均的方法。
求和的时候先把数组第一个值赋值给sum(表示和),数组的下标是从0开始的,这点和数学里面有点不同。
for循环中,把数组除了第一项以外的所有项都累加到sum中。一共循环了n-1次
最后将和初一数字个数就是结果,返回结果。
此例中的i是从1取值到n-1;i如果可以取到5,那么n至少是6,。
你的意思我不能完全明白,我只能给你讲一下代码含义了。追问

谢谢您了

第2个回答  2012-08-08
此例常见的编程应该是这样的:
float average(float array[],int n)//这里n必须是数据的个数,也就是数组的维数
{ int i;
float aver,sum=0;//这里
for(i=0;i<n;i++)//i=0,这和c语言的数组存储是一致的。c语言数组存储从0开始。
sum=sum+array[i];
aver=sum/n;//否则这里求平均值就不对了
return(aver);
}追问

谢谢啦 我没看懂前文的关系 太感谢您了

本回答被提问者采纳
第3个回答  2012-08-08
最好把题目贴出来,或者编译运行的计算机错误提示写出来。。
这是个调用函数,调用时要求给出的是n值。如6,函数中i<n,是跳出循环的判断语句,表示i在小于n时,即1,2,3,4,5是循环,i=6时跳出。也就是sum是array[0]+array[1]+…+array[5]。

你是不是刚学啊?
相似回答