编程实现找零钱问题 假设有3种硬币,面值分别是1元、5角和1角。这3种硬币各自数量不限

如果现在有位顾客需要找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));

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-06
这道题值250分
相似回答