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

C语言函数问题:请问为什么这个函数分段就不行呢?求解!!

庄子小五 发布于 2016-12-10 22:19, 2322 次点击
这个程序是用函数来写出和和平均数


#include <stdio.h>
int main()
{   int add(int a[3]);
    float ave(int a[3]);
    int a[3],i,m,t;
    for(i=0;i<3;i++)
    scanf("%d",&a[i]);
    m=add(a[3]);
    t=ave(a[3]);
    printf("%d\n%.1f",m,t);
}

int add(int a[3])
{
    int a[3],m;
    m=a[0]+a[1]+a[2];
    return (m);
}

float ave(int a[3])
{
    int a[3],j,k;
    j=a[0]+a[1]+a[2];
    k=j\3;
    return (k);
}





  请问错在哪呢? 希望大神帮助QAQ~
5 回复
#2
yangwawa2016-12-10 23:31
#include <stdio.h>
int main()
{  
    int a[3],i,m,t;
    for(i=0;i<3;i++)
    scanf("%d",&a[i]);
    int add(int a[3]);
    float ave(int a[3]);
    m=add(a);
    t=ave(a);
    printf("%d\n%.1f",m,t);
    return 0;
}

int add(int a[3])
{
    int m;
    m=a[0]+a[1]+a[2];
    return (m);
}

float ave(int a[3])
{
    float j,k;
    j=(float)(a[0]+a[1]+a[2]);
    k=j/3;
    return k;
}
#3
yangwawa2016-12-10 23:32
你试一下 我没有运行
参数传递时候,数组只用数组名就行了,不用带下标
#4
鸿蒙之灵2016-12-12 09:37
正如楼上所说,你的形参格式不对,不过我看了一下楼主的代码,还有楼上的,你们的代码中,对数据结构把控不严格,也就是说,从int型赋值给float型,会导致数据丢失,可能会出现输出结果不正确的现象,针对于此,我对楼上的代码做了些许修改:

程序代码:

double add(int a[3])
{
    double m=0;
    m=a[0]+a[1]+a[2];
    return (m);
}

float ave(int a[3])
{
    double j=0,k=0;
    j=a[0]+a[1]+a[2];
    k=j/3.0;
    return k;
}
int main()
{  
    int a[3];
    double m,t;
    for(int i=0;i<3;i++)
        scanf("%d",&a[i]);
    m=add(a);
    t=ave(a);
    printf("%.5f\n%.5f",m,t);
    system("pause");
    return 0;
}
#5
rjsp2016-12-12 10:48
既然贴在 C++板块,……

程序代码:
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <numeric>
#include <iterator>
#include <type_traits>
using namespace std;

int main( void )
{
    int a[3];

    using valuetype_t = remove_reference_t<decltype(*a)>; // 推导出a数组的元素类型
    const size_t arrsize = extent<decltype(a)>::value; // 推导出a数组的元素数目
    copy_n( istream_iterator<valuetype_t>(cin), arrsize, a ); // 输入
    valuetype_t sum = std::accumulate( begin(a), end(a), valuetype_t() ); // 求和
    double avg = sum * 1.0/arrsize; // 求均值
  
   
// 输出
    cout << "Sum = " << sum << '\n'
         << "Avg = " << fixed << setprecision(1) << avg << endl;

    return 0;
}
输入
1 2 5
输出
Sum = 8
Avg = 2.7
#6
庄子小五2016-12-12 15:03
回复 2楼 yangwawa
这个平均数那里不对,只输出0.0
1