C - 简单的数学论证不起作用?

时间:2015-01-23 04:11:53

标签: c math.h

我只是想用一个相对简单的公式来计算10年的金额。我可以输入所有变量,但我怀疑我对amount做错了。

#include <stdio.h>
#include <math.h>

int main(){
    double amount; /* amount on deposit */
    double principal; /* what's the principal */
    double rate; /* annual interest rate */
    int year; /* year placeholder and no. of total years */
    int yearNo;

    printf("What is the principal? ");
    scanf("%d", &principal);
    printf("What is the rate (in decimal)? ");
    scanf("%lf", &rate);
    printf("How many years? ");
    scanf("%d", &yearNo);

    printf("%4s%21s\n", "Year", "Amount on deposit");

    /* calculate the amount on deposit for each of ten years */
    for (year = 1; year <= yearNo; year++ ){
        amount = principal * pow(1.0 + rate, year);
        printf("%4d%21.2f\n", year, amount);
    }
    return 0;
}

我是C的新手,但我正在读一本书中的例子。这本书“硬编码”这些数字,我试图学习如何使用用户的输入来计算数据。

我是否正确地认为这是我的amount或我最后使用%f如何引用它?

感谢您的任何想法:)

1 个答案:

答案 0 :(得分:2)

使用scanf()系列函数,%d适用于int%lf适用于double

要做的第一件事是确保您的编译器已启用警告。有些编译器(GCC,Clang)会报告格式错误。

接下来要做的是打印您阅读的值。当你看到垃圾出来时你刚读到的价值,你知道那里有问题。

然后,检查转换是否成功:

if (scanf("%lf", &principal) != 1)
    …oops! input error or EOF…