您的位置:

找零钱的c语言,c语言找零钱最少张数

本文目录一览:

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);

}