为什么我的C程序在这里打印0.000000?

912*_*34K 4 c floating-point

我刚开始学习C编程.在我的书中有这段代码:

/*Code Start*/
/*This code is use to find the simple interest*/

main ()
{
int p, n;
float r, si;

p = 1000;
n = 3;
r = 8.5;

si= p*n*r/100;
printf("%f", si);

}

/*Code end*/
Run Code Online (Sandbox Code Playgroud)

我得到的输出是"255.000000"

我虽然我会用scanf函数修改它所以我写了这个:

/*Code Start*/

main ()
{
int p, n;
float r, si;

printf("Enter value for p: \n");
scanf("%d", &p);
printf("Enter value for n: \n\n");
scanf("%d", &n);
printf("Enter valuse for r: \n\n");
scanf("%d", &r);

si= p*n*r/100;

printf("\nYour Simple Interest is %f\n\n", si);
}

/*Code End*/
Run Code Online (Sandbox Code Playgroud)

无论我给p,n,r给出什么值,我得到的答案总是0.000000 ..
我也尝试给出值,p = 1000,n = 3,r = 8.5但仍然得到0.000000 ..

cni*_*tar 6

更改中的说明符scanf.您正在使用%d而不是%f:

scanf("%f", &r);
        ^
Run Code Online (Sandbox Code Playgroud)
  • 第一面注意:代码看起来很糟糕(没有返回类型main?!).你确定这是一本好书吗?
  • 第二方注意:float今天使用s有点无意义.也许你应该使用doubles?