c语言课程设计报告-- 使用菜单选择趣味程序.doc_第1页
c语言课程设计报告-- 使用菜单选择趣味程序.doc_第2页
c语言课程设计报告-- 使用菜单选择趣味程序.doc_第3页
c语言课程设计报告-- 使用菜单选择趣味程序.doc_第4页
c语言课程设计报告-- 使用菜单选择趣味程序.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

青岛农业大学课程设计报告 题 目: 使用菜单选择趣味程序 姓 名: 杨丽娜 学 院: 理学与信息科学学院 专 业: 通信工程 班 级: 2班 学 号: 20123239 指导教师: 年月日 目 录一 设计目的.1二 课程设计的内容.2三 课程设计的要求与数据.3四 课程设计应完成的工作.4五 总体设计(包含几大功能模块).5六 详细设计(各功能模块的具体实现算法流程图).6七 调试分析(包含各模块的测试用例,及测试结果).7八 总结.8十 参考资料.9一 设计目的进一步加深、巩固所学专业课程(C语言程序设计)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。结合实际深入理解高级语言程序设计的基本概念、原理及方法。运用所学的基础知识开发一个小型的程序,能根据问题的需要构造所需的数据结构,设计适合的算法,解决问题。掌握设计任务的具体要求,进行设计、调试软件的具体方法、步骤和技巧。对一个实际课题的软件设计有基本了解,拓展知识面,激发在此领域中继续学习和研究的兴趣,为学习后续课程做准备。二 课程设计的内容使用菜单选择趣味程序设计目的:本程序旨在训练学生的编程能力,使用C语言最基本的知识,训练结构化程序设计的基本技术。功能:设计分两步,首先设计一个含有多个菜单项的菜单演示程序,然后再为这些菜单项配上相应的功能。要求:使用数字16来选择菜单项,其他输入则不起作用。其实是5道编程题:1)FindNum 使用穷举法寻找满足下式中的i 的值(30+i)*6237=(10*i+3)*35642)FindRoot 求方程的根的程序3)Detective 一辆汽车撞人后逃跑。4个目击者提供如下线索:甲:牌照三、四位相同; 乙:牌号为31xxxx;丙:牌照五、六位相同; 丁:三到六位是一个整数的平方4)Bear本题是一个笑话,话说有一只狗熊到玉米地里掰玉米,一边掰一边吃。第一天吃了一半,又拿走一个回去喂小狗熊。第二天又去吃了剩下的一半,走时仍然带一个回去喂小狗熊。以后每天都吃前一天剩下的一半,拿走一个。到第十天时,地里只剩下一个玉米。求地里一共有多少玉米。5)Diamond本题要求编制打印以下图案的程序,注意题目要求在左边留出一定空格 * * * * * * *6)GoodBye! 结束程序运行。三 课程设计的要求与数据1用C语言实现系统;2使用数字16来选择菜单项,其他输入则不起作用;四 课程设计应完成的工作(1)编写算法;(2)算法测试,并有具体的测试结果和结果分析;(3)撰写课程设计报告。内容包括:1) 封面扉页2) 设计任务书3) 目录4) 总体设计方案(包括流程图)5) 使用说明及运行实例(包括界面)6) 成员设计内容简介7) 项目源程序代码(注意注释的使用)8) 指导教师评语五 总体设计(包含几大功能模块) 通过输入1-6来进行菜单选择,来选取自己需要的程序结果,从而得到想要的结果。六 详细设计(各功能模块的具体实现算法流程图)使用菜单选择程序 菜单是应用程序的界面,控制语句用来改变程序执行的顺序,是实现结构化程序设计的基础。设计一个比较实用的菜单,通过菜单选择不同的功能。 设计分为两步:首先设计一个含有多个菜单项的菜单演示程序,然后再为这些菜单项配上相应的功能。一、设计一个菜单程序(1)菜单内客程序运行后,给出6个菜单项的内容和输入提示。 1FindNum 2FindRoot 3Detective 4Bear 5Diamond 6Goodbye! Input 1-6:()设计要求使用数字1-6来选择菜单项,其他输人则不起作用。二、增加菜单项的处理功能 以设计的菜单为基础,增加菜单项的处理功能。菜单项设计要求 这其实是5道编程题,目的是锻炼使用控制语句的能力。 ()FindNum 利用计算机的计算速度快的特点,把所有可能的数都试一下,从中找出符合条件的数。这就是所谓的穷举法。 某位的数字只有0-9个数字,显然已经排除了为0的可能性,将1-9种可能性拿来试验,即可找到合适的数字。由此可见,就是寻找满足下式面的i值: (30+i)6237=(10i+3)3564 ()FindRoot 这里要求编制一个求方程ax2+bx+c=0的根的程序。一般将系数设计成float型,可以把变量设为double型,使用库函数sqrt求平方根,sqrt在头文件math.h中定义。假设 disc=bb4ac可以根据d大于、等于或小于零来决定求解方法。 if(disc0)/有两个不相等的实数解else if ( disc = = 0 )/有两个相等的实数解 else /有两个不相等的虚数解()Detective这是一道侦探题。一辆汽车憧人后逃跑。4个目击者提供如下线索: 甲:牌照三、四位相同; 乙:牌号为31xxxx; 丙:牌照五、六位相同; 丁:三一六位是一个整数的平方。为了从这些线索中求出牌照号码,只要求出后四位再加上310000即可。这四位又是前两位相同,后两位也相同,互相又不相同并且是某个整数的平方的数。可以仍然使用穷举法,利用计算机的计算速度快的特点,把所有可能的数都试一下,从中找出符合条件的数。因为后面4位数,1000的平方根31,所以穷举实验时不需从1开始,而是从31开始寻找一个整数的平方。下面直接使用for语句格式,给出算法思想。 int i,a,b,c,d;long m; for(i=32;i0)x1=(x2+1)*2; /*第1天玉米数是第2天玉米数加1后的2倍*/ x2=x1;day-;printf(total=%dn,x1);return 0;()Diamond本题要求编制打印以下图案的程序,注意题目还要求在左边留出一定空格。 * * * * * * *()Goodbye!这里除了输出一个简单的信息之外,还必须结束程序运行。 七 调试分析(包含各模块的测试用例,及测试结果) 7.1源程序#include#include/*定义杂相函数及内存分配函数*/#include/*字符处理*/#includeint menu_select();int FindNum();int FindRoot();int Detective();int Bear();int Diamond();int GoodBye();void main() /*主函数*/ for(;)/*一直循环直到用break等终止,和while(1)有着同样的作用*/ switch(menu_select() case 1: FindNum(); system(pause); break; case 2: FindRoot(); system(pause); break; case 3: Detective(); system(pause); break; case 4: Bear(); system(pause); break; case 5: Diamond(); system(pause); break; case 6: printf(GoodBye!n); system(pause); exit(6); int menu_select() /*主函数菜单*/ char c; do system(cls); printf(1.FindNumn ); printf(2.FindRootn); printf(3.Detectiven); printf(4.Bearn); printf(5.Diamondn); printf(6.GoodByen); c=getchar(); while(c6); return(c-0);int FindNum() /*找数字*/ int i; for(i=0;i10;i+) if(30+i)*6237=(i*10+3)*3564) printf(The answer is %dn,i); printf(3%d*6237=%d3*3564n,i,i); break; return 0; int FindRoot() /*找方程的根*/double a,b,c,disc,x1,x2,realpart,imagpart;/*定义double型变量*/scanf(%lf%lf%lf,&a,&b,&c);printf(The equation);if(fabs(a)=1e-6)printf(is not a equationn);elsedisc=b*b-4*a*c;if(fabs(disc)1e-6)x1=(-b+sqrt(-disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf(has distinct real roots:%8.4fand%8.4fn,x1,x2);elserealpart=-b/(2*a); /*realpart是复根的实部*/imagpart=sqrt(disc)/(2*a); /*realpart是复根的虚部*/printf(has complax rootsn); printf(%8.4f+%8.4fin,realpart,imagpart); /*输出一个复数*/printf(%8.4f+%8.4fin,realpart,imagpart); /*输出另一个复数*/return 0;int Detective() /*找牌照*/ int i,a,b,c,d;long m; for(i=32;i0)x1=(x2+1)*2; /*第1天玉米数是第2天玉米数加1后的2倍*/ x2=x1;day-;printf(total=%dn,x1);return 0;int Diamond() /*钻石*/int i,j,k; for(i=0;i=3;i+)/*控制循环次数,i由1变到3,共循环3次*/ for(j=0;j=2-i;j+) printf( ); for(k=0;k=2*i;k+) printf(*); printf(n); for(i=0;i=2;i+) for(j=0;j=i;j+) printf( ); for(k=0;k4-2*i;k+) printf(*); printf(n); return 0;int GoodBye() /*再见*/char a=G,b=o,c=o,d=d,e=B,f=y,g=e,h=!; /*定义8个字符变量并初始化*/putchar(a); /*向显示器输出字母G*/putchar(b); /*向显示器输出字母o*/putchar(c); /*向显示器输出字母o*/putchar(d); /*向显示器输出字母d*/putchar(e); /*向显示器输出字母B*/putchar(f); /*向显示器输出字母y*/putchar(g); /*向显示器输出字母e*/ putchar(h); /*向显示器输出符号!*/putchar(n); /*向显示器输出一个换行值*/return 0;7.2主要程序运行结果1)当输入的菜单项为1时,输出结果如图a所示图a2)当输入的菜单项为2时有以下3种情况 (1)输入a,b,c的值1,2,1,得到两个相等的实根,输出结果如图b所示图b(2)输入a,b,c的值1,2,2,得到两个共轭的复根,输出结果如图b所示图b(3)输入a,b,c的值2,6,1,得到两个不等的实根,输出结果如图b所示图b3)当输入的菜单项为3时,输出结果如图c所示图b4)当输入的菜单项为4时,输出结果如图d所示图d5)当输入的菜单项为5时,输出结果如图e所示图e6)当输入的菜单项为6时,输出结果如图f所示 图f 八 总结由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。在用的时候难免出现这样那样的错误。如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。解决的这个问题的办法是调整。一个系统的菜单和提示信息非常重要。如果没有这些用户根本不知道怎么用你设计的这个系统。在设计的调试过程中也无法顺利的完成调试工作。有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。回顾起此次课程设计,我感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整两个礼拜的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识熟悉了,本次课程设计结束了,我们通过这次实践学到了许多知识。学到了设计一个简单的系统。要注意哪些方面。也使我们知道自己哪些方面做得还不够。这不仅是程序设计,更是锻炼我们处理问题的能力,同时也使我了解编写程序是件细心活,稍不留神就会出错,这就必须要求我们对待事情要认真!在编写程序的过程中,错误不断出现,不同的类型(如少写了一个符号,写错了字

温馨提示

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

评论

0/150

提交评论