金钱面额为100,50,20,10,5,2,1,0.5,0.2,0.1,共10种,求解输入一个待找零钱的总额,以上每种面额各需要几张
#include<stdio.h>
# define maxn 10
long parvalue[maxn]={10000,5000,2000,1000,500,200,100,50,20,10};
int num[maxn]={0};
int exchange(long n)
{int i,j;for(i=0;i<maxn;i++){
// if(n>parvalue[i])
// break;while(n>0&&i<maxn) {if(n>=parvalue[i]){n-=parvalue[i];num[i]++;}else if(n<10&&n>=5){num[maxn-1]++;break;}else i++;}}return 0;
}
int main()
{int i;float m;printf("请输入找零金额:");scanf("%f",&m);exchange((long)100*m);printf("n%.2f元钱的找零方式:n",m);for(i=0;i<maxn;i++) {if(num[i]>0)printf("面额%.1f的:%d张n",(float) parvalue[i]/100.0,num[i]);}return 0;
}
疑问:第10、11行的代码其实可以算是冗余的,因为while循环里就有判断n是否大于当前面值金额,而且蹊跷的是不把这里两行注掉,会出现输入三位数字时不输出的情况,很迷。
本文发布于:2024-02-02 14:12:02,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170685432344329.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |