C - 约翰的得分为5.10,角钱和镍币。如果他有31个硬币有什么可能吗?

时间:2016-10-25 17:06:46

标签: c

约翰在季度,硬币和镍币上有5.10。如果他有31个硬币有什么可能吗?

这是我的代码:

#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

1 个答案:

答案 0 :(得分:1)

5/100和10/100是二进制的周期数,就像1/3是十进制的周期数一样。这意味着不可能将它们完全表示为浮点数。