我正在解决加减的黑客排名问题,并遇到除法为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
预期结果:- 实际的划分...
答案 0 :(得分:0)
您需要强制浮动。否则,算术转换将仅将整数结果转换为浮点数。
float x = positive / array_size
你想要
float x = (float) positive / array_size
完整的转化算法在ISO 9899, chapter 6.3.1.8 Usual arithmetic conversions
中给出