当我运行代码时,它总是给除以0的输出?

时间:2019-06-13 12:30:13

标签: c

我正在解决加减的黑客排名问题,并遇到除法为0.0000的问题

int main()
{
    int array_size;
    printf("Enter the size of array: \n");
    scanf("%d",&array_size);

    int array [array_size];
    for(int i=0;i<array_size;i++)
    {
        scanf("%d",&array[i]);
    }

    int positive=0;
    int negative=0;
    int zero=0;
    for(int i =0; i<array_size;i++)
    {
        if(array[i]<0)
        {
            negative++;
        }
        if(array[i]>0)
        {
            positive++;
        }
        if(array[i]=0)
        {
            zero++;
        }
    }
    float x = positive / array_size;
    float y = negative / array_size;
    float z = zero / array_size;
    printf("%lf \n",x);
    printf("%lf \n",y);
    printf("%lf \n",z);

    return 1;

}

实际结果:- 0.00000000 0.00000000 0.00000000

预期结果:- 实际的划分...

1 个答案:

答案 0 :(得分:0)

您需要强制浮动。否则,算术转换将仅将整数结果转换为浮点数。

float x = positive / array_size

你想要

float x = (float) positive / array_size

完整的转化算法在ISO 9899, chapter 6.3.1.8 Usual arithmetic conversions

中给出