我一直得0作为这个变量的值

时间:2017-02-22 20:50:41

标签: c calculator

我正在尝试编写这个程序来计算存款的简单利息。它应该将利息金额加到原始存款上。

但是它一直在变量“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);

}

1 个答案:

答案 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,F double参数表示浮点数