2014-01-23 27 views
0

這是我的一個簡單C程序的代碼,它將計算貸款支付的利息 。我對代碼沒有任何問題。但我無法找到一種方法來找到無法還清貸款的確切付款額(該數額將導致無限循環)。我只知道金額應該在41.7左右。有沒有一個聰明的方法來做到這一點?謝謝找到無法還清貸款的確切數額(避免無限循環)

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

int main() 
{ 
    float p; 
    float i; 
    float temp, ti = 0; 
    int a = 1; 

    printf("Please enter your monthly payment: "); 
    scanf("%f", &p); 
    printf("\n"); 

    float r = 0.25; 
    float b = 2000.0; 

    printf("r = %.2f\nB = %.1f\nP = %.1f \n\n", r, b, p); 

    i = (r/12) * b; 
    temp = i; 
    printf("%d %.2f %.2f\n", a, i, b); 
    a ++; 

    while(i > 0) 
    { 
     i = (r/12) * (b - p + temp); 
     b = (b - p + temp); 
     ti += temp; 
     temp = i; 
     printf("%d %.2f %.2f\n", a, i, b); 
     a ++; 
    } 

    printf("\n"); 
    printf("total interest paid: %.2f\n", ti); 

    return 0; 
} 
+1

是否有你需要的時候每月支付是恆定的人工化合物感興趣的原因是什麼?您不能只計算將要增加的利息金額,因爲低於該利息的任何支付率都不會還清貸款? – sqykly

+0

這個問題有什麼'41.7'? – nitish712

+0

什麼都沒有。我只想知道確切的值而不是41.7 – user3226666

回答

1

當月付款低於月利息值時,程序將進入無限循環。 在給定的代碼中,

i = (r/12) * (b - p + temp); 

確定無限循環條件。

對於循環終止

p > temp 
p > (r/12) * b 

代值給出,

p > (0.25/12) * 2000 
p > 41.66 
+0

這個工程!謝謝! – user3226666