标题:编写一个计算程序
只看楼主
a775825148
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-3-22
结帖率:0
已结贴  问题点数:20 回复次数:7 
编写一个计算程序
编写一个计算程序,对于任意输入一个金额(人民币),给出能组合出这个金额值的最佳可能,要求使用的货币个数最少。例如给出1.46元,将得到1元1个,1角4个,5分1个,1分1个。设定已知人民币的币值有:100元、50元、20元、10元、5元、1元、5角、1角、5分、1分。
搜索更多相关主题的帖子: 人民币 
2017-03-22 08:41
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:5 
先最大的面值货币入栈~~~然后作栈调整~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-22 09:09
a775825148
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-3-22
得分:0 
回复 2楼 九转星河
大神能不能给代码
2017-03-22 09:16
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 3楼 a775825148
要上课~下午或者晚上有时间帮你弄弄看~还有四则运算那题最好发到数据结构板块~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-22 09:36
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 3楼 a775825148
或者更直接的就是逐步求余~想想现实生活中遇到这样的问题你会怎么处理~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-22 09:43
yanzy
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:104
专家分:372
注 册:2017-2-7
得分:5 
求余应该是最优算法
2017-03-22 11:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
程序代码:
#include <stdio.h>
#include <math.h>

int main( void )
{
    double yuan;
    if( scanf("%lf",&yuan) == 1 )
    {
        unsigned fen = (unsigned)ceil(yuan*100);

        if( fen/10000 != 0 )
        {
            printf( "100元%u个\n", fen/10000 );
            fen %= 10000;
        }
        if( fen/5000 != 0 )
        {
            printf( "50元%u个\n", fen/5000 );
            fen %= 5000;
        }
        if( fen/2000 != 0 )
        {
            printf( "20元%u个\n", fen/2000 );
            fen %= 2000;
        }
        if( fen/1000 != 0 )
        {
            printf( "10元%u个\n", fen/1000 );
            fen %= 1000;
        }
        if( fen/500 != 0 )
        {
            printf( "5元%u个\n", fen/500 );
            fen %= 500;
        }
        if( fen/100 != 0 )
        {
            printf( "1元%u个\n", fen/100 );
            fen %= 100;
        }
        if( fen/50 != 0 )
        {
            printf( "5角%u个\n", fen/50 );
            fen %= 50;
        }
        if( fen/10 != 0 )
        {
            printf( "1角%u个\n", fen/10 );
            fen %= 10;
        }
        if( fen/5 != 0 )
        {
            printf( "5分%u个\n", fen/5 );
            fen %= 5;
        }
        if( fen != 0 )
        {
            printf( "1分%u个\n", fen );
        }
    }
}
2017-03-22 11:22
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1728
专家分:3216
注 册:2015-12-2
得分:5 
这个曾经发过一贴。
#include <stdio.h>
 int main(void)
  {
      double sum;
      int sum_t;
      int num;
      int money[10]={10000,5000,2000,1000,500,100,50,10,5,1};
      printf("请输入实发工资总额\n");
      scanf("%lf",&sum);
      sum_t=(sum+0.001)*100;
      for (int i=0;i<=9;i++)
      {
          num=sum_t/money[i];
          if(num>0)
          printf("%.2f元%d张\n",1.0*money[i]/100,num);
          sum_t=sum_t-num*money[i];
      }
  }
关于精确度问题参照此贴https://bbs.bccn.net/viewthread.php?tid=469385&extra=page%3D1%26amp%3Bfilter%3Ddigest
2017-03-22 12:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475356-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.113433 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved