意味着在C中出现零

时间:2014-04-19 05:20:02

标签: c casting type-conversion

我制作了以下程序来计算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);
}

2 个答案:

答案 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));

mmean,因此请将其设为float type variable.

int a,b,c,d,e;
float m;

答案 1 :(得分:0)

v/5更改为v/5.

由于v5都是int,因此v/5是整数除法。您想要进行浮点除法,因此必须使其中一个操作数浮动,而5.double类型的常量。

同样适用于您的SD功能。