鱼C论坛

 找回密码
 立即注册
查看: 3165|回复: 2

[已解决]刚刚学c语言不久,请教一下这个代码

[复制链接]
发表于 2022-12-3 22:21:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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



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

int main() {
    int n, i,ave;
    float sub[100];
    scanf_s("%d", &n);//传入数字个数
    for (i = 0; i < n; i++)//输入3个数字
    {
        scanf_s("%f", &sub[i]);
    }
    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;
}
最佳答案
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[100] ;                   // 【错误-01】:把 ave 定义为 int,用于浮点数计算的变量不可以定义为 int
    scanf_s("%d", &n)    ;
    for (i = 0; i < n; i++)
    {
        scanf_s("%f", &sub[i]);
    }
    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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[100] ;                   // 【错误-01】:把 ave 定义为 int,用于浮点数计算的变量不可以定义为 int
    scanf_s("%d", &n)    ;
    for (i = 0; i < n; i++)
    {
        scanf_s("%f", &sub[i]);
    }
    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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-4 02:07:55 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 13:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表