- /* 找零最佳组合
- * SandyFeng
- * 2012.5.32
- */
- #include "iostream.h"
- void Dispose(float m_Money);
- void main()
- {
- float m; //需要找零RMB
- float m_R; //顾客购买货物价格
- float m_P; //顾客付款的RMB
- //确定处理数据
- cout<<"货物价格: ";
- cin>>m_R;
- cout<<"顾客付款金额:";
- cin>>m_P;
- //进行初步数据类型判断
- if (m_P < m_R)
- {
- cout<<"付款不够!"<<endl;
- }
- else if (m_P == m_R)
- {
- cout<<"金额合适无需找钱"<<endl;
- }
- else
- {
- m = m_P - m_R;
- Dispose(m);
- }
- }// End of main
- void Dispose(float m_Money)
- {
- //初始化货币
- int m_50 = 0;
- int m_20 = 0;
- int m_10 = 0;
- int m_5 = 0;
- int m_1 = 0;
- int m_05 = 0;
- int m_01 = 0;
- // 极简写法
- // for (; m_Money>=50; m_50++,m_Money -= 50)
- // {}
- //计算找零50的张数
- while (m_Money>=50)
- {
- m_50++;
- m_Money -= 50;
- }
- //计算找零20的张数
- while (m_Money>=20)
- {
- m_20++;
- m_Money -= 20;
- }
- //计算找零10的张数
- while (m_Money>=10)
- {
- m_10++;
- m_Money -= 10;
- }
- //计算找零5的张数
- while (m_Money>=5)
- {
- m_5++;
- m_Money -= 5;
- }
- //计算找零1的张数
- while (m_Money>=1)
- {
- m_1++;
- m_Money -= 1;
- }
- //计算找零5毛的张数
- while (m_Money>=0.5)
- {
- m_05++;
- m_Money -= 0.5;
- }
- //计算找零1毛的张数
- while (m_Money>=0.1)
- {
- m_01++;
- m_Money -= 01;
- }
- cout<<"需要五十的 "<<m_50<<"张"<<endl;
- cout<<"需要二十的 "<<m_20<<"张"<<endl;
- cout<<"需要一十的 "<<m_10<<"张"<<endl;
- cout<<"需要五元的 "<<m_5<<"张"<<endl;
- cout<<"需要一元的 "<<m_1<<"张"<<endl;
- cout<<"需要五毛的 "<<m_05<<"张"<<endl;
- cout<<"需要一毛的 "<<m_01<<"张"<<endl;
- }
今天上课,老师讲软件测试的时候说了下这个。笨笨的写了这个算法。欢迎大家提出意见或建议。