大家好,今天小编关注到一个比较有意思的话题,就是关于c语言换硬币的问题,于是小编就整理了3个相关介绍c语言换硬币的解答,让我们一起看看吧。
- 将一元钱换成一分两分五分硬币一共有几种换法用C语言程序写出来?
- C语言程序把10块钱转换成1块2块5块有多少种换法?
- c语言编程把一张100元的人名币兑换成5元,2元,1元的纸币(没中都要有)共50张,问兑换方案?
将一元钱换成一分两分五分硬币一共有几种换法用C语言程序写出来?
C语言版
main()
{
intx,y,z,i=0;
for(x=1;x
for(y=1;y
for(z=1;z
if((x+y+z==50)&&(x+2*y+5*z==100))
{
i++;
C语言程序把10块钱转换成1块2块5块有多少种换法?
这类问题属多点求值类问题,***用穷举法循环取值,判断符合条件者输出。
1 算法: 取k5= 0~2 取k2 = 0~5 取k1= 0~10 求和 sum=5*k5+2*k2+1*k1 判断 若 sum==10 则 {计数、输出 k5,k2,k1,退出内循环} 下一个 k1,k2,k5 2 分析: 本例使用三重循环变量k5,k2,k1来模拟5、2、1块的张数。循环初值的确定,每样都至少有一张,初值当取1,若允许单一币种兑换,则初值当取0。循环终值的确定,最大取值由 10/币值 获得。如 5块时最多为 10/5 =2。余类推。3 推广应用 本算法还应用于输出水仙花数、百钱百鸡、回文数等问题的求解。弄懂程序类型特点,可触类旁通收举一反三之效。c语言编程把一张100元的人名币兑换成5元,2元,1元的纸币(没中都要有)共50张,问兑换方案?
#include<stdio.h>
int main() {
int num_1 = 1;
int num_2 = 1;
int num_5 = 1;
int count = 1;
int total = 100 - 1 - 2 - 5;
//循环体中,i为5元面值张数,j为2元面值张数,剩余面值都兑换成1元
for(int i = 0; i * 5 <= total; i++) {
int sub_5 = total - 5 * i;
for( int j = 0; j * 2 <= sub_5; j++) {
int sub_2 = sub_5 - 2 * j;
("方案%d: %d张1元, %d张2元, %d张5元\n", count, sub_2+num_1, j+num_2, i+num_5);
count++;
}
}
return 0;
}
分析:每样面值至少一张,你就提前给他们3种各分配一张就好了。剩下只要能分完就行。
到此,以上就是小编对于c语言换硬币的问题就介绍到这了,希望介绍关于c语言换硬币的3点解答对大家有用。