C 如何将此函数转换为更好的循环?

C 如何将此函数转换为更好的循环?,c,function,loops,cs50,C,Function,Loops,Cs50,所以我的问题是在CS50哈佛课程的第一周。任务是编写一个程序,计算得到零钱时可能的最小硬币数量。我已经编写了这个程序,它可以运行了,但我想知道你们中是否有人可以告诉我如何进一步改进我的计算硬币数量的函数。它基本上是相同的代码行复制和粘贴了4次,只是改变了里面的硬币价值(25,10,5,1)。有人能帮我把它转换成某种循环吗,因为尽管复制和粘贴是有效的,但看着我感觉有点糟糕 int calculate_coins(int change) { //Count coins from 0

所以我的问题是在CS50哈佛课程的第一周。任务是编写一个程序,计算得到零钱时可能的最小硬币数量。我已经编写了这个程序,它可以运行了,但我想知道你们中是否有人可以告诉我如何进一步改进我的计算硬币数量的函数。它基本上是相同的代码行复制和粘贴了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;
}
int值[]={25,10,5,1}//全局数组
整数计算硬币(整数变化)
{
对于(int i=0;i<4;i++)
{
n+=变化/值[i];
变化%=值[i];
}
返回n;
}

如果您感兴趣,还有一个问题。@pmg感谢您提供的信息!你能解释一下你使用的是哪种代码以及为什么吗?感谢您的快速响应。按照您的要求,使用循环对类似代码进行分组。相似代码行之间的差异只是一个值;所以我把这些值放在一个数组中,然后依次循环这些值。