这是我的代码:
#include <stdio.h>
int main() {
int quarters, dimes, nickels;
for (quarters = 1; quarters <= 31; quarters++) {
for (dimes = 1; dimes <= 31; dimes++) {
for (nickels = 1; nickels <= 31; nickels++) {
if (quarters + dimes + nickels == 31 && quarters * .25 + dimes * .10 + nickels * .05 == 5.10) {
printf("%i quarters, %i dimes, %i nickels \n", quarters, dimes, nickels);
}
}
}
}
}
给出结果:
14 quarters, 15 dimes, 2 nickels
15 quarters, 11 dimes, 5 nickels
17 quarters, 3 dimes, 11 nickels
我的问题是为什么这段代码会提供4个解决方案?
#include <stdio.h>
int main() {
int quarters, dimes, nickels;
for (quarters = 1; quarters <= 31; quarters++) {
for (dimes = 1; dimes <= 31; dimes++) {
for (nickels = 1; nickels <= 31; nickels++) {
if (quarters + dimes + nickels == 31 && quarters * 25 + dimes * 10 + nickels * 5 == 510) {
printf("%i quarters, %i dimes, %i nickels \n", quarters, dimes, nickels);
}
}
}
}
}
结果:
14 quarters, 15 dimes, 2 nickels
15 quarters, 11 dimes, 5 nickels
16 quarters, 7 dimes, 8 nickels
17 quarters, 3 dimes, 11 nickels
答案 0 :(得分:1)
5/100和10/100是二进制的周期数,就像1/3是十进制的周期数一样。这意味着不可能将它们完全表示为浮点数。