本学期我正在修读我的第一个编程课程,我无法弄清楚我的程序是怎么回事。我必须编写一个程序来计算这么多年后有兴趣的总金额。公式为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);
}
我试过谷歌搜索它似乎可能与“初始化”有关,但我不确定这意味着什么或如何做到这一点。非常感谢任何帮助!
答案 0 :(得分:0)
首先,scanf()函数需要变量的地址而不是变量本身,所以它应该像scanf("%lf", &r);
一样使用试试看,你会没事的
其次从不使用system("PAUSE")
!!
它是特定于平台的(窗口),它是错误的system("pause"); - Why is it wrong?
您正在学习使用系统(PAUSE)以错误的方式进行编程,在上面的链接中您可以看到原因!
答案 1 :(得分: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' even though -lm is a compile flag. [C]