赛酱想学编程 发表于 2022-12-3 22:21:04

刚刚学c语言不久,请教一下这个代码

题目是写一个可以输入n个数,并传入相应值,求这n个数平均值的函数。
我找不出代码哪里出了问题,用vs2022写的,没有报错提醒,但是无论输入什么数,最后printf的值都是0.000000,请教一下各位大佬能帮我看看哪里出问题了吗?应该怎么改呢?



#include <stdio.h>
float average(float* p, int a);

int main() {
    int n, i,ave;
    float sub;
    scanf_s("%d", &n);//传入数字个数
    for (i = 0; i < n; i++)//输入3个数字
    {
      scanf_s("%f", &sub);
    }
    ave = average(sub, i - 1);
    printf("平均值是%f", ave);


    return 0;
}

float average(float *p,int a)
{
    int count,sum=0,ave;
    for (count = 0;count <= a;count++) //对传入的三个数字进行求和
    {
      sum += *(p + count);
    }
    ave = sum / (a+1);//用总和除以数量,求得平均值
    return ave;
}

jackz007 发表于 2022-12-4 00:12:49

本帖最后由 jackz007 于 2022-12-4 01:00 编辑

#include <stdio.h>

float average(float* p, int a);

int main()
{
    int n, i             ;
    float ave , sub ;                   // 【错误-01】:把 ave 定义为 int,用于浮点数计算的变量不可以定义为 int
    scanf_s("%d", &n)    ;
    for (i = 0; i < n; i++)
    {
      scanf_s("%f", &sub);
    }
    ave = average(sub , n);                  // 【问题-01】:数组元素数量使用 n,名正言顺为什么要用 i - 1?
    printf("平均值是%f", ave);


    return 0;
}

float average(float *p,int a)
{
    int count                ;
    float sum = 0 , ave      ;            // 【错误-02】:用于浮点数计算的变量不可以用 int
    for (count = 0 ; count < a ; count ++)// 【问题-01】:调用函数时,数组元素数量用 n 这里,循环条件使用 count < a 与之前后呼应
    {
      sum += * (p + count) ;
    }
    ave = sum / (a+1)      ;
    return ave;
}

渊虚散离愁 发表于 2022-12-4 02:07:55

{:5_102:}
页: [1]
查看完整版本: 刚刚学c语言不久,请教一下这个代码