ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:145.09KB ,
资源ID:21521916      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21521916.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C程序设计 24点小游戏文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C程序设计 24点小游戏文档格式.docx

1、 for (k=0;kk+) if (k!=j & k! for (l=0;ll+) if (l!=i & l!=k) calculate(ai,aj,ak,al); 用if来判断括号的类型,然后作出不同顺序的运算。括号有两对,主要有两种类型:一种是( ) ( )型,如(a+b)*(c+d) ;另一种是 ( ( ) )型,继续细分又有4种类型,如下a*(b*(c+d) ,(a*(b+c)*d ,a*(b+c)*d) ,(a+b)*c)*d。算法如下if (!(i=3 & b=0) & (!(j=3 & c=0) &(k=3 & d=0) sum1=arithmetic(i,a,b); sum2

2、=arithmetic(j,sum1,c); sum3=arithmetic(k,sum2,d); if (k=2) sum2=arithmetic(j,c,d); sum3=sum1*sum2;if (k=3) if(sum2!=0) sum3=sum1/sum2;在输入方面,按要求,数据类型是 1 至13 的整数,符合则进行运算,不符合则重新输入。用if语句来实现,如下if (ai13 | ai!=int(ai) 在输出方面,运算结果等于 24就输出,利用调用的参数判断输出形式,有5种:(a+b)*(c+d),a*(b*(c+d) ,(a*(b+c)*d ,a*(b+c)*d) ,(a+b

3、)*c)*d。算法如下:void show(int type,int i,int j,int k,float a,float b,float c,float d)if (type=1) if(j=4 | j=5) if (k=4 | k=5) coutdsignk(csignjasignib)=24 endl; else )= 24 else if (k=4 | k=5) cout()=24 else=24 if (type=2 | type=3)cout2.3程序流程框图程序流程框图如图2-3所示: 图2-33程序调试31测试用例开始运行时的页面如图4-1所示:图4-1首先,测试程序能不能运

4、算出正确的结果,输入数据6,6,6,6,出现了44组符合要求的解,如图4-2所示。接着输入数据2,9,7,14,提示输入错误,重新输入2,7,5,13,能得到正确运行结果,如图4-2所示。输入4,9,11,13,不能运算得到24,显示“你所输入的数,经过四则运算后,不等于24点”,如图4-3所示。输入5,5,5,1,这组数据要运算得到24,一定会出现小数,因为只有一种运算,即5*(5 - 1 / 5),程序显示出正确结果,如图4-4所示。3.2调试运行结果程序第一次编译时,有19个错误,都是语法错误,修改后,能通过编译。第一次运行,并不能输出正确结果,主要原因有两个:一个是运算符号的穷举次数不

5、对,另一个是 4个数的运算先后顺序不对。其他的错误有除数不能为零,括号的位置不对。经过修改,调试后,能运算出正确的结果。3.1运行的结果如图:图4-2图4-3图4-4图4-54 心得体会通过这次课程设计,让我对一个程序的数据结构有更全面更进一步的认识,根据不同的需求,采用不同的数据存储方式,不一定要用栈,二叉树等高级类型,有时用基本的一维数组,只要运用得当,也能达到相同的效果,甚至更佳,就如这次的课程设计题目-计算24点,通过用for的多重循环,结合if判断,舍弃多余的循环,提高了程序的运行效率。在编写这个程序的过程中,我服习了之前学的基本语法,更加深刻的认识到循环是大部分程序的基本要素。结合

6、了这学期学的数据结构,分析算法的时间复杂度,不断改进算法,更加巩固了之前学的知识,比以前更能灵活运用。此次写的程序还有很大的发展空间,可以通过循环,重复输入数据,多次计算24点。还可以通过设计,让程序能计算出任意结果,不单是 24。在输出方面,为提高运行效率,可以设计只输出一组解。在输入方面,放宽数据类型,例如,可以运算负数,小数等。还可以输入多个数,不局限在4个数。随着数量增加,循环增加,为提高运行效率,可以考虑更改数据类型。此次课程设计,我受益匪浅,巩固旧知识的同时,学习了新的知识。更重要的是,它使我对数据结构产生了浓厚的兴趣,对编写程序更有信心。附件:源程序清单#includemath.

7、hint check; /标志能否运算出24float arithmetic(int flag,float m,float n) /进行四则运算 switch(flag) /判断运算符号,返回相对应的运算结果 case 0:return (m+n); case 1:return (m-n); case 2:return (m*n); case 3: if (n=0) return 10000; /除数为0,则返回10000,使之不能运算出24 return (m/n); case 4:return (n-m); case 5: if (m=0) return (n/m); default:re

8、turn 0;/利用参数type选择输出形式,利用参数i,j,k确定输出的运算符号 char sign6; /定义运算符号数组 sign0=+; sign1=- sign2=* sign3=/ sign4= /减法不符合交换律 sign5= /除法不符合交换律 if (type=1) /根据括号的类型做不同的输出 if(j=4 | j=5) /减法和除法 if (k=4 | k=5) / a*(b*(c+d) 形式) = 24 else / (a*(b+c)*d 形式 = 24 else if (k=4 | k=5)/ a*(b+c)*d) 形式) = 24 else / (a+b)*c)*d

9、 形式 if (type=2 | type=3)/ (a+b)*(c+d) 形式void calculate(float a,float b,float c,float d) /进行加、减、乘、除运算 int i,j,k; float sum1,sum2,sum3; /储存 3 次两两运算的结果 for (i=0;i+) / + - * / 4个运算符号选3个,有4*4*4=64种6;j+) / 3种运算符排列 有 3!=6 种 if (! d=0) / 括号的类型为() / 3为做除法运算的标志,除数为 0 时,跳过 /a,b做 以 i 为标志的运算,然后把值赋给sum1 /sum1,c做

10、以 j 为标志的运算,然后把值赋给sum2 /sum2,d做 以 k 为标志的运算,然后把值赋给sum3 if (fabs(sum3-24)ai; if (ai=int(ai) /判断是否为符合要求的整数 if(m! 输入错误,请重新输入! m=0; i+) /4的排列 4!=24,每中情况调用calculate=i) /第2数和第1个数不能重复=i) /第3数和第1,2个数不能重复=k) /第4数和第1,2,3个数不能重复 calculate(ai,aj,ak,al);/调用calculate函数,进行进行加、减、乘、除运算 if (check=0) /不能运算出24 cout你所输入的数,经过四则运算后,不等于24点

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1