我遇到些小困难,这使我很生气。有人可以帮我吗? 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;
}
很抱歉让大家感到困惑。其他一切都很好,我试图弄清楚为什么程序在运行时不接受两个以上的值。 我输入了三个值。但是只接受两个:
答案 0 :(得分:3)
您真正的意思是:为什么我只得到最后一次输入的结果,为什么它是给定输入的2倍?
如果您在每次运行中使用不同的数字进行评估:(3,60)(4,80)(5,50),您将获得(10,100)。
原因是您每次经过“循环”时都会覆盖boo
和pri
,而boo += boo
和pri += 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被认为是非常糟糕的代码设计。