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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C语言程序设计24的问题.docx

1、C语言程序设计24的问题 课 程 设 计 报 告课程名称 C语言程序设计 课题名称 计算24的问题 专 业 通信工程 班 级 通信1081 学 号 201013120122 姓 名 舒 晨 指导教师 罗雅博 曹燚 2012年 7月 6 日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计 课 题 计算24的问题 专业班级 通信工程 学生姓名 舒 晨 学 号 201013120122 指导老师 罗雅博 曹燚 审 批 任务书下达日期 2012 年 6 月 22 日任务完成日期 2012 年 7 月 6 日2011级通信工程专业C语言程序设计课程设计任务书一、课程设计的性质与目的 C语言

2、程序设计是通信工程专业重要的基础课,通过本课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握C语言程序设计的基本方法和技巧,进一步提高编写程序、阅读分析程序及上机操作、调试程序的能力。二、 设计要求每个同学至少选作设计题目一个,每个同学的学号末尾2位对8求余,所得数为对应的设计题目题号,该题为该生必做题。源程序必须格式规范,程序运行正确无误,有较强的容错性,界面友好。必须使用模块化程序设计方式,自己独立完成。三、课程设计报告要求设计报告格式: 1 统一封面(本任务书附带)、设计题目、设计要求以及系统功能需求分析; 2 总体设计:包括系统总体设计框架和系统功能模块图; 3 详细设计。包括主要功

3、能模块的算法设计思路以及对应的工作流程图; 4 主要源程序代码。包括存储设计说明,以及完整源程序清单(放在附录中);5 调试分析过程描述。包括测试数据、测试输出结果,以及对程序调试过程中存 在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等);6 总结。包括课程设计过程中的学习体会与收获、对C语言和本次课程设计的认 识等内容。7 附录(完整源程序清单):可以是手写或打印稿(注意:不能和其他同学一样)8 报告最后附上评分表(见任务书末页)四、检查要求: 1 每个人必须有可运行的程序,每个人要通过答辩; 2 每个人必须交C语言课程设计报告(打印稿)五、评分 1 根据平时上机考勤,且每

4、个人必须自己动手编写程序,不得抄袭;2 根据程序运行结果;3 学生能熟练地解释清楚指导老师对自己程序的提问;4 课程设计报告完成的质量和规范; 一、课程设计的性质与目的1二、课程设计题目1三、功能分析和程序流程图2 四、源程序代码7 五、程序运行截图14 六、总结和个人心得15 七、评分表16一、课程设计的性质与目的C语言程序设计是通信工程专业重要的基础课,通过本课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握C语言程序设计的基本方法和技巧,进一步提高编写程序、阅读分析程序及上机操作、调试程序的能力。二、课程设计题目计算24的问题 要求:在屏幕上输入1-10范围内4个整数(可以有重复),对

5、它们进行加减乘除四则运算后(可以任意的加括号限定计算的优先级),寻找计算结果等于24的表达式三、功能分析和程序流程图1.主函数流程图开 始输入4个数算出这4个数的全排列运用+,-,*,/进行计算是否有结果等于24的组合?输出该组合及算法结 束否是2.程序开始界面:void Hello( ) puts(n); puts( #); puts( # #);puts( # 输入4个整数,用它们构造一个算术四则运算, #); puts( # 使结果等于24。每个数恰好利用一次。 #); puts( # (可输出有重复的全部解) #); puts( # #); puts( #); puts( # #);

6、puts( # 设计者:舒晨 #); puts( # 时 间:2012-7-2 #); puts( # #); puts( #); puts(n); 3.操作数栈, 生成n个数中取m个数的全排列。m = n时即为n个数的全排列, 每产生一个排列,放入b中。STACK opnstk; / 操作数栈 int bN, K = 0; / a的备份/用于生产排列的工作区 void gen(int n, int m) / 生成n个数中取m个数的全排列。m = n时即为n个数的全排列。- / - 每产生一个排列,放入b中。 void gen24( ); / 函数声明 int i; if(m = 0) for

7、(i = 0; i K; +i) printf(%d , bi); putchar(n); / 如果只是为了输出排列 gen24( ); / 函数调用 else for(i = 0; i n; +i) if(ai != .) bK+ = ai; ai = .; gen(n, m - 1); ai = b-K; 4.运用+,-,*,/运算符来计算着四个数所组成的各种组合并得出结果,判断结果是否等于24,若等于24,则输出这组排列式及算法,若没有等于24的组合,则重新输入4个数。void gen24( ) / 用b中的4个数产生等于24的算式 bool calc(float, char, floa

8、t, float&); / 函数声明 int i, jn, jo, p0, p1, p2; char enumopr3, op; float a1, a2, c; const char *p; for(i = 0; i K; +i) printf(%d , bi); putchar(n); for(i = 0; i 5; +i) / 尝试每种栈模式 for(p0 = 0; p0 4; +p0) enumopr0 = oprp0; for(p1 = 0; p1 4; +p1) enumopr1 = oprp1; for(p2 = 0; p2 4; +p2) enumopr2 = oprp2; o

9、pnstk.reset( ); for(jn = jo = 0, p = stkmodei; *p != ; +p) switch(*p) case n: opnstk.push(bjn+); break; case #: a2 = opnstk.pop( ); a1 = opnstk.pop( ); op = enumoprjo+; if(calc(a1, op, a2, c) opnstk.push(c); else goto loc_1; if(abs(c - 24) eps) c = a / b; else bRet = false; return bRet; 四、源程序代码#incl

10、ude void Hello( ) puts(n); puts( #); puts( # #); puts( # 输入4个整数,用它们构造一个算术四则运算, #); puts( # 使结果等于24。每个数恰好利用一次。 #); puts( # (可输出有重复的全部解) #); puts( # #); puts( #); puts( # #); puts( # 设计者:舒晨 #); puts( # 时 间:2012-7-2 #); puts( # #); puts( #); puts(n); const int N = 4; / 操作数的个数/栈的极限高度 #define eps 1E-6 /

11、浮点精度 inline float abs(float x) return x = 0.0 ? x : -x; / 栈模板 template class STACK protected: T aN; / 栈的存储体 int n; / 栈的高度/未来栈顶位置 public: STACK( ) reset( ); / 栈初始化 void reset( ) n = 0; / 清空栈 void push(T x) if(n 0) return a-n; else puts(栈下溢); / 弹出栈顶数据 / T top( ) if(n 0) return an-1; else puts(栈空); / 查

12、询栈顶元素 / bool isempty( ) return n = 0; / 查询栈是否为空 / int heigth( ) return n; / 查询栈的高度 ; const char opr = +-*/; int aN; / 输入的4个数 STACK opnstk; / 操作数栈 int bN, K = 0; / a的备份/用于生产排列的工作区 void gen(int n, int m) / 生成n个数中取m个数的全排列。m = n时即为n个数的全排列。- / - 每产生一个排列,放入b中。 void gen24( ); / 函数声明 int i; if(m = 0) / for(

13、i = 0; i K; +i) printf(%d , bi); putchar(n); / 如果只是为了输出排列 gen24( ); / 函数调用 else for(i = 0; i n; +i) if(ai != .) bK+ = ai; ai = .; gen(n, m - 1); ai = b-K; / 用后缀表达式计算,用中缀表达式输出。 / - n表示将一个操作数压栈,#表示进行一步运算。 / - abcd指操作数的输出顺序,123指运算符的输出顺序。 const char stkmode522 = nnnn# = a3(b2(c1d), nnn#n# = a3(b1c)2d),

14、nnn#n# = (a2(b1c)3d, nn#nn# = (a1b)3(c2d), nn#n#n# = (a1b)2c)3d, ; void gen24( ) / 用b中的4个数产生等于24的算式 bool calc(float, char, float, float&); / 函数声明 int i, jn, jo, p0, p1, p2; char enumopr3, op; float a1, a2, c; const char *p; / for(i = 0; i K; +i) printf(%d , bi); putchar(n); / 如果只是为了输出排列 for(i = 0; i

15、 5; +i) / 尝试每种栈模式 for(p0 = 0; p0 4; +p0) enumopr0 = oprp0; for(p1 = 0; p1 4; +p1) enumopr1 = oprp1; for(p2 = 0; p2 4; +p2) enumopr2 = oprp2; opnstk.reset( ); for(jn = jo = 0, p = stkmodei; *p != ; +p) switch(*p) case n: opnstk.push(bjn+); break; case #: a2 = opnstk.pop( ); a1 = opnstk.pop( ); op = e

16、numoprjo+; if(calc(a1, op, a2, c) opnstk.push(c); else goto loc_1; if(abs(c - 24) eps) c = a / b; else bRet = false; return bRet; int main( ) Hello( ); while(true) printf(请输入%d个整数(用空白分隔。结束程序请输入0): , N); for(int i = 0; i N; +i) scanf(%d, &ai); if(ai = 0) goto loc_0; K = 0; gen(N, N); loc_0: return 0;

17、 五、程序运行截图 1.程序开始界面:2.输入1,5,8,9的运行结果:3.输入的数字不能得出24的结果:六、总结和个人心得设计本程序,起因于儿时的游戏24点,游戏简单富有思考价值。首先输入1-10范围内的任意4个数,通过不同的组合和运行不同的算法结合在一起反弹能不能是他算出的结果等于24。课程设计是培养学生综合运用搜学的知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力和集体训练和考察的过程。经过自己的努力终于做出来了,但是还是存在一些缺陷,这是我子经济对这个程序的 思路:先把各种组合和算法列出来,然后通过不同的算法搭配来计算每种排列所得到结果,若计算出来的结果等于24,直接输出,再计算下一个排列,一直循环知道算完所有的排列数。但是后有一点小问题,就是输入有些数字后输出的式子有很多重复的,只是前后位置换了一下,此问题还没有解决,希望能从以后的学习中解决这个问题。七、评分表计算机与通信学院课程设计评分表设计内容: 计算24的问题 项 目评 价课程设计期间表现情况课程设计内容完成情况课程设计答辩成绩课程设计报告完成质量综 合 成 绩 日 期: 2012年7月 6 日

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

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