您如何计算不同利率贷款的利息?

时间:2015-01-26 02:10:35

标签: c if-statement calculator

我认为很明显我不明白。如何告诉C中的计算机决定哪个是合适的利率,然后计算并显示它。这是我能想到的最好的,明天我必须把它作为一项任务。我不知道这会很难。

#include <stdio.h>
int main (void)
{
    float time;
    float principal;
    char response[15];
    float rate1, rate2,rate3,rate4;
    rate1=.04,rate2=.05,rate3=.06,rate4=.07;

    float SimpleInterest1;
    float SimpleInterest2;
    float SimpleInterest3;
    float SimpleInterest4;

    SimpleInterest1=principal*time*rate1;
    SimpleInterest2=principal*time*rate2;
    SimpleInterest1=principal*time*rate3;
    SimpleInterest2=principal*time*rate4;


    printf("Please enter principal\n");
    scanf ("%f",&principal);
    printf ("Please enter time\n");
    scanf ("%f",&time);

    if (principal <= 5000)
{

    printf ("%f",&SimpleInterest1);
}
    printf ("Do you still want the loan?\n");
    scanf ("%s",response);

    return 0;
}

2 个答案:

答案 0 :(得分:2)

正如已经说过的那样:不要忘记使用principalscanf

然后,使用if-else if-else-statements来了解principal所在的区间。 然后,在每个语句中,将interest分配给正确的值。

然后在计算兴趣之前将time分配给正确的值(如果必须,可以scanf)。

另外,检查每年是否必须重新计算利息 新债。如果是这种情况,那么公式应该是 debt = principal * (1 + rate)^time。 您可以#include <math.h>使用计算浮点数或双精度的pow函数。

然后只是printf("%f", debt);

Aparté酒店: Michael Overton的书“使用IEEE算术进行数值计算”第82-86页很好地解释了如何使用稳定算法计算复合兴趣,因为使用pow计算它的 naive 方法可以涉及精度的损失。

答案 1 :(得分:0)

首先,这两行可能是拼写错误:

SimpleInterest1=principal*time*rate3;
SimpleInterest2=principal*time*rate4;

他们应该成为这个:

SimpleInterest3=principal*time*rate3;
SimpleInterest4=principal*time*rate4;

接下来,如果您询问i / o(输入/输出),那么这是一个基本的运行:

您使用printf( char *format, ...)输出信息。

您使用scanf( char *format, ...)进行基本输入。

格式是以下之一(这是基础):

%s : Argument is expected to be of type char*
%i : Argument is expected to be signed int
%f : Argument is expected to be float (use also for double in printf)
%u : Argument is expected to be unsinged int.

使用scanf时,应检查返回值并清除输入缓冲区,示例如下:

void clear_buffer() {
  // Note that ch is int not char, this is important
  int ch;
  while( (ch = getchar()) != EOF && ch != '\n');
}

int answers = 0;
float value = 0.0;
do {
  // Scanf returns the recieved number of args that fit the format string
  answers = scanf( "%f", &value );
  clear_buffer();
  if (answers == 0) {
    continue;
  }
} while (value > -0.1 && value < 0.1);

以上可能不起作用,因为我主要使用无符号整数,但它至少应该提供一个良好的基础。

你使用if ... else if .... else来确定要使用的公式。

最后,你应该在得到时间和主要值之后计算SimpleInterest; c解析器不能'看到未来'