C ++程序只执行第一个“if”语句

时间:2016-03-07 08:10:17

标签: c++

我正在写一个处理贷款的程序。问题是它只读取第一个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");
}


}

4 个答案:

答案 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")