硬币兑换问题
(1)问题描述
将笔零钱兑换成1分、2分、5分的硬币,要求每种硬币至少1枚,从键盘上输入零钱的总数(整数,单位为分),显示这笔零钱可有的兑换方案数。
(2)源代码
#include <stdio.h>
int main()
{
int x,y,z;
int sum;
int count=0;
scanf("%d",&sum);
for(x=1;x<=sum;x++)
for(y=1;y<=sum/2;y++)
for(z=1;z<=sum/5;z++)
if(x*1+y*2+z*5==sum)
count++;
printf("%d",count);
return 0;
}
(3)运行示例
![](https://i-blog.csdnimg.cn/blog_migrate/86a65a2dc60afda44b865a1975ea741e.png)
(4)代码思路
- 首先,使用
scanf
函数从标准输入读取一个整数,并赋值给 sum
变量。 - 然后,声明三个整数变量
x
,y
和 z
,以及一个整数变量 count
,并将 count
初始化为0,表示满足条件的整数的个数。 - 接着,使用三个嵌套的
for
循环,分别遍历 x
,y
和 z
的所有可能的值,从1开始,每次加1,直到 sum
,sum/2
或 sum/5
为止,即限制每个整数的范围。 - 然后,使用一个
if
语句判断 x
,y
和 z
是否满足上述条件,即是否同时满足两个等式。如果是,就将 count
变量加1,表示找到了一个满足条件的整数组合。 - 最后,使用
printf
函数输出 count
变量的值,表示满足条件的整数的个数