【发布时间】:2012-11-11 12:19:29
【问题描述】:
我正在尝试计算p1=(1/1)*(1/2)*...*(1/n),但出了点问题,printf 给了我0.000...0
#include <stdio.h>
int main(void) {
int i,num;
float p3;
do {
printf ("give number N>3 : \n" );
scanf( "%d", &num );
} while( num <= 3 );
i = 1;
p3 = 1;
do {
p3=p3*(1/i);
printf( "%f\n",p3 );
} while ( i <= num );
printf("\nP3=%f",p3);
return 0;
}
【问题讨论】:
-
p3*(1/i)中的除法是整数除法。请改用p3 * (1.0 / i)。哦...并使用double而不是float作为您的浮点数。 -
第二个循环不是无限的吗?它等待在
i和num上满足条件,但它不会改变其中任何一个。 -
对不起,我没有复制整个代码
-
改用
p3 /= i;怎么样? ;-)
标签: c floating-point integer floating-point-conversion