C语言程序设计24的问题_第1页
C语言程序设计24的问题_第2页
C语言程序设计24的问题_第3页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告课程名称C语言程序设计课题名称计算24的问题专业通信工程班级通信1081学号201013120122姓名舒晨指导教师罗雅博曹簌2012年7月6日湖南工程学院课程设计任务书课程名称C语言程序设计课题计算24的问题专业班级通信工程学生姓名舒晨学号201013120122指导老师罗雅博曹簌审批任务书下达日期2012年6月22日任务完成日期2012年7月6日2011级通信工程专业C语言程序设计课程设计任务书一、课程设计的性质与目的«c语言程序设计是通信工程专业重要的基础课,通过本课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握C语言程序设计的基本方法和技巧,进一步提高编写程序

2、、阅读分析程序及上机操作、调试程序的能力。二、设计要求每个同学至少选作设计题目一个,每个同学的学号末尾2位对8求余,所得数为对应的设计题目题号,该题为该生必做题。源程序必须格式规范,程序运行正确无误,有较强的容错性,界面友好。必须使用模块化程序设计方式,自己独立完成。三、课程设计报告要求设计报告格式:1 统一封面(本任务书附带)、设计题目、设计要求以及系统功能需求分析;2 总体设计:包括系统总体设计框架和系统功能模块图;3 详细设计。包括主要功能模块的算法设计思路以及对应的工作流程图;4 主要源程序代码。包括存储设计说明,以及完整源程序活单(放在附录中);5调试分析过程描述。包括测试数据、测试

3、输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等);6总结。包括课程设计过程中的学习体会与收获、对C语言和本次课程设计的认识等内容。7附录(完整源程序活单):可以是手写或打印稿(注意:不能和其他同学一样)8报告最后附上评分表(见任务书末贞)四、检查要求:1 每个人必须有可运行的程序,每个人要通过答辩;每个人必须交C语言课程设计报告(打印稿)五、评分1根据平时上机考勤,且每个人必须自己动手编写程序,不得抄袭;2根据程序运行结果;3学生能熟练地解释活楚指导老师对自己程序的提问;4课程设计报告完成的质量和规范;一、课程设计的性质与目的1二、课程设计题目

4、1三、功能分析和程序流程图2四、源程序代码7五、程序运行截图14六、总结和个人心得15七、评分表16课程设计的性质与目的«C语言程序设计是通信工程专业重要的基础课,通过本课程设计使学生进步巩固课堂所学知识,全面熟悉、掌握C语言程序设计的基本方法和技巧,进步提高编写程序、阅读分析程序及上机操作、调试程序的能力。、课程设计题目计算24的问题要求:在屏幕上输入1-10范围内4个整数(可以有重复),对它们进行加减乘除四则运算后(可以任意的加括号限定计算的优先级),寻找计算结果等于24的表达式三、功能分析和程序流程图1.主函数流程图2.程序开始界面:voidHello()(puts("

5、;n");puts("#'");puts("#");puts(-#输入4个整数,用它们构造一个算术四则运算,#");puts(-#使结果等丁24。每个数恰好利用一次。#");puts(-#(可输出有重复的全部解)#");puts("#");puts("#");puts("#");puts(-#设计者:舒晨#");puts("#时间:2012-7-2#");puts("#");puts("#

6、");puts("n");3.操作数栈,生成n个数中取m个数的全排歹0。m=n时即为n个数的全排歹U,每产生一个排列,放入b中。STACK<float,N>opnstk;/操作数栈intbN,K=0;/a的备份/用丁生产排列的工作区voidgen(intn,intm)/生成n个数中取m个数的全排歹Mm=n时即为n个数的全排列。-/-每产生一个排列,放入b中。voidgen24();/函数声明inti;if(m=0)(for(i=0;i<K;+i)printf("%d",bi);putchar('n');/如果只

7、是为了输出排列gen24();/函数调用elsefor(i=0;i<n;+i)if(ai!='.')(bK+=ai;ai='.'gen(n,m-1);ai=b-K;4.运用+,-,*,/运算符来计算着四个数所组成的各种组合并得出结果判断结果是否等于24,若等于24,则输出这组排列式及算法,若没有等于24的组合,则重新输入4个数。voidgen24()/用b中的4个数产生等于24的算式boolcalc(float,char,float,float&);/函数声明inti,jn,jo,p0,p1,p2;charenumopr3,op;floata1,a

8、2,c;constchar*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;opnstk.reset();for(jn=jo=0,p=stkmodei;*p!=''+p)switch(*p)case'n':opns

9、tk.push(bjn+);break;case'#':a2=opnstk.pop();a1=opnstk.pop();op=enumoprjo+;if(calc(a1,op,a2,c)opnstk.push(c);elsegotoloc_1;if(abs(c-24)<eps)while(*+p!=0)switch(*p)case'(':case')':break;case'a':case'b':case'c':case'd':printf("%d",b*p

10、-'a');break;case'1':case'2':case'3':printf("%c”,enumopr*p-'1');break;putchar('n');gotoloc_2;loc_1:continue;loc_2:return;boolcalc(floata,charop,floatb,float&c)(staticboolbRet;switch(bRet=true,op)(case'+':c=a+b;break;case'-':c=a-

11、b;break;case'*':c=a*b;break;case'/':if(abs(b)>eps)c=a/b;elsebRet=false;returnbRet;四、源程序代码#include<stdio.h>voidHello()(puts("n");puts("#");puts("#");puts("#输入4个整数,用它们构造一个算术四则运算,#");puts("#佬吉果等于24"数恰好利用一次。#");puts("#(

12、可输出有重复的全部解)#");puts("#");puts("#'");puts("#");puts("#凯者:舒晨#");puts("#时间:2012-7-2#");puts("#");puts("#");puts("n");constintN=4;/操作数的个数/栈的极限高度#defineeps1E-6/浮点精度inlinefloatabs(floatx)returnx>=0.0?x:-x;/&tem

13、plate<classT,intN>classSTACKprotected:TaN;/栈的存储体intn;/栈的高度/未来栈顶位置public:STACK()reset();/栈初始化voidreset()n=0;/清空栈voidpush(Tx)if(n<N)an+=x;elseputs("溢”);/压入数据到栈顶Tpop()if(n>0)returna-n;elseputs("栈下溢”);/弹出栈顶数据/Ttop()(if(n>0)returnan-1;elseputs("栈空');/查询栈顶元素/boolisempty()

14、(returnn=0;/查询栈是否为空/intheigth()(returnn;/查询栈的高度;constcharopr="+-*/"intaN;/输入的4个数STACK<float,N>opnstk;/操作数栈intbN,K=0;/a的备份/用于生产排列的工作区voidgen(intn,intm)/生成n个数中取m数的全排歹!J。m=n时即为n个数的全排列。-(/-每产生一个排列,放入b中。voidgen24();/函数声明inti;if(m=0)(/for(i=0;i<K;+i)printf("%d",bi);putchar(

15、9;n');/如果只是为了输出排列gen24();/函数调用elsefor(i=0;i<n;+i)if(ai!='.')bK+=ai;OZCT5LewoM-doISKOEnuCD奇qoNdodo巨£SKfif=(03wo_MWOM畚8C5OM=O_£ooq¥*£寸Z卜与K源寸s>s旺X()寸Zu*po>X客s(捋(qx)n#u#u#UF【(pzo)s(qx)n#uu#UF客s(Eq)ze)n#u#UUF(pz(Eq)n#u#uuu=Mpo)zq)n#uuuu=)HR=gQPOE*s2。wuo。u=ziqn【奇-u

16、Euu(d6-.H奇constchar*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;opnstk.reset();for(jn=jo=0,p=stkmodei;*p!=''+p)switch(*p)cas

17、e'n':opnstk.push(bjn+);break;case'#':a2=opnstk.pop();a1=opnstk.pop();op=enumoprjo+;if(calc(a1,op,a2,c)opnstk.push(c);elsegotoloc_1;if(abs(c-24)<eps)while(*+p!=0)switch(*p)case'(':case')':break;case'a':case'b':case'c':case'd':printf(&

18、quot;%d",b*p-'a');break;case'1':case'2':case'3':printf("%c”,enumopr*p-'1');break;putchar('n');gotoloc_2;loc_1:continue;loc_2:return;boolcalc(floata,charop,floatb,float&c)(staticboolbRet;switch(bRet=true,op)(case'+':c=a+b;break;cas

19、e'-':c=a-b;break;case'*':c=a*b;break;case'/':if(abs(b)>eps)c=a/b;elsebRet=false;returnbRet;intmain()(Hello();while(true)(printf(-请输入昨整数(用空白分隔。结束程序请输入0):",N);for(inti=0;i<N;+i)(scanf("%d",&ai);if(ai=0)gotoloc_0;K=0;gen(N,N);loc_0:return0;五、程序运行截图1. 程序开始界面:2. 输入1,5,8,9的运行结果:请

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论