我制作了以下程序来计算5个数字的和,平均值和标准差。总和是正确的但是平均值是零总是因此SD也是错误的。
#include<stdio.h>
#include<conio.h>
#include<math.h>
int sum(int, int, int, int, int);
float SD(int, int , int, int,int,int);
float mean(int);
int main()
{
int a,b,c,d,e,m;
printf("Enter 5 integers succesively by pressing enter after entering a number.\n");
scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
m=mean(sum(a,b,c,d,e));
printf("\nThe sum is %d , mean is %f and standard deviation is %f",sum(a,b,c,d,e),m,SD(a,b,c,d,e,m));
return 0;
}
int sum(int v, int w, int x, int y, int z)
{
return(v+w+x+y+z);
}
float SD(int v, int w, int x, int y, int z,int mm)
{
float k;
k=sqrt(((mm-v)*(mm-v) + (mm-w)*(mm-w) + (mm-x)*(mm-x) + (mm-y)*(mm-y) + (mm-z)*(mm-z))/5);
return k;
}
float mean(int v)
{
return (v/5);
}
答案 0 :(得分:2)
当你使用除法使用浮点数据类型。在mean()
和SD()
函数中,您按5
进行除法,并且两个操作数均为int
,因此将其中一个更改为浮点数。否则结果将被截断为int
您可以将/5
更改为/5.0
,也可以使用float
类型广告。
由于您将mean
定义为整数0
并使用m
进行打印,因此int
为%f
。
int a,b,c,d,e,m;
printf("\nThe sum is %d , mean is %f and standard deviation is %f",sum(a,b,c,d,e),m,SD(a,b,c,d,e,m));
m
为mean
,因此请将其设为float type variable.
int a,b,c,d,e;
float m;
答案 1 :(得分:0)
将v/5
更改为v/5.
。
由于v
和5
都是int
,因此v/5
是整数除法。您想要进行浮点除法,因此必须使其中一个操作数浮动,而5.
是double
类型的常量。
同样适用于您的SD
功能。