我正在尝试用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);
}
答案 0 :(得分:3)
格式规范"%.2f"
适用于printf
,但不适用于scanf
。仅使用"%f"
。
在您的程序中,所有scanf
函数调用都失败。由于使用了未初始化的变量,您只是看到未定义的行为。
在继续使用scanf
存储结果的变量之前,请务必检查scanf
的返回值,以确保操作成功。
使用
if ( scanf("%f", &loan) != 1 )
{
// Deal with error.
}