我正在写一个处理贷款的程序。问题是它只读取第一个if
语句,然后执行读取"("Thank you,your loan is being processed")"
的程序的最后一句话我该如何纠正?它会跳过评估用户输入的部分。这是代码。
#include<stdio.h>
#include<sstream>
#include<iostream>
#include <conio.h>
#include <string.h>
using namespace std;
int main() {
char landtitle[100];
char Asset[100];
//std::string Asset;
float NumberPlate;
float Year;
char L[100];
char t[100];
float amount;
float logbook;
float block;
float PlotNumber;
//float InterestRate;
float LoanAmount;
//LoanAmount = amount * (1+(15/100))*(1+(15/100));
//printf("Amount to be paid after one month is %f",LoanAmount);
printf("Enter amount you want to borrow");
printf("\nWe wil need an asset for any amount greater than 3M:");
scanf("%d",&amount);
if ( amount > 3000000)
{
printf("Please choose Asset(use L for logbook or T for title");
//getline(cin,Asset);
gets(Asset);
//cin.ignore();
if (Asset == "L")
{
printf("\nPlease enter logbook number :");
scanf("%f",&logbook);
printf("\nPlease enter car Number plate :");
scanf("%f",&logbook);
printf("\nPlease enter Year of manufacture :");
scanf("%f",&logbook);
//printf("Thank you,your loan is being processed");
}
else
{
printf("\nPlease enter Land title :");
gets(landtitle);
printf("\nPlease enter Block :");
scanf("%f",&block);
printf("\nPlease enter Plot Number :");
scanf("%f",&PlotNumber);
//printf("Thank you,your loan is being processed");
}
}
else
{
printf("Thank you,your loan is being processed");
}
}
答案 0 :(得分:0)
scanf("%d",&amount);
您希望以浮动而非整数形式扫描,因此您需要%f
答案 1 :(得分:0)
将数组中的字符串与字符串文字进行比较时,例如
Asset == "L"
然后数组衰减到指向其第一个元素的指针,同样的事情发生在字符串文字"L"
上。然后比较是在指针之间,而不是它们指向的实际字符串。这种比较永远不会成真。
要比较C ++中的字符串,您应该使用std::string
,然后您可以使用简单的==
来实现相等。
如果您想继续使用C风格的字符串(即char
的数组),则需要使用strcmp
函数。
答案 2 :(得分:0)
您的金额是浮动的,但您尝试使用整数读取。
所以会转换成另一个数字。
答案 3 :(得分:0)
字符串(字符串数组)无法通过C / C ++中的<object>
符号进行比较。所以当你写==
时,它实际上会比较分配给它的地址数组(数组的名称指向数组中的第一个元素)在内存中对于两个不同的数组永远不能相等,因此条件总是为假。
只需更改此行
即可if (Asset == "L")
到
if (Asset == "L")