c - 如何将此函数转换为更好的循环?
问题描述
所以我的问题是在CS50 哈佛课程第 1 周的问题集 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;
}
解决方案
如果我想在其他任何地方使用它,我会将数组设为全局。除此之外我同意。
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++ - 如何在 C++ 中获取相机的序列号?
- c# - Bot 在 OAuthPrompt 之后仍在等待
- asp.net - 有时在 /signin-oidc 上出现 404
- c# - 使用 foreach asp.net mvc 5 避免重复
- typescript - 在打字稿nodejs应用程序中导入变量时无法解析本地模块
- events - Outlook 插件:删除日历事件
- java - 在 Jackson 中传递 null 时使用字段的默认值
- html - 从 :hover 元素移动锚点后隐藏列表
- kotlin - 我应该在声明、初始化块、构造函数还是后期初始化时初始化变量?
- node.js - NodeJS 和 Excel 中的登录系统