C语言编程,要将100元钱换成1元,2元,5元的零钱.每种钱数大于0,而且为5的倍数,编程计算有多少种换法?
答案:4 悬赏:80
解决时间 2021-12-22 03:43
- 提问者网友:剪短发丝
- 2021-12-21 16:47
C语言编程,要将100元钱换成1元,2元,5元的零钱.每种钱数大于0,而且为5的倍数,编程计算有多少种换法?
最佳答案
- 二级知识专家网友:孤伤未赏
- 2021-12-21 17:16
#include<stdio.h>
void main()
{
int a,b,c,count=0;
for(a=5;a<100;a+=5)
for(b=5;b<50;b+=5)
if((100-a-2*b)%5==0 && ((100-a-2*b)/5)%5==0)
count++;
printf("%d\n",count);
}
void main()
{
int a,b,c,count=0;
for(a=5;a<100;a+=5)
for(b=5;b<50;b+=5)
if((100-a-2*b)%5==0 && ((100-a-2*b)/5)%5==0)
count++;
printf("%d\n",count);
}
全部回答
- 1楼网友:寂寞的炫耀
- 2021-12-21 20:32
#include <stdio.h>
int main(int argc, char *argv[])
{
const int total = 100; //总共钱数
const int multipe = 5; //倍数
//各种面值money的数量
int bill_1_num,
bill_2_num,
bill_5_num;
//实际是求 5,10,25 个数
const int bill_1 = multipe*1,
bill_2 = multipe*2,
bill_5 = multipe*5;
//total中减去2元,5元后的剩余
int remainder_2,
remainder_5;
for(bill_5_num = 1;
bill_5_num <= total/bill_5;
++bill_5_num)
{
remainder_5 = total
-bill_5_num*bill_5;
for(bill_2_num = 1;
bill_2_num <= remainder_5/bill_2;
++bill_2_num)
{
remainder_2 = total
-bill_5_num*bill_5
-bill_2_num*bill_2;
for(bill_1_num = 1;
bill_1_num <= remainder_2/bill_1;
++bill_1_num)
{
if(total == bill_5_num*bill_5
+ bill_2_num*bill_2
+ bill_1_num*bill_1)
{
printf("1 num: %d\n2 num: %d\n5 num: %d\n***\n",
bill_1_num,bill_2_num,bill_5_num);
}
}
}
}
return 0;
}
- 2楼网友:年轻没有失败
- 2021-12-21 19:37
我暂时保留我的看法!
- 3楼网友:不羁的心
- 2021-12-21 18:49
题目我没怎么看懂,比如说你写的i+j+l==k,那题目中的40放在哪里?
另外我要说的一个大问题,也是就是float的用法,float的值是小数,电脑的算法是近似值。
举个例子,
float a = 1;
b = a/10;
按道理b此时是0.1,但是你输出的由于编译器的不同有可能是 0.10000000000001,也有可能是0.09999999999999.也有可能是0.1。当出现这种情况,你的if中的判断就永远不会实现。
所以你的if可以比较大小判断,比如if(x==5)写成((x>4.9999)&&(x<5.00001))或者不要出现float,所有的数值乘以10,把小数去除。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯