编程练习2

将一张面额50元的钱币换成1元、5元、10元、20元的零钱,要求每种面额的零钱都要有,输出共几种方案,以及每一种方案。

输入格式:

输出格式:
输出每一种方案,以及共几种方案。

输入样例:
在这里给出一组输入。例如:

输出样例:
在这里给出相应的输出。例如:

可换得1元5张,5元1张,10元2张,20元1张。
可换得1元5张,5元3张,10元1张,20元1张。
可换得1元10张,5元2张,10元1张,20元1张。
可换得1元15张,5元1张,10元1张,20元1张。
共4种方案。

Python:

#written by wanghongwei in 2024/3/12
def calculate_money():
    money = int(input("请输入钱币的面额:"))
    count = 0
    for i in range(1, money+1):
        for j in range(1, money//5+1):
            for k in range(1, money//10+1):
                for m in range(1, money//20+1):
                    if (i + 5*j + 10*k + m*20) == money:
                        count += 1
                        print("可换得1元{}张,5元{}张,10元{}张,20元{}张。".format(i, j, k, m))
    print("共{}种方案。".format(count))

calculate_money()

C:

#include <stdio.h>
/*
  written by wanghongwei in 2024/3/12
*/
int money;//钱币的面额 
int count = 0;//记录方案 种数 
void calculate_money();
void calculate_money(){
	int i,j,k,m;
	for(i=1;i<=money;i++)
	{
		for(j=1;j<=(money/5);j++)
		{
			for(k=1;k<=(money/10);k++)
			{
				for(m=1;m<=(money/20);m++){
					if((i+5*j+10*k+m*20)==money)
					{
						count++;
					printf("可换得1元%d张,5元%d张,10元%d张,20元%d张。\n",i,j,k,m);
					printf("共%d种方案",count);
			    	}
				}
			}
		}
	}
}
int main()
{
	printf("请输入钱币的面额:\n"); 
	scanf("%d",&money);
    calculate_money(money);
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值