-1

这是我在 Bjarne Stroustrup 的编程原理和 C++书中为练习编写的解决方案的尝试。不幸的是,我写的从输入的硬币中给出总金额的部分没有按照我的意愿工作!

一个快速的回答,我将非常感激,但如果有人也有时间他们可以帮我介绍一些基本的错误检查吗?

我希望它工作的方式是在需要用户输入之后(例如,你有多少 20p?),检查用户是否输入了int. 如果没有,请提供一个微妙的错误消息并有机会重复相同的问题,而不是停止程序或从头开始程序!

#include "../../std_lib_facilities.h"

int main() {
int one, ten, twenty, fifty, one_pound, two_pound;
double amount;
amount = (one * 0.01) + (ten * 0.1) + (twenty * 0.2) + (fifty * 0.5) + one_pound + (two_pound * 2);
cout << "Welcome to the change counter app!\nHow many 1p's do you have?\n";
cin >> one;
cout << "How many 10p's do you have?\n";
cin >> ten;
cout << "How many 20p's do you have?\n";
cin >> twenty;
cout << "How many 50p's do you have?\n";
cin >> fifty;
cout << "How many £1 coin's do you have?\n";
cin >> one_pound;
cout << "How many £2 coin's do you have?\n";
cin >> two_pound;
cout << "You have: " << one << " 1p coins!\n"
    << "You have: " << ten << " 2p coins!\n"
    << "You have: " << twenty << " 20p coins!\n"
    << "You have: " << fifty << " 50p coins!\n"
    << "You have: " << one_pound << " £1 coins!\n"
    << "You have: " << two_pound << " £2 coins!\n"
    << "The total amount of money you have is: " << amount << "\n";
}
4

1 回答 1

0

你有两个问题:

第一个是在没有循环的情况下,代码从上到下运行。这意味着您在读取输入amount 之前进行计算。

第二个问题是,当您计算时amount(当前,在错误的地方),您在初始化之前one使用变量、ten等。未初始化的局部变量将具有不确定的值,使用它们将导致未定义的行为

这两个问题的简单解决方案是在读取输入之后写入输出之前将计算移至amount

于 2017-02-09T13:37:06.793 回答