注册 登录
编程论坛 C++教室

一道有关函数的问题

tttt182 发布于 2013-09-07 13:27, 541 次点击
从键盘输入10个浮点数,求其和及其平均值。要求写出其和及平均值的函数。
#include"iostream"
using namespace std;
double sum(double);
void ave(double,int);
int main(void)
{
    double s,a[10];
    int i;
    for(i=0;i<=9;i++)
    {
        cin>>a[i];
        s=sum(a[i]);
    }
    ave(s,10);
}
double sum(double a[10])
{
    int i;
    double s=0.0;
    for(i=0;i<=9;i++)
        s+=a[i];
    cout<<s<<endl;
    return s;
}
void ave(double a,int b)
{
    cout<<a/b<<endl;
}
求大神修改一下,数组用的不对好像
2 回复
#2
chs094122013-09-07 23:33
s=sum(a[i]);放在循环里是不对的啊,这样子只代表一个数,而你的double sum函数是一个数组。

 for(i=0;i<=9;i++)
    {
        cin>>a[i];
        
    }
    s=sum(a);


double sum(double a[])
{

    int i;
    double s=0.0;
    for(i=0;i<=9;i++)
        s+=a[i];
   // cout<<s<<endl;
    return s;
}

其中的cout<<s<<endl是没什么用的,对程序也不好。
这是我的理解,有错的请指出
#3
tttt1822013-09-08 09:07
回复 2楼 chs09412
如果是这样的话,s=sum(a)会产生编译错误,因为a是一个指针,程序如下
#include"iostream"
using namespace std;
double sum(double*);
void ave(double,int);
int main(void)
{
    double s,a[10];
    int i;
    for(i=0;i<=9;i++)
    {
        cin>>a[i];
    }
    s=sum(a);
    cout<<s<<endl;
    ave(s,10);
}
double sum(double *a)
{
    int i;
    double s=0.0;
    for(i=0;i<=9;i++)
        s+=a[i];
    return s;
}
void ave(double a,int b)
{
    cout<<a/b<<endl;
}
谢谢楼上,真心感谢
1