我刚开始学习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*/
我得到的输出是“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*/
无论我给p,n,r给出什么值,我得到的答案总是0.000000 ..
我也试过给出值,p = 1000,n = 3,r = 8.5但仍然得到0.000000 ..
答案 0 :(得分:6)
更改scanf
中的说明符。您使用%d
代替%f
:
scanf("%f", &r);
^
main
没有返回类型?!)。你确定它是一本好书吗?float
是毫无意义的。可能是你
应该使用double
s?答案 1 :(得分:4)
使用%f
转化规范阅读float
:
scanf("%f", &r);
%d
表示它读取十进制整数而不是float
。
答案 2 :(得分:4)
r
是float
,但您正在使用%d
作为scanf
说明符进行阅读,该说明符需要int
。
答案 3 :(得分:4)
首先,您的主要问题是:%d
说明符仅适用于整数,不是 float
或double
。将%f
用于float
s。
此外,main
应该返回int
,这样做:
int main() {
/* your code */
return 0;
}
最后,我建议您更好地利用空白区域,因为一旦您开始制作更大的程序,它将极大地提高可读性。
答案 4 :(得分:0)
代码中真正的罪魁祸首是scanf("**%d**", &r)
行。
%d
是整数值的格式说明符,因为您将r声明为float,然后使用%f
而不是%d
。
即。 scanf("%f", &r)
答案 5 :(得分:0)
改变任何一个 int p,n; 漂浮r,si; 至 int p,n,r; 浮动;
或更改 scanf中的格式说明符("%d",& r); %d 至%f 。
当你将r声明为整数 r = 8 时,将考虑scanf("%d",& r);将被接受。并且你的程序被编译和执行。
声明和格式说明符应该相同。
我的建议是在处理钱时使用%。2f 。这将是10.00这是正确的格式。