欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    程序设计基础课程 综合设计实践教学课题报告C语言实践课程综合大作业.doc

    • 资源ID:2385455       资源大小:272.50KB        全文页数:14页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    程序设计基础课程 综合设计实践教学课题报告C语言实践课程综合大作业.doc

    昆明理工大学程序设计基础课程综合设计实践教学课题报告课程名称: C语言程序设计综合大作业 课题名称:数学计算工具程序设计 组长:学号 201310401344 姓名钟伦赋 组员:学号 201310401321 姓名朱潘伟学号 201310401309 姓名陆光道学院: 信息工程与自动学院 专业班级: 自动化133 指导教师: 郑明雄 昆明理工大学计算中心2014年5 月 日 填写格式及说明1、 系统概述 (一)功能概述主函数:大概思路:显示界面并提示选择功能函数判断选择的正确性调用所选功能函数选择是否继续调用当前功能函数判断选择的正确性返回主菜单继续运行(1) 实现主函数完成选项菜单集成各个计算功能函数;(2) 实现求任意数的阶乘;(3) 实现求组合数;(4) 实现求任意两个整数的最大公约数和最小公倍数;(5) 实现判断任意数是否素数;(6) 实现显示菲波拉契数列的前N项。各功能函数的数据输入形式和范围在显示界面上有适当提示,基输入出错或超出范围则提示重新输入。所输出的数据仅在屏幕上显示,不作保存。本程序的优点在于多处使用循环结构控制程序运行方向,根据需求轻松实现循环调用各功能函数。此程序没什么大的难点,而循环结构却成为本程序主函数的一大亮点。如用do-while 循环结构,或判断所输入的字符是否为所要求输入的字符,或反复调用正在运行的功能函数,或返回主菜单继续运行。整个主函数被囊括在一个大的do-while 循环结构当中,使其实现不断循环,其中借助getchar语句实现运行的停顿。因而每个getchar语句既起到了录入字符的作用又起到了运行停顿的作用,当用户一输入数据时,程序便可立刻运行,快捷完成其功能,而不需要重新启动程序。本程序利用菜单显示提供了较好的人机交互界面。(二)算法概述:从主菜单中选择相对应的数字,使程序进入不同的程序模块,用switch实现其功能,程序共分为五个模块,分别为:主函数、jicheng( )函数(求阶乘)、comb( )函数(求组合数)、qiubeishu ( )函数(求最小公倍数和最大公约数)、qiusushu( )函数(求素数)、Fibonacci( )函数(求菲波拉契数列)、 remenu() 函数(返回主菜单) 各函数主要算法见个流程图2、数据结构设计1、 数据的定义:主要定义了int、ouble 、#define MAX 48char 、unsigned long int2、 数据的输出形式:%d(整形)三、 模块设计1、说明、用for循环求由实参传给形参的数、用do-while循环、Switch函数实现功能的选择、调用Fibonacci数列函数2、功能要求及分工:各计算功能单独编写成函数,在主函数中通过选项菜单调用函数。主函数完成选项菜单集成各个计算功能函数;(7) 求任意数的阶乘;(8) 求组合数;(9) 求任意两个整数的最大公约数和最小公倍数;(10) 判断任意数是否素数;(11) 显示菲波拉契数列的前N项。各功能函数的数据输入形式和范围在显示界面上有适当提示,基输入出错或超出范围则提示重新输入。所输出的数据仅在屏幕上显示,不作保存。3、程序的控制流程入下图所示。N0<d<6?N1Y2YY4Y 5 3调用判断素数函数调用组合数函数调用输出数列函数调用倍数函数调用组合数函数调用求阶乘函数调用输出数列函数调用判断素数函数调用求约倍数函数调用求组合数函数调用阶乘函数输入d输入d输入d输入dh=?输入数字d开始Yd=?d=?d=?d=?d=?输入dYNNN4调试运行及操作说明(一)、调试 错误:原因:在输出语句printf()中格式控制输出的输出了类型写错了将%f写成了%d,导致数据丢失才会导致这个错误。 void comb()int m,n; double result,a,b,c;do scanf("%d%d",&m,&n); while(m>n); result=a/(b*c); printf("所要求的组合数为=%dn",result);改正:printf("所要求的组合数为=%0.fn",result);(二)、程序测试 1、菜单界面/菜单主界面组员共同设计/ 2、求阶乘:/本人设计求阶乘和组合数的部分是由我完成的,首先定义自定义求阶乘函数,然后写入代码实现功能,代码如下:double jiecheng(t) /用户自定义一个函数,用来求任意数的阶乘 int t; int i; double sum=1; for(i=1;i<=t;i+) /用for循环求由实参传给形参的数 sum=sum*i; return(sum); /返回函数值 3、求组合数:/本人设计求组合数:根据上面求阶乘函数完成,首先自定义求组合数函数comb( ),在编写代码实现其功能,其中在求组合数函数中调用了上面jiecheng()函数,其代码如下:void comb()int m,n; double result,a,b,c;do printf("输入m和n的值,用空格分隔(m<=n),并回车确认:n"); /用do循环判断当m<n时执行程序 scanf("%d%d",&m,&n); /输入m,n的值 while(m>n); /判断当m>n时,循环继续,直到m<n时结束循环 a=jiecheng(n);b=jiecheng(m);c=jiecheng(n-m); result=a/(b*c); /调用下面定义的函数进行组合数运算 printf("所要求的组合数为=%0.fn",result); 4、求任意整数的最小公倍数和最大公约数: /以下另外四个功能函数都是其他组员完成 5、判断任意数是否是素数: 6、显示菲波拉契数列的前n项: 7、退出程序:五、程序清单(程序源代码):/综合大作业#include "stdio.h" /文件包含#include "math.h"#include "stdlib.h"char d,h; /定义全局字符变量 /*功能函数:求任意数的阶乘*/double jiecheng(t) /用户自定义一个函数,用来求任意数的阶乘 int t; int i;double sum=1; for(i=1;i<=t;i+) /用for循环求由实参传给形参的数 sum=sum*i; return(sum); /返回函数值 /*功能函数:求组合数*/void comb()int m,n; double result,a,b,c;do printf("输入m和n的值,用空格分隔(m<=n),并回车确认:n"); /用do循环判断当m<n时执行程序 scanf("%d%d",&m,&n); /输入m,n的值 while(m>n); /判断当m>n时,循环继续,直到m<n时结束循环 a=jiecheng(n);b=jiecheng(m);c=jiecheng(n-m); result=a/(b*c); /调用下面定义的函数进行组合数运算 printf("所要求的组合数为=%0.fn",result); /*功能函数:求任意两个整数的最大公约数和最小公倍数*/void qiubeishu() /自定义函数 int a,b,num1,num2,temp; /定义整型变量a,b,num1,num2,temp(中间变量) printf("请输入两个整数,用空格分隔,并回车确认:n"); scanf("%d%d",&num1,&num2); /键盘敲入两个数num1,num2 if(num1<num2) /把num1与num2中较大的数赋给a,较小的数赋给btemp=num1; num1=num2; num2=temp;a=num1; b=num2; while(b!=0) /利用辗除法,直到b为0为止 temp=a%b; a=b; b=temp; printf("公约数:%dn",a); printf("公倍数:%dn",num1*num2/a);/功能函数:判断任意数上否素数void qiusushu() /自定义函数 int n,k,flag; /定义变量,flag是一个标志变量 double m; printf("n 请输入一个整数,并回车确认:"); /输入要判断的整数 scanf("%k",&n); /将输入的整数存入变量n的空间 m=sqrt(n); /定义m为n的平方根 flag=0;for(k=2;k<=m;k+) /从2到m之间的整数逐个判断if(n%k=0)flag=1; break; /若条件成立跳出循环 if(flag) /判断标志变量,确定结果 printf("%d 不是素数。n",n); /输出结果 else printf("%d 是素数。n",n); /*功能函数:显示菲波拉契数列的前n项*/void Fibonacci()#define MAX 48 /定义宏名并赋值int N,i,temp,Ln=0; /定义整型变量,给Ln赋初值unsigned long int f1=1,f2=1,f3; /定义无符号长整型常量while(1) /永循环printf("请输入菲波拉契数列的项数,并回车确认n"); /提示输入temp=scanf("%d",&N); /输入项数if(temp=1&&(N>0&&N<MAX) /判断N的值break; printf("输入的数据非法,请重新输入项数!n");scanf("%d",&N); /重新输入getchar(); printf("nn"); /换两行printf("菲波拉契数列的前%d项为:nn",N); /输出数列的各项printf("%12ld%12ld",f1,f2); Ln=2;for(i=3;i<=N;i+)f3=f1+f2; /数列通项if(Ln+%6=0) printf("n"); /每6个数换行printf("%12lu",f3); /输出f3f1=f2;f2=f3; printf("nn"); /换行/*功能函数:判断继续还是返回主菜单*/void remenu() /自定义函数 printf("n是否继续本项操作?请选择y/n并回车确认:n"); /当所输入的字符不是小写的或大写的y和n时提示重新输入for(d='a'd!='y'&&d!='n'&&d!='Y'&&d!='N'd=getchar() )printf("");/*主函数功能:显示界面菜单选项,集成调用各功能函数等.*/main()do /用do-while 循环结囊括整个主函数体,目的是让程序在执行完任务后立刻返回主菜单 printf("*n"); printf("nnnnn 数学计算工具 nnnnn"); printf("* *n"); printf("* *n"); printf("* 欢 迎 使 用! *n"); printf("* *n"); printf("* *n"); printf("* 请按数字键选择功能函数: *n"); printf("* *n"); printf("* 1,求任意数的阶乘 *n"); printf("* *n"); printf("* 2,求组合数 *n");/显示友好界面 printf("* *n"); printf("* 3,求任意两个整数的最大公约数和最小公倍数 *n"); printf("* *n"); printf("* 4,判断任意数上否素数 *n"); printf("* *n"); printf("* 5,显示菲波拉契数列的前n项 *n"); printf("* *n"); printf("* 6:结束程序运行 再见! *n"); printf("* *n"); printf("*n"); printf("n"); /* do-while 循环结构判断所输入的数据合法性*/ printf("请按1-6数字键选择功能函数,按回车键确认:n"); do h=getchar(); while(h<'1'|h>'6'); /*switch结构函数内的所有do-while循环结构被用来根据用户需要而重复执行一个功能函数*/ switch(h) case '1': do int x;double y; /调用求阶乘函数 doprintf("声明:由于资源有限,只能输入0-170之间的任何整数,否则将导致错误结果!n请输入所要求阶乘的数:n"); scanf("%lu",&x);while(x<0); y=jiecheng(x); printf("所要求的阶乘%lu!=%len",x,y); remenu(); while(d='y'|d='Y');break; case '2': do comb(); remenu(); while(d='y'|d='Y'); break; /调用求组合数函数 case '3': doqiubeishu();remenu(); while(d='y'|d='Y'); break; /调用求最大公约数和最小公倍数函数 case '4': do qiusushu(); remenu(); while(d='y'|d='Y'); break; /调用判断是否是素数函数 case '5': do Fibonacci(); remenu(); while(d='y'|d='Y'); break; /调用Fibonacci数列函数 case '6': printf("结束程序运行 再见!n"); exit(0); while(1); /返回主菜单六、总结和体会: ( 1 )组长:经过一个月的努力与奋斗我们组通过组员之间的分工配合和精诚合作终于完成了这次综合设计,在做的过程中,我们组员之间也有过意见不统一的时候,但是经过讨论后最终达成了一致的意见,在做的过程中我们付出汗水的同时也收获了一种快乐和成就感。在做这个大作业的过程中我们不仅学到了很多有关C语言的知识同时也体会到了许多人生感悟,这次综合大作业让我们体会到许多事情通过与别人的合作会变得更加简单。这次作业我和组员一起写了数学计算工具,我们秉着相互配合精诚合作的原则每人完成两个部分的功能,菜单主界面由我们共同完成。开始的时候,我们都很茫然不知道从哪里开始但是我们并没有沮丧而是查了很多相关的资料在我们共同的努力下终于确定好了函数的框架,接下来我们就分工每人写了两个小模块。 刚开始学C语言这门课的时候我觉得完全无法理解,觉得这门课没有一点逻辑性,不能理解、老师一讲课我就想为什么要这样为什么会这样,搞得我头昏脑涨完全没有学下去的心情。因此我完全没学到什么在刚开始的时候,后来老师说C语言只要记住就行了当历史背下来就行了,这时我似乎明白了该怎么学了但是由于前面没学好所以到了后面还是有点困难。但是,对于C语言这门课程我虽然不是学的很出色,上课我还是很认真的听课的所以通过看书我首先学着去读懂程序,慢慢的我学着去体会编程的思想,就这样我一步一步的学习结合老师上课的课件和重点知识我进一步学会了一些复杂一点的程序。在这次大作业中我有失败、有沮丧但是也有成长,在看到运行有错误的时候我看着屏幕上的一个个错误我非常沮丧但是沮丧的同时还把错误改了过来,这个过程中我明白了重要的不是结果而是产生结果的过程,我在这次大作业中成长了许多。 我希望,在下学期的等级考试中,我的成长可以得到体现,我的付出不会落空! 这次编程作业虽然对我们来说比较困难,但是值得高兴的,我们努力了,并基本完成了任务。这次做C语言程序让我感触颇深。是首先是由于对基础知识掌握不扎实,以至于刚开始拿着不知道从何下手,这就让我明白了学习的重要性。其次让我明白的是合作的重要性,我们小组只有两个人,设计时的分工就极其重要了,虽然这次我们没有做好这次题目,但是,不管是在知识的汲取上,还是我们在合作和团队意识上都有了很大的收获。为了做好这次作业,我们查阅了大量关于C语言编程的书籍,并接受了很多同学建议,以求做到精益求精。付出总有回报,即使它不能在现在,也将在不远的将来!

    注意事项

    本文(程序设计基础课程 综合设计实践教学课题报告C语言实践课程综合大作业.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开