计算剩余贷款余额

时间:2015-07-03 14:51:32

标签: c

我正在尝试用C编写一个程序来计算第1,第2和第1之后的剩余余额。根据贷款,每月付款金额和利率,第三次每月付款。我在输入输入(浮点数)时遇到问题,即它只需要一个输入(贷款)&显示答案而不考虑其他2个输入(利率和每月付款)。

仅当我使用浮点数时才会出现此问题(即使在其他程序中也是如此)。我想问这是由于编码还是由于任何其他原因。

我的代码如下:

#include<stdio.h>    
main()    
{    
   float loan,interest,monthly_payment;      
   float balance_Imonth,balance_IImonth,balance_IIImonth;    

   printf("Enter the amount of loan: ");  
   scanf("%.2f",&loan);  

   printf("Enter the amount of interest: ");  
   scanf("%.2f",&interest);  

   printf("Enter the amount of monthly payment: ");  
   scanf("%.2f",&monthly_payment);   

   balance_Imonth=((interest/(100*12))*loan)+(loan)-(monthly_payment);  
   balance_IImonth=((interest/(100*12))*loan)+(balance_Imonth)-  (monthly_payment);  
   balance_IIImonth=((interest/(100*12))*loan)+(balance_IImonth)-(monthly_payment);  

   printf("Balance remaining after I payment:   $%.2f\n",balance_Imonth);  
   printf("Balance remaining after II payment:  $%.2f\n",balance_IImonth);  
   printf("Balance remaining after III payment: $%.2f\n",balance_IIImonth);  
}    

1 个答案:

答案 0 :(得分:3)

格式规范"%.2f"适用于printf,但不适用于scanf。仅使用"%f"

在您的程序中,所有scanf函数调用都失败。由于使用了未初始化的变量,您只是看到未定义的行为。

在继续使用scanf存储结果的变量之前,请务必检查scanf的返回值,以确保操作成功。

使用

if ( scanf("%f", &loan) != 1 )
{
  // Deal with error.
}