刚刚学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 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;
} {:5_102:}
页:
[1]