习题4-5 换硬币 将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
生活随笔
收集整理的這篇文章主要介紹了
习题4-5 换硬币 将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
習題4-5 換硬幣 (20分)
將一筆零錢換成5分、2分和1分的硬幣,要求每種硬幣至少有一枚,有幾種不同的換法?
輸入格式:
輸入在一行中給出待換的零錢數(shù)額x∈(8,100)。
輸出格式:
要求按5分、2分和1分硬幣的數(shù)量依次從大到小的順序,輸出各種換法。每行輸出一種換法,格式為:“fen5:5分硬幣數(shù)量, fen2:2分硬幣數(shù)量, fen1:1分硬幣數(shù)量, total:硬幣總數(shù)量”。最后一行輸出“count = 換法個數(shù)”。
輸入樣例:
13輸出樣例:
fen5:2, fen2:1, fen1:1, total:4 fen5:1, fen2:3, fen1:2, total:6 fen5:1, fen2:2, fen1:4, total:7 fen5:1, fen2:1, fen1:6, total:8 count = 4代碼:
#include <stdio.h> int main(){int x;int fen5,fen2,fen1,total,sum;int count=0;scanf("%d",&x);if(x>8&&x<100){for(fen5=x/5;fen5>0;fen5--){for(fen2=x/2;fen2>0;fen2--){for(fen1=x;fen1>0;fen1--){if(5*fen5+2*fen2+fen1==x){count++;total=fen5+fen2+fen1;printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n",fen5,fen2,fen1,total);total=0;}}}}}printf("count = %d",count);return 0; }小結(jié):
1.思路是把總數(shù)x先除5,算出最多有多少個5分硬幣,再依次遞減。再用同樣方法計算2分硬幣和1分硬幣。
2.開始出錯原因:最初的代碼是按照假設(shè)5分硬幣是最少是1,然后逐漸遞增,直到>x,其他類似。這樣的做法導(dǎo)致了結(jié)果不能從大到小輸出,得不到正確結(jié)果。修改后的代碼可以使結(jié)果按照從大到小順序排列。
總結(jié)
以上是生活随笔為你收集整理的习题4-5 换硬币 将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NISP和CISP信息安全相关证书有哪些
- 下一篇: netlimiter 4 功能使用TCP