本文目录一览:
c语言关于找零钱的问题
#include stdio.h
int main()
{
int a,b,c,d,e,t;
scanf("%d",t);
a=t%100;
t-=a*100;
if(a0) printf("10元%d个 ", a);
b=t%50;
t-=b*50;
if(b0) printf("5元%d个 ", b);
c=t%10;
t-=c*10;
if(c0) printf("1元%d个 ", c);
d=t%5;
t-=d*5;
if(d0) printf("5角%d个 ", d);
e=t;
if(e0) printf("1角%d个 ", e);
printf("\n");
return 0;
}
急求一个c语言源代码关于找零钱问题的
我们知道人民币有1、2、5、10、20、50、100这几种面值。
现在给你n(1≤n≤250)元,让你计算换成用上面这些面额表示且总数不超过100张,共有几种。
#includestdio.h
int main()
{int a,b,c,d,e,f,g,n,count=0;
printf(" please input n:\n");
scanf("%d",n);
for(a=n/100;a=0;a--)
for(b=(n-100*a)/50;b=0;b--)
for(c=(n-100*a-50*b)/20;c=0;c--)
for(d=(n-100*a-50*b-20*c)/10;d=0;d--)
for(e=(n-100*a-50*b-20*c-10*d)/5;e=0;e--)
for(f=(n-100*a-50*b-20*c-10*d-5*e)/2;f=0;f--)
{g=n-100*a-50*b-20*c-10*d-5*e-2*f;
if(a+b+c+d+e+f+g=100)
{count++;
printf(" 100:%d--50:%d--20:%d--10:%d--5:%d--2:%d--1:%d\n",a,b,c,d,e,f,g);
};
}
printf(" n=%d,count=%d\n",n,count);
return 0;}
这是程序``不过n大于100效率会低一点```像卡死了一样```建议n不去太大``
急求,找零钱问题的c语言程序
#includestdio.h
#define len 10
main()
{
int m[len];
int num[len]={0};
int n,j;
int i=0;
int temp=1;
printf("please input the vertex:\n");
printf("if you want to end inputing,please input 0\n");
while(ilentemp!=0)
{
scanf("%d",temp);
if(temp!=0)
m[i]=temp;
i++;
if(judgeorder(m)==0)
{
printf("please reenter the vertex:\n");
for(j=0;j=i;j++)
m[j]=0;
i=0;
}
}
printf("please input the amount of money:\n");
scanf("%d",n);
i=0;
while(m[i]!=0)
{
num[i]=n/m[i];
n=n-num[i]*m[i];
if(n==0)
break;
i++;
}
for(i=0;ilen;i++)
{
if(num[i]==0)
continue;
else
printf("The %3d fen needs %3d\n",m[i],num[i]);
}
getch();
}
int judgeorder(int a[len])
{
int i,count=0;
for(i=0;ilen-1a[i]!=0;i++)
{
if(a[i]a[i+1])
{
return 0;
break;
}
else count++;
}
if(count==len-2)
return 1;
}
这个就是你要的程序,如果有不懂的话加我QQ357685821,我给你解释
c语言找零钱问题
double iChange=0;
double taget=0.72;
double Money[5] = { 0.5, 0.1, 0.05, 0.02, 0.01};
double ArrChange[100];
for语句将ArrChange置零;
int CountCoin=0;
while(iChange != taget )
{
for(int i = 0 ; i 5 ; i ++)
{
if(iChange + Money[i] taget)continue;
else
{
iChange += Money[i];
ArrChange[CountCoin] = Money[i];
CountCoin++;
}
}
}
//基本是这么个思路,如果一点也不思考对你没好处,原理就是找多了就换小的,尽量选大的钱
c语言 找零钱问题,谢谢
这很容易。
先输入n值,然后从最大面值的人民币开始减。例如:
我有238元
减最大面值的第一个。238-100=138。结果为正数且不为零。然后记录100元张数的变量加1(这些变量都应初始化时为0)
继续,138-100=38.结果正数且不为零,同上100面值变量加1,
38-100。结果小于零。不再用100面值的减。
38-50。结果同样小于零,不再用50面值的减。
38-20=18.结果为正数且不为零,20元张数的变量加1,
18-20。结果小于零。不再用20面值的减。
18-10=8。结果为正数且不为零,10元张数的变量加1,
8-10.结果小于零。不再用10面值的减。
8-5=3。结果为正数且不为零,5元张数的变量加1,
3-5。结果小于零。不再用5面值的减。
3-2=1.结果为正数且不为零,2元张数的变量加1,
1-1=0.结果为零。1元张数变量加1.显示结果。
你有:
100元(2)张,50元(0)张,20元(1)张,10元(1)张,5元(1)张,2元(1)张,1元(1)张。
用C语言编写找零钱问题,谢谢!!
//用递归, C++下调试
#include iostream
using namespace std;
void compute_coins(int coin_value,int number,int amount_left){
if(amount_left = coin_value)
compute_coins(coin_value, ++number, amount_left -= coin_value);
else{
cout coin_value ":" number endl;
number = 0;
switch(coin_value){
case 25:
compute_coins(10, number, amount_left);
break;
case 10:
compute_coins(5, number, amount_left);
break;
case 5:
compute_coins(1, number, amount_left);
break;
}
}
}
int main()
{
int n;
cin n;
int number = 0;
compute_coins(25, number, n);
}
//下面是C语言的,更直观,不需要引用
#include stdio.h
void compute_coins(int coin_value,int number,int amount_left){
if(amount_left = coin_value)
compute_coins(coin_value, number+1, amount_left-coin_value);
else{
printf("%d : %d\n", coin_value, number);
switch(coin_value){
case 25:
compute_coins(10, 0, amount_left);
break;
case 10:
compute_coins(5, 0, amount_left);
break;
case 5:
compute_coins(1, 0, amount_left);
break;
}
}
}
int main()
{
int n;
printf("input amount:");
scanf("%d", n);
compute_coins(25, 0, n);
}