C程序陷入无限循环

C程序陷入无限循环,c,while-loop,infinite-loop,C,While Loop,Infinite Loop,我一直面临的问题是,我的代码要么陷入无限循环,要么出现堆栈溢出问题,并在计算过程中开始产生负数 我知道这个问题来自于我的while循环,并且认为问题可能在于我使用的公式,即行I=(r/12)*(b-p+temp) 然而,我不确定如何解决这个问题。我的公式是计算12个月内每月固定利息贷款的利息,并将其与剩余余额一起打印到屏幕上。这应该一直持续到余额达到0 #include <stdio.h> // main function int main() { // variable

我一直面临的问题是,我的代码要么陷入无限循环,要么出现堆栈溢出问题,并在计算过程中开始产生负数

我知道这个问题来自于我的while循环,并且认为问题可能在于我使用的公式,即行
I=(r/12)*(b-p+temp)

然而,我不确定如何解决这个问题。我的公式是计算12个月内每月固定利息贷款的利息,并将其与剩余余额一起打印到屏幕上。这应该一直持续到余额达到
0

#include <stdio.h>

// main function
int main()
{
    // variable declarations
    float r = 0.22;   // interest rate
    float b = 5000.0; // amount borrowed
    float p;          // payment amount
    int   m = 1;
    float temp, ti = 0;
    float i;

    // Take in data from user
    printf("Please enter the amount you wish to pay monthly: \n");
    scanf("%f", &p);
    printf("\n");

    //display interest rate, initial balance, monthly payment
    printf("r = %.2f\nb = %.1f\np = %.1f \n\n", r, b, p);

    // Month by month table showing month interest due/paid and remaining balance
    i = (r / 12) * b;
    temp = i;
    printf("%d %.2f %.2f\n", m,i,b);
    m++;

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

    return 0;
}
#包括
//主要功能
int main()
{
//变量声明
浮动利率r=0.22;//利率
浮动b=5000.0;//借款金额
float p;//支付金额
int m=1;
浮子温度,ti=0;
浮点数i;
//从用户接收数据
printf(“请输入您希望每月支付的金额:\n”);
scanf(“%f”、&p);
printf(“\n”);
//显示利率、初始余额、每月付款
printf(“r=%.2f\nb=%.1f\np=%.1f\n\n”,r,b,p);
//显示每月到期/支付利息和剩余余额的逐月表
i=(r/12)*b;
温度=i;
printf(“%d%.2f%.2f\n”,m,i,b);
m++;
而(i>0){
i=(r/12)*(b-p+temp);
b=(b-p+temp);
ti+=温度;
温度=i;
printf(“%d%.2f%.2f\n”,m,i,b);
m++;
}
printf(“\n”);
printf(“支付的利息总额:%.2f\n”,ti);
返回0;
}

程序按预期工作。
唯一的问题是,如果你每月的付款少 比利率高-然后是你需要偿还的金额 指数增长,程序永不停止

输入任意数字>=
92
,它似乎可以工作


22%的年利率正确吗?

该程序按预期运行。
唯一的问题是,如果你每月的付款少 比利率高-然后是你需要偿还的金额 指数增长,程序永不停止

输入任意数字>=
92
,它似乎可以工作


22%的年利率正确吗?

好吧,如果我的计算正确的话,如果你输入的p值小于91.67,你就会陷入一个无限循环,因为每月支付的金额小于债务的利息;因此,您可能需要添加一个检查

另外,如果将变量命名为Interest、Base等,则不需要注释,代码也更易于阅读


另外,由于你要打印付款信息直到余额为零,你应该在b>0时循环。

好吧,如果我做得正确,那么如果你输入的p值小于91.67,你就会陷入无限循环,因为每月付款少于债务的利息;因此,您可能需要添加一个检查

另外,如果将变量命名为Interest、Base等,则不需要注释,代码也更易于阅读


另外,由于您要打印付款信息直到余额为零,因此您应该在b>0时循环。

我不认为这会产生无限循环,但如果您的还款高于到期利息,这将成为一个问题,您的起始参数意味着低于91.67


您可能有一个错误的结束条件,因此始终会打印一条负行。

我不认为这会产生一个无限循环,但如果您的还款高于到期利息,这将成为一个问题,您的起始参数意味着低于91.67


您可能有一个错误的结束条件,所以总是有一个负行打印,尽管如此。

请务必提及您试图通过公式实现的目标。更新以包含该信息。如果您解释变量
i
是什么,那将很好。请务必提及您试图通过公式实现的目标。更新以包含该信息。如果您解释变量是什么,那将很好
i
是。“唯一的问题是,如果你每月支付的金额低于利率,那么你需要偿还的金额就会成倍增长,程序永远不会停止。”就像现实生活一样:)“唯一的问题是,如果你每月支付的金额低于利率,那么你需要偿还的金额就会成倍增长,而且这个计划永远不会停止。”