0

这个学期我要上我的第一堂编程课,但我不知道我的程序发生了什么。我必须编写一个程序,计算这么多年后有利息的总金额。公式为 y=p*(1+r)^n

无论如何,每当我运行我的代码时,它都会出现“ _已停止工作”并关闭。

这是我的代码:

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

int main (void)
{
    double p, r, n, y; 

    printf("Enter the interest rate>");
    scanf("%lf", r);
    printf("Enter the principle amount of money invested>");
    scanf("%lf", p);
    printf("Enter the number of years invested>");
    scanf("%lf", n);

    y = pow(p*(1+r),n);

    printf("The total amount of money is %f.\n", y);

    system("PAUSE");
    return (0);
}

我试过用谷歌搜索它,似乎它可能与“初始化”有关,但我不确定这意味着什么或如何去做。任何帮助是极大的赞赏!

4

2 回答 2

0

此代码是在 linux 平台上编写和测试的。

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

int main (void)
{
    double p, r, n, y, value; 
    int a = 3, b = 2;

        printf("Enter the interest rate>");
        scanf("%lf", &r);
        printf("Enter the principle amount of money invested>");
        scanf("%lf", &p);
        printf("Enter the number of years invested>");
        scanf("%lf", &n);
    value = p * (r + 1);
    y = pow(value, n);
        printf("The total amount of money is %f.\n", y);

        //system("PAUSE"); 
        return (0);
}

在 linux 中编译这段代码,

gcc code.c -lm

我不知道为什么,即使我添加了#include,我也被迫在编译时包含-lm。任何人都可以随时更新这个答案。

更新。

请参阅此答案,了解为什么我们必须使用 -lm Undefined reference to 'pow' 即使 -lm 是一个编译标志。[C]

于 2013-09-19T10:04:24.030 回答
0

首先,scanf() 函数需要变量的地址而不是变量本身,所以应该像这样使用它scanf("%lf", &r);试试,你会没事的

其次,永远不要使用system("PAUSE")!它是特定于平台的(Windows)并且是错误的系统(“暂停”);- 为什么错了?

您正在使用 system(PAUSE) 以错误的方式学习编程,在上面的链接中您可以看到原因!

于 2013-09-19T08:29:38.103 回答