变量不接受超过3个输入

时间:2020-10-07 07:47:13

标签: c++

我遇到些小困难,这使我很生气。有人可以帮我吗? int boo(书籍)和double pri(价格)都不接受两个以上的输入。预先感谢。

#include <iostream>
#include "Customer.h"
using namespace std;

int main()
{
    int id;
    int boo;        //books
    double pri;     //price
    char i;
    
    a:
    cout << "Enter number of books: ";
    cin >> boo;
    cout << "Enter total amount: $";
    cin >> pri;
    boo += boo;
    pri += pri;
    cout << endl;
    
    cout << "Would you like to purchase more books?" << endl;
    cout << "Enter 'y' to continue. Enter 'n' to terminate: ";
    cin >> i;
    cout << endl;
    boo += boo;
    pri += pri;
    if (i == 'y' && 'Y')
    {
        goto a;
    }
    else
    {
        CT.Disp();
    }
    
    return 0;
}

很抱歉让大家感到困惑。其他一切都很好,我试图弄清楚为什么程序在运行时不接受两个以上的值。 我输入了三个值。但是只接受两个:

Console Log

2 个答案:

答案 0 :(得分:3)

您真正的意思是:为什么我只得到最后一次输入的结果,为什么它是给定输入的2倍?

如果您在每次运行中使用不同的数字进行评估:(3,60)(4,80)(5,50),您将获得(10,100)。

原因是您每次经过“循环”时都会覆盖boopri,而boo += boopri += pri只会使变量内容翻倍,如所述在对您的问题的评论中。

上面也做了一般性评论:如果可以,请避免使用goto,这会造成混淆。在这种情况下,使用while-loop更有意义。

请尝试查看下面的程序以及它与您的程序有何不同。 它将为您提供您期望的数字。

#include <iostream>

int main(void)
{
    int total_num_books = 0;
    double total_price = 0.0;
    char i = 'y';

    while (i != 'n')
    {
        int num_books;
        double price; 
        std::cout << "Enter number of books: ";
        std::cin >> num_books;
        std::cout << "Enter total amount: $";
        std::cin >> price; 
        
        total_num_books += num_books;
        total_price += price;

        std::cout << "Would you like to purchase more books?" << std::endl
                  << "Enter 'y' to continue. Enter 'n' to terminate: ";
        std::cin >> i;
    }

    std::cout << "Number of books: " << total_num_books
              << " total price: " << total_price << std::endl;
    return 0; 
}
    

答案 1 :(得分:1)

您需要另一个变量。此行发生的那一刻:

cin >> boo;

您正在将新值写入boo。它不会添加到boo中。您认为它获得2个值的原因是因为:

boo += boo;

有效:

boo = boo + boo;

要修复代码,您需要一个从cin获取值的花药变量,然后将其添加到boo:

int bIn;
cin >> bIn;

boo += bIn;

我还建议您用某种循环替换goto,因为goto被认为是非常糟糕的代码设计。