如果现在有位顾客需要找2元7角,请问如何才能使找出的硬币个数最少。(找出每种情,然后比较哪种情况最少,3次循环)
在线等答案
以下是用c语言编写的程序(后面有运行结果):
#include <stdio.h>
int Arrange(float n)//返回兑换方案
{
int yiJiao=0;//1角硬币的数量
int wuJiao=0;//5角硬币的数量
int yiYuan=0;//1元硬币的数量
int moneyCount=n*10;//总金额元化成角
int YiJiao=0;//最少硬币数量中1角硬币的数量
int WuJiao=0;//最少硬币数量中5角硬币的数量
int YiYuan=0;//最少硬币数量中1元硬币的数量
int count=0;//兑换方案数
//三次循环
for(yiJiao=0;yiJiao<=moneyCount/1;yiJiao++)
for(wuJiao=0;wuJiao<=moneyCount/5;wuJiao++)
for(yiYuan=0;yiYuan<=moneyCount/10;yiYuan++)
if(yiJiao*1+wuJiao*5+yiYuan*10==moneyCount)
{
count++;
printf("%0.2f元可兑换成%d个1角硬币和%d个5角硬币和%d个1元硬币。\n",n,yiJiao,wuJiao,yiYuan);
if(yiJiao+wuJiao+yiYuan<YiJiao+WuJiao+YiYuan||YiJiao+WuJiao+YiYuan==0)
{
YiJiao=yiJiao;
WuJiao=wuJiao;
YiYuan=yiYuan;
}
}
printf("---------------------------------------------------------------\n");
printf("其中找出的硬币个数最少的情况是:%d个1角硬币和%d个5角硬币和%d个1元硬币,共计%d个硬币。\n",YiJiao,WuJiao,YiYuan,YiJiao+WuJiao+YiYuan);
printf("---------------------------------------------------------------\n");
return count;
}
void main()
{
printf("以下是兑换方案:\n");
printf("兑换方案共有%d种。\n",Arrange(2.70));
}