使用c mod运算符计算硬币面额

时间:2013-04-16 17:30:12

标签: c operator-keyword modulus

我已经被教会如何使用c中的mod运算符来计算硬币面额的变化,例如:如果给出22美元,需要算出多少10美元,5美元,2美元和1美元弥补22然后:

22/10 = 2 of $10
22%10 = 2
Therefore since only $2 left:
2/5 = 0
2%5 = 2
2/2 = 1 of $2
2%2 = 0 
So 2 $10 and 1 $2.

我的问题是,我怎么能把它写成代码才能使它适用于任何给定量的变化?我仍然是初学者,所以我遇到了一些困难。感谢您的帮助,谢谢。

1 个答案:

答案 0 :(得分:3)

因此,如果纸币/硬币的最大价值是10美元(对不起,如果这听起来微不足道,但我不是美国公民):

int vals[] = { 10, 5, 2, 1 };
int amount = 22;

for (int i = 0; i < sizeof(vals) / sizeof(vals[0]); i++) {
    printf("%d piece of $%d\n", amount / vals[i], vals[i]);
    amount %= vals[i];
}