如何将此功能转换为更好的循环形式?

时间:2019-04-21 17:25:10

标签: c function loops cs50

所以我的问题出在CS50哈佛课程第一周的problem set 1。任务是编写一个程序,该程序计算找零时可能的最小硬币数量。我已经编写了该程序并且可以运行,但是我想知道是否有人可以告诉我如何进一步改善计算硬币数量的功能。它基本上是相同的代码行,复制并粘贴了4次,只是更改了其中的硬币值(25、10、5、1)。谁能帮助我将其转换为某种循环,因为尽管复制和粘贴有效,但对我来说感觉还是很不好。

int calculate_coins(int change)
{
    //Count coins from 0
    int n = 0;

    //How much 25s can be used? 
    n += change / 25;
    //Calculate remaining change
    change %= 25;

    n += change / 10;
    change %= 10;

    n += change / 5;
    change %= 5;

    n += change / 1;
    change %= 1;

    return n;
}

1 个答案:

答案 0 :(得分:0)

如果我想在其他任何地方使用它,我会将该数组设置为全局数组。除此之外,我同意。

int value[] = { 25, 10, 5, 1 }; //global array

int calculate_coins(int change)
{
    for (int i = 0; i < 4; i++) 
    {
        n += change / value[i];
        change %= value[i];
    }

    return n;
}