Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 找到无法偿还贷款的确切金额(避免无限循环)_C_Infinite Loop - Fatal编程技术网

C 找到无法偿还贷款的确切金额(避免无限循环)

C 找到无法偿还贷款的确切金额(避免无限循环),c,infinite-loop,C,Infinite Loop,这是我为一个简单的C程序编写的代码,该程序将计算支付的利息 贷款。我对密码没有任何疑问。但我想不出一种方法来找到无法还清贷款的确切付款金额(该金额将导致无限循环)。我只知道金额应该在41.7左右。有没有一个聪明的方法可以做到这一点?多谢各位 #include <stdio.h> #include <stdlib.h> int main() { float p; float i; float temp, ti = 0; int a = 1;

这是我为一个简单的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;
}
#包括
#包括
int main()
{
浮动p;
浮点数i;
浮子温度,ti=0;
INTA=1;
printf(“请输入您的每月付款:”);
scanf(“%f”、&p);
printf(“\n”);
浮点数r=0.25;
浮动b=2000.0;
printf(“r=%.2f\nB=%.1f\nP=%.1f\n\n”,r,b,p);
i=(r/12)*b;
温度=i;
printf(“%d%.2f%.2f\n”,a,i,b);
a++;
而(i>0)
{
i=(r/12)*(b-p+temp);
b=(b-p+temp);
ti+=温度;
温度=i;
printf(“%d%.2f%.2f\n”,a,i,b);
a++;
}
printf(“\n”);
printf(“支付的利息总额:%.2f\n”,ti);
返回0;
}

当每月付款少于每月利息值时,程序将进入无限循环。 在给定的代码中

i = (r/12) * (b - p + temp);
确定无限循环条件

使循环终止

p > temp
p > (r / 12) * b
替换值将给出

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

当每月付款保持不变时,是否有理由需要手动复利?你不能只计算将要增加的利息金额,因为任何低于该利息的付款利率都无法偿还贷款?与问题有什么关系?什么都没有。我只想知道确切的数值,而不是41.7