c - 如何将此函数转换为更好的函数(例如循环)?

标签 c function loops cs50

所以我的问题在 problem set 1 CS50 哈佛类(class)第一周。该任务是编写一个程序,计算找零时可能的最小硬币数量。我已经编写了该程序并且它可以工作,但我想知道你们是否可以告诉我如何进一步改进我计算硬币数量的功能。它基本上是将相同的代码行复制并粘贴 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;
}

最佳答案

我会将数组设置为全局数组,以防我想在其他地方使用它。除此之外我同意。

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;
}

关于c - 如何将此函数转换为更好的函数(例如循环)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55785038/

相关文章:

java - 使用java解密OpenSSL加密数据

在 C 中的线程内定期调用函数

javascript - 使用 javascript for 循环动态加载多个 <li> - 尚未加载任何内容

c - C语言中如何按属性对对象进行排序

C 从周长找出三角形所有可能的边

c - 将文本信息附加到文本文件的某个位置而不覆盖旧信息 (C)

python - 回调函数在实例中看不到正确的值

PHP 类具有来自 Traits 的冲突构造函数定义

c - 为什么 BSS 中静态数组的第二个循环比第一个更快?

c - 将 FTDI 的 D2XX 与 C 一起使用