这是一个C语言 for 循环嵌套的示例:过年了,外婆给了桐桐 100 元压岁钱,桐桐想把它兑换成 50 元、20 元、10 元的小钞票。请你编写程序,帮桐桐算算共有多少种兑换方案,并输出每一种兑换方案。

问题分析

对于这个问题,我们可以使用枚举法来解决。枚举法就是将问题的所有可能答案全部列举出来,然后根据条件判断每个答案是否合适,合适的保留,不合适的就丢弃。

假设兑换方案中 50 元、20 元、10 元的钞票张数分别是 a、b、c,则:

50a+20b+10c=100

分析可知,a 的取值范围是 0~2,b 的取值范围是 0~5,c 的取值范围是 0~10,用 for 循环的嵌套枚举 a、b、c 所有的可能组合,对于每一种可能组合,判断上面的等式是否成立,如果等式成立,这一种组合就是一种兑换方案。

算法描述

1) 定义 50 元、20 元、10 元钞票的可能张数 a、b、c;

2) 定义兑换方案数 Count,并初始化赋值 0;

3) 枚举 50 元钞票张数 a(0~2),枚举 20 元钞票张数 b(0~5),枚举 10 元钞票张数 c(0~10)。如果 50*a+20*b+10*c=100 成立,则

①Count = Count + 1;

②输出 a、b、c;

4) 输出 Count;

5) 结束。

代码清单 2:用枚举法找出 100 元钱所有可能的 50、20、10 元面额钞票的兑换组合

#include

#include

int main( )

{

int a,b,c,Count=0;

for(a=0;a<=2;a++) //枚举50元钞票的可能张数

for(b=0;b<=5;b++) //枚举20元钞票的可能张数

for(c=0;c<=10;c++) //枚举10元钞票的可能张数

if(50*a+20*b+10*c==100) //判断是否是有效兑换组合

{

Count++;

printf("50:%d 20:%d 10:%d\n",a,b,c);

}

printf("100元钱共有以上%d种兑换方案!\n",Count);

system("pause");

return 0;

}

运行结果为:

50:0  20:0  10:10

50:0  20:1  10:8

50:0  20:2  10:6

50:0  20:3  10:4

50:0  20:4  10:2

50:0  20:5  10:0

50:1  20:0  10:5

50:1  20:1  10:3

50:1  20:2  10:1

50:2  20:0  10:0

100元钱共有以上10种兑换方案!

上面程序代码用了三层 for 循环,第三层 for 循环语句的循环体 if 语句总共执行了 3×6×11=198 次。事实上,知道了 a 和 b,就可以通过公式计算出 c:

c=(100-50×a-20×b)/10(c≥0)

因而,第三层 for 循环就不需要了,这样用来判断是否为有效兑换组合的 if 语句就只需执行 3×6=18 次,这样大大提高了程序的运行效率。

代码清单 3:用枚举法找出 100 元钱所有可能的 50、20、10 元面额钞票的兑换组合

#include

#include

int main( )

{

int a,b,c,Count=0;

for(a=0;a<=2;a++) //枚举50元钞票的可能张数

for(b=0;b<=5;b++) //枚举20元钞票的可能张数

{

c=(100-50*a-20*b)/10; //对于每一组a、b组合,计算c

if(c>=0) //判断是否是有效的兑换组合

{

Count++;

printf("50:%d 20:%d 10:%d\n",a,b,c);

}

}

printf("100元钱共有以上%d种兑换方案!\n",Count);

system("pause");

return 0;

}

运行结果为:

50:0  20:0  10:10

50:0  20:1  10:8

50:0  20:2  10:6

50:0  20:3  10:4

50:0  20:4  10:2

50:0  20:5  10:0

50:1  20:0  10:5

50:1  20:1  10:3

50:1  20:2  10:1

50:2  20:0  10:0

100元钱共有以上10种兑换方案!

知识点总结

枚举法是计算机编程中常用的一种数据处理方法。

使用枚举法时必须列举出所有可能的数据值,然后从中找出合适的。

枚举法可以用for循环语句实现。

c语言汇率转换代码_C语言兑换压岁钱相关推荐

  1. c语言 hello world代码_C语言基础

    首先,还是从hello world开始. #include <stdio.h> int main(void) { printf("Hello Worldn"); ret ...

  2. c语言推箱子代码_C语言烂大街的东西都学不会!C语言多关卡推箱子制作教程

    C语言多关卡推箱子,兄台了解一下?没错,C语言完整简单项目实战 很高兴你能光临小编寒舍 首先感谢百忙之中你能从万千文章中点小编得专属页面.这不是娱乐篇,这是学习道场.开始前,小编就做一个简单得自我介绍 ...

  3. c语言生日创意代码_C语言实现生日贺卡

    本文实例为大家分享了C语言实现生日贺卡的具体代码,供大家参考,具体内容如下 //********** 编译环境VC6.0 ************// #include #include #inclu ...

  4. C语言mysql_ping实例代码_c语言操作mysql数据库(示例代码)

    c语言操作Mysql数据库,主要就是为了实现对数据库的增.删.改.查等操作,操作之前,得先连接数据库啊,而连接数据库主要有两种方法.一.使用mysql本身提供的API,在mysql的安装目录中可可以看 ...

  5. c语言扫雷游戏代码_C语言游戏详解---扫雷游戏

    扫雷游戏大家应该都不陌生,一个扫雷游戏要满足的基本要求是: 1. 第一次扫的位置不能是雷 2. 每展开一个位置要显示该位置周围雷的个数 3. 若该位置周围没雷,要把周围展开 该游戏的界面是10X10的 ...

  6. c语言生日创意代码_C语言 生日快乐

    #include #include #include #define I 20 #define R 340 int main() { system("mode con cols=80 lin ...

  7. c语言付款功能代码_c语言实现的货物管理系统实例代码(增加删除 查找货物信息等功能)...

    #include #include #include #include         /*屏幕操作函数库*/ /*主管权限数据格式化*/ #define HEADER1_zg "----- ...

  8. python美元汇率兑换程序代码_如何实现python汇率转换代码

    对于刚刚入门python的学习者们,最头疼的莫过于基础的功能实现代码了,很多函数可以实现意义是一样的,今天小编教大家实例--实现python汇率转换代码. Python中的货币转换器 tkinter ...

  9. python汇率的转换程序_如何实现python汇率转换代码

    对于刚刚入门python的学习者们,最头疼的莫过于基础的功能实现代码了,很多函数可以实现意义是一样的,今天小编教大家实例--实现python汇率转换代码. Python中的货币转换器 tkinter ...

最新文章

  1. php开发如何测试,用thinkphp开发微信,如何测试?
  2. POWERPCB常用技巧
  3. php array_merge 与 + 区别
  4. Stack Overflow 监控系统内部架构初探
  5. java铃声类_java多线程抓取铃声多多官网的铃声数据
  6. java怎么实现tab切换_[Java教程]用javascript实现tab切换
  7. 人脸验证(四)--CenterLoss
  8. android 输入法出现挤压屏幕、android输入键盘覆盖了屏幕控件的解决办法
  9. vsftpd不支持目录软链接的解决办法
  10. HDU 3551 Hard Problem
  11. Java 对字符以及字符数组的操作
  12. tl-wn821n无线网卡驱动 linux,tl-wn821n无线网卡驱动下载
  13. TMS320DM642调试出现#10247-D creating output section .capChaACrSpace without a SECTIONS 解决办法...
  14. 图像处理研究中心系统 包含去噪 蜕变 去痘痘等操作
  15. linu系统中dhcp的搭建
  16. 汉堡按钮html写法,ProtoPie 详解 — 汉堡按钮制作
  17. Git 使用过程中遇到的问题以及解决办法
  18. 关于音乐播放器锁屏播放,后台播放,封面显示等
  19. 生成xslx文件,写入并读取
  20. 当前年的日历存储到数据库,用于判断某一天是假期还是工作日

热门文章

  1. DRF框架之十大接口、视图家族
  2. 探索式测试--第六章(实践中的探索式测试)--读书笔记
  3. 如何用社交媒体开发客户?这一篇文章告诉你
  4. vue项目中实现视频播放
  5. sdcs V2.3 exe/dll 正+反弹后门(转)
  6. STM32+SD卡的原理图绘制以及用32完成对SD卡的数据读取(fat文件模式)
  7. php如何合并重复项,php合并数组并去除重复
  8. 字节流和字符流的区别?
  9. IPVS调度算法之LC
  10. SQL注入原理、过程、防御方案、RASP概念