C语言经典问题——兑换硬币

兑换硬币问题

  兑换硬币问题是C语言的一个经典问题。题目如下:

现有一张1元纸币,欲将其兑换为1分、2分、5分硬币共60枚,请列出所有兑换方案。

  我们可以利用分支和循环来解决这个问题。

最简单的方法——三重循环法

  最“无脑”也是最容易想到的方法是利用三重循环。其代码如下所示:

#include <stdio.h>
int main (void)
{
	int i = 0; 
	int one, two, five; 
	for (one = 0; one <= 60; one++)
	{
		for (two = 0; two <= 50; two++)
		{
			for (five = 0; five <= 20; five++)
			{
				if ((one * 1 + two * 2 + five * 5 == 100) && (one + two + five == 60))
				{
					i++; 
					printf ("兑换方案%2d:1分硬币%2d枚,2分硬币%2d枚,5分硬币%2d枚\n", i, one, two, five); 
				}
			}
		}
	}
	printf ("共有%d种兑换方案\n", i); 
	return 0; 
}

  输出结果如下:

兑换方案 1:1分硬币20枚,2分硬币40枚,5分硬币 0枚
兑换方案 2:1分硬币23枚,2分硬币3
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值