如何在C语言中创建自动换货机

如何在C语言中创建自动换货机,c,cs50,C,Cs50,我是编程新手。我一直在努力创造一种东西,它能让我在特定的美元数量下,获得所需的最小美元硬币数量。例如,16美分所需的最低硬币数量为3(10+5+1) #包括 #包括 #包括 浮动获得正变化(无效); 内部主(空) {//得到所欠的美元金额 浮动变化=获得正变化(); //将浮点取整为整数 整数分=四舍五入(变化*100); //初始化硬币计数器(需要时) 用于(整数i=0;美分=25) { 美分=美分-25美分; } 否则,如果(美分>=10) { 美分=美分-10美分; } 否则,如果(美分>

我是编程新手。我一直在努力创造一种东西,它能让我在特定的美元数量下,获得所需的最小美元硬币数量。例如,16美分所需的最低硬币数量为3(10+5+1)

#包括
#包括
#包括
浮动获得正变化(无效);
内部主(空)
{//得到所欠的美元金额
浮动变化=获得正变化();
//将浮点取整为整数
整数分=四舍五入(变化*100);
//初始化硬币计数器(需要时)
用于(整数i=0;美分<0;i++)
{
如果(美分>=25)
{
美分=美分-25美分;
}
否则,如果(美分>=10)
{
美分=美分-10美分;
}
否则,如果(美分>=5)
{
美分=美分-5;
}
如果(美分>=1),则为else
{
美分=美分-1;
}
退分;
返回i;
}
printf(“%d\n”,i);
}
浮动获取正更改(无效)
{
浮动n;
做
{
n=获得浮动(“欠下的更改:”);
}
while(n<1);//表示数字必须小于1
返回n;
}
我确实意识到“inti”不存在于该函数之外,所以,我想知道如何修复它。另外,我还不确定回程是如何工作的,我试着四处玩,看看它是否有效。任何有助于改进此代码行的方法都将非常有用。我想解决这个问题已经有一段时间了。
祝大家度过一个伟大的日子

我会在C++中完成它,因为我已经做了比C更多的工作,但是你可以很容易地将Primtf的输入和输入转换成C,非常容易

//主管道的内部
一分硬币=0,五分镍币=0,一角硬币=0,四分之一硬币=0;
int coinCounter=0;
整数金额=0;
数量;
而(金额>0)
{
如果(金额>=25){
四分之一++;
金额-=25;
}
否则,如果(金额>=10){
十美分++;
金额-=10;
}
如果(金额>=5){
镍币++;
金额-=5;
}
否则{//剩下的唯一硬币就是便士了
便士++
金额-=1;
}
coinCounter++;
}
库特

另外,我不记得“for循环”实际上是函数还是语句,或者两者都不是

for
是一条语句。函数是一个命名例程,定义为:

类型名称(参数声明…{语句和声明…}

(旧的C代码中还有其他形式的函数定义。您不应该使用它们。)

我确实意识到“inti”不存在于该函数之外,所以,我想知道如何修复它

int i
移到
for
语句之外。将其放在for
语句的
前面。您仍然可以在
for
语句中初始化
i

int i;
for (i = 0; 0 < cents; ++i)
{
    …
}
因为第一个
return
终止了
main
的执行,所以第二个
return
永远不会执行

get\u positive\u change
中的此代码错误:

while (n < 1); //Express need for number to be < 1
while(n<1)//明确要求数字小于1

因为
n
可能是小于1的正金额,例如(大约).16美元兑换16美分。您需要
while(另外,我不记得“for循环”实际上是函数还是语句,或者两者都不是。因此,请原谅我的误解。这是一个非常经典的问题。请尝试阅读:)提示:试着以23美分的价格生成更改。查看并查看右侧的相关链接。'float change'我一读到标题就在寻找它:((不用担心,您可以将其缩进4个空格以格式化为代码,或者只需在
``c++
后面加上
`
(与您一样,但没有缩进空格)欢迎大家这样做。在这里,没有Pun,你一般不想提供C++问题的C答案,但是正如你所说的,这里唯一的C++是代码> STD::CUT而不是<代码> Primff()/Cuff>。这样做很好。非常感谢,我非常感谢。我也在寻找C++,所以这是一个很好的窥视。非常感谢!
return cents;
return i;
while (n < 1); //Express need for number to be < 1