我正在尝试编写这个程序来计算存款的简单利息。它应该将利息金额加到原始存款上。
但是它一直在变量“rate”0这就是为什么当我运行它时,结果为0.任何帮助都是值得赞赏的。
#include <stdio.h>
int main(void){
double d;
double rate;
double y;
double final;
int x;
printf("Enter the deposit: ");
scanf("%d", &d);
printf("Enter the interest rate (0-100): ");
scanf("%d", &rate);
printf("Enter the number of years: ");
scanf("%i", &x);
rate = rate / 100;
y = d * rate * x;
final = d + y;
printf("After %i number of years, the deposit in the savings account is now %d", x, rate);
}
答案 0 :(得分:7)
对于double
变量,您需要使用说明符%lf
:
scanf("%lf", &d);
rate
:
scanf("%lf", &rate);
C99 7.19.6.2 p 11 (fscanf
)
l
(ell)(...)跟随a,A,e,E,f
,F,g或G转换 说明符适用于参数,类型为指针为double ;
正如@WeatherVane在评论中指出的那样,您需要为相应的参数提供正确的转换说明符,否则程序的行为将是未定义的:
C99 7.19.6.1 p 9(fprintf
)
如果转换规范无效,则行为为 undefined .248)如果任何参数 不是正确的类型 相应的转换规范,行为未定义。
对于printf()
,参数rate
应具有转化说明符%f
:
printf("After %i number of years, the deposit in the savings account is now %f", x, rate);
C99 7.19.6.1 p 8 (fprintf
)
f
,Fdouble
参数表示浮点数