请帮忙编写个简单的C++小程序,貌似是是循环结构的
小龙去买零食,花了25.5元,给了老板1张100元的钞票,编写程序,输出老板的所有找零的方式。(钞票面值有1角、5角、1元、5元、10元、50元、100元,每种面值的钞票...
小龙去买零食,花了25.5元,给了老板1张100元的钞票,编写程序,输出老板的所有找零的方式。(钞票面值有1角、5角、1元、5元、10元、50元、100元,每种面值的钞票数量不超过9张)
展开
2个回答
展开全部
#include<IOSTREAM>
using namespace std;
unsigned int num[7]={0};
const double money_value[7]={100,50,10,5,1,0.5,0.1};//将人民币面值定义到数组
const double des=74.5;//找钱总数
void search(unsigned short int t,double leave_money)
{
if(t==7)
return;
if(leave_money>9*money_value[t])//如果剩余的钱大于剩下的最大币值,则返回
return;
double current_money;
for (double i=0;i<=9;i++)
{
current_money=leave_money;
current_money-=money_value[t]*i;//计算剩下的钱
if (current_money<=-0.01)//不能继续减下去了
break;
num[t]=i;//
search(t+1,current_money);//让下一币值继续表示
if((current_money<=0)&¤t_money>-0.01)//注:此处酌情进行匹配,如果要求的精确度为0.01则此处应为-0.01
{
if(i==0)
break;
for(int k=0;k<t;k++)
{
if(num[k]==0)
continue;
cout<<money_value[k]<<"元"<<num[k]<<"张 ";
}
cout<<money_value[t]<<"元"<<i<<"张 ";
cout<<" = "<<des<<"元"<<endl;
}
for(int r=t;r<7;r++)
num[r]=0;
}
}
int main()
{
unsigned short int i=0;
search(0,des);
return 0;
}
using namespace std;
unsigned int num[7]={0};
const double money_value[7]={100,50,10,5,1,0.5,0.1};//将人民币面值定义到数组
const double des=74.5;//找钱总数
void search(unsigned short int t,double leave_money)
{
if(t==7)
return;
if(leave_money>9*money_value[t])//如果剩余的钱大于剩下的最大币值,则返回
return;
double current_money;
for (double i=0;i<=9;i++)
{
current_money=leave_money;
current_money-=money_value[t]*i;//计算剩下的钱
if (current_money<=-0.01)//不能继续减下去了
break;
num[t]=i;//
search(t+1,current_money);//让下一币值继续表示
if((current_money<=0)&¤t_money>-0.01)//注:此处酌情进行匹配,如果要求的精确度为0.01则此处应为-0.01
{
if(i==0)
break;
for(int k=0;k<t;k++)
{
if(num[k]==0)
continue;
cout<<money_value[k]<<"元"<<num[k]<<"张 ";
}
cout<<money_value[t]<<"元"<<i<<"张 ";
cout<<" = "<<des<<"元"<<endl;
}
for(int r=t;r<7;r++)
num[r]=0;
}
}
int main()
{
unsigned short int i=0;
search(0,des);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询