C语言程序设计24点.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《程序设计基础(C语言)》 关于24点计算 关于24点计算 函数初步下的24点 24点需求1 输入4个整数,输出该4数通过+-×/得到24点的计算过程 如果有解,输出一个计算方法 先不考虑“最优解” 也不考虑样式美观 只输出其中一个解 中间结果为整数(先不考虑分数计算) 如果无解,输出“No Answer” 运行示例 1 2 3 4 1 2 3 4: 6*4=24 3+3=6 1+2=3 5 5 5 5 5 5 5 5: 25-1=24 5/5=1 5*5=25 5 5 5 1 5 5 5 1: No Answer 24点的求解步骤 从4个数到3个数 从4个整数中任意选取2数 选取的2数进行任意的+-×/运算 得到3个整数 从3个数到2个数 从3个整数中再任意选取2数 选取的2数进行任意运算 得到2个整数 2个数选取任意运算,判结果是否24 如果为24,则输出计算过程,并结束求解 自底向上设计 如果只有2个数,如何计算24点,并输出计算过程 如果只有3个数,如何在2个数的基础上计算并求解24点 如果有4个数,如何在3个数的基础上计算并求解24点 2个数的求解函数 设有2个整数,形式参数,记为x与y 分别进行+-×/运算 如果有一个运算结果为24,则 24点得到一个解,输出对应的运算 返回1表示得到一个解 注:先不考虑输出所有解 如果所有结果均≠24,则返回0 函数声明:int prt24_2(int x,int y); 2数24点的代码考虑(1) 如果x与y进行加运算后结果为24,则 输出该运算的计算式,%d+%d=24 同时返回1 if (x+y==24) /* 加 */ { printf(%d+%d=24\t,x,y); return 1; } 2数24点的代码考虑(2) …… if (x-y==24) /* 减 */ { printf(%d-%d=24\t,x,y); return 1; } if (x*y==24) /* 乘 */ { printf(%d*%d=24\t,x,y); return 1; } if (x/y==24) /* 除 */ { printf(%d/%d=24\t,x,y); return 1; } return 0; 关于减运算 减运算(x-y==24)的追加考虑 反向减,如果 y-x 为24 ? if (y-x==24) /* 反向减 */ { printf(%d-%d=24\t,y,x); return 1; } 关于除运算(1) 除运算(x/y==24)的追加考虑 如果y为0,则x/y运算为除0错→系统故障 y!=0 x/y==24 如果y为0,则前式为假,后式自动略过,不会引发除0错(运算的优化原则) 如果x/y不能除尽(如49/2) y!=0 x%y==0 x/y==24 优化:y!=0 x==24*y 反向除,如果y/x==24 ? 关于除运算(2) if (y!=0 x==24*y) /* 除 */ { printf(%d/%d=24\t,x,y); return 1; } if (x!=0 y==24*x) /* 反向除 */ { printf(%d/%d=24\t,y,x); return 1; } 2数24点的代码框架 int prt24_2(int x,int y) { if (x+y==24) {…;return 1;} if (x-y==24) {…;return 1;} if (y-x==24) {…;return 1;} if (x*y==24) {…;return 1;} if (y!=0x==24*y) {…;return 1;} if (x!=0y==24*x) {…;return 1;} return 0; } 2数24点的框架优化 int prt24_2(int x,int y) { if (x+y==24) printf…; else if (x-y==24) printf…; else if (y-x==24) printf…; else if (x*y==24) printf…; else if (y!=0x==24*y) printf…; else if (x!=0y==24*x) printf…; else return 0; return 1; } 2数24点的完整代码 int prt24_2(int x,int y) { if (x+y==24) print

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档