我的代码的最后一部分似乎没有运行
#include <iostream>
#include <cmath>
int main() {
int dollars;
int cents;
std::cout << "Please enter your amount in the format of dollars and cents separated by a space: ";
std::cin >> dollars >> cents;
double quarters = dollars/0.25;
int whole_quarters = (int) quarters;
double dimes = cents/10;
int whole_dimes = (int) dimes;
double nickels = (dimes - whole_dimes)/0.5;
int whole_nickels = (int) nickels;
int pennies = std::fmod((dimes - whole_dimes),0.5);
std::cout << dollars << " dollars and " << cents << " cents are:\n";
std::cout << whole_quarters << " quarter " << whole_dimes << " dimes " << whole_nickels << " nickels " << pennies << " pennies ";
return 0;
}
我输入了2 58,但输出结果为8个季度5个角钱0个镍币0个便士 应该是1个镍币和3个便士 有人可以告诉我我想念什么吗?
答案 0 :(得分:1)
更好的答案是10个季度,1个小节,3个便士。就是那样。
我不会使用这种特定算法,尽管扫描它并不能告诉我明显的问题。我会通过抛弃角钱(双精度)并验证它是否符合您的想法进行调试,然后刻痕(双精度)并确保该值也有意义。
我会做这样的事情:
int dimes = cents / 10;
int nickles = (cents % 10) / 5;
int pennies = (cents % 5);
如果分是58,则点数= 5,分%10是8,除以5是1,分%5是3。
但是,如果您对编程很认真,那么值得在代码中放入大量cout语句,并确保值正在变成您认为的样子。
此外,如果您不注释输入内容而将代码注释掉并对测试数据进行硬编码,则这样做会更快。通过这种方式获得适当的测试结果后,请切换回要求输入。