




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计语言编程实践课程设计指导书“程序设计语言编程实践”是为了加强学生对C/C+语言的进一步理解和应用、为学习后续课程打下良好编程基础而开设的一门实践课。一、 课程设计的任务、性质与目的1、 进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解;2、 针对C+语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。3、 掌握C+语言的编程技巧和在vs6.0和vs 2005开发平台上进行上机调试的方法。4、 掌握程序设计的常用算法。为了使学生从课程设计中尽可能取得比较大的收获,要求至少完成6道基础训练题目,从中学习到程序设计的常用算法。二、 课程设计的基本要求 设计步骤的规范不但可以培养学生科学的工作方法和作风,而且还能有效地减少错误,提高工作效率。因此必须严格执行良好的实验步骤规范。本课程设计的基本步骤与要求是: 1、问题分析及解决方案框架确定 充分地分析和理解问题本身,弄清要求做什么(What to do?)。 在确定解决方案框架过程中(How to do?),考虑怎样使程序结构清晰、合理、简单和易于调试,并确定每个函数的简单功能,以及函数之间的调用关系。 2、详细设计和编码 确定算法的主要流程,再此基础上进行代码设计(Coding),每个明确的功能模块程序一般不超过60行,否则要进一步划分。 3、上机前编写程序与检查 上机前程序检查可有效提高调试效率,减少上机调试程序时的无谓错误。 程序检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。把程序中的明显错误事先排除。 4、上机调试程序 5、完成课程设计报告 问题描述:题目要解决的问题是什么。 设计 设计算法:主要算法思想,用流程图表示。 实现注释:各项功能的实现程度。 调试报告:调试过程中遇到的主要问题,是如何解决的;对设计和编码的回顾讨论和分析;改进设想;经验和体会等 附录:源程序清单和结果。如果题目规定了测试数据,则结果要包含这些测试数据和运行输出,当然还可以含其他测试数据和运行输出。三、 课程设计的内容 (一)基本要求题目1. 猜数游戏(掌握程序结构及随机函数应用)程序说明:游戏的开始由机器产生一个随机数(1100之间,用库函数rand(),用法见后面的说明),然后游戏者在程序的提示下猜数,若输入的数比这个数大,程序提示:Your answer is HIGH, try again. ,否则,程序提示:Your answer is LOW,try again.,直到猜对为止。程序可实现连续猜数,直到游戏者退出。程序输出要求:累计游戏者猜对一个数所需次数n,当n=15时,用exit(0)库函数退出程序。2. 百钱百鸡(穷举算法)我国古代数学家张丘键在算经中出了一道题“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 注:穷举法是最简单、最常见的一种程序设计方法。它充分利用了计算机处理的高速特性。使用穷举法的关键是确定正确的穷举范围,即不能过分扩大、也不能过分缩小穷举的范围。3. 打印出所有的“水仙花数”所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为:153=13+53+33 。4. 字符串处理函数编写三个函数:求字符串长度函数(函数原型为:int strlen(char *p)),字符串复制函数(函数原型为:void strcpy(char *p1,char *p2)),字符串比较函数(函数原型为:int strcmp(char *p1,char *p2),返回值为第一个不相同字符的ASCII码差。)。要求:在主函数中根据用户需要调用不同的函数功能。5、 判断一个数是否是数组中的成员(用二分法查找)已知数据a中一共有10个已排序的整数(由小到大排列)。现在从键盘上输入一个数,判断这个数是否是数组a中的数,如果是的话,打印出此数在数组a中的位置来,否则打印“找不到“。(提示:设待查找的数为x,设三个位置变量l、m、h分别代表查找范围的顶部、中间位置和底部,m=(l+h)/2,把数分成以am为中点的两段范围。判断x 是否等于am,若是,则找到。若大于am,则x必在后半段范围,即在am+1至ah。则舍弃前半段,再在后半段重新划分两段范围,定出l、m和h,重复以上步骤,逐步缩小查找范围。)6、 请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。7、 矩阵乘法(数值求解算法)编写一个函数实现矩阵A(2行3列)与矩阵B相乘(3行2列),乘积放在C数组中。在主函数中输入相乘的两数组,并输出结果。8、 求所有不超过200的N值,N的平方是具有对称性质的回文数。回文数就是将一个数从左向右读是一样的,如满足题意要求的数有:N11,112121。9、 插入后自动排序(掌握用穷举法进行比较、交换)把一个整数插入到按由小到大排列的数列中,插入后仍然保持由小到大的顺序排列。要求:用数据指针。10、 计算分数的精确值 使用数组精确计算MN(0MN=100)的值。如果 MN是无限循环小数,则计算并输出它的第一循环节,同时要求输出循环节的起止位置(小数位的序号。)注:由于计算机内字长有限,常规的浮点运算都有精度限制,为了得到高精度的计算结果,就必须自行设计算法。提示:可将商存放在一维数组中,进行除法运算时,可模拟人的手工操作,即每次求出商的一位后,将余数乘以10,再计算商的下一位。若某次余数为0,则为有限不循环小数。若某次计算后的余数与前面的某个余数相同时,则MN是无限循环小数。11、 马克思手稿中的数学题(穷举算法)马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭共花了50先令:每个男人花3先令,每个女人花2先令,每个小孩花1先令,问男人、女人、小孩各有几人?12、 用梯形法求定积分(数值求解算法)用梯形法编程求函数f(x)=x2+2x+1的定积分提示:把积分区间a,b等分为n等分(a,b,n的值由程序输入。),可得到若干个小梯形,积分面积就近似为这些小梯形面积之和。13、 小孩吃梨问题:小孩买了一些梨,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的梨吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半,并又多吃了一个。到第18天只剩下一个梨了,问小孩共买了多少梨?(提示:据初始条件,用倒推法。)14、 一个奇异的三位数(穷举算法)一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码顺序正好相反,求这个三位数。15、 回文数的形成:任取一个十进制整数,将其倒过来后与原来的整数相加,得到一个新的整数后重复以上步骤,则最终可得到一个回文数。请编程验证。(回文数就是将一个数从左向右读是一样的,如121,11等)。(注:回文数不超过2147483647)回文数的这一形成规则目前还属于一个猜想,尚未获得数学上的验证,有些回文数要经历上百个步骤才能获得,请编程验证,打印形成过程。如输入整数78,则形成回文数的过程为:7887165,165561726,7266271353,135335314884。提示:一个函数用来求反序数,另一个函数判断是否为回文数,在主函数中输入输出。16、 人机猜数游戏由计算机“想”一个四位数,请人猜这个四位数是多少。人输入这个四位数后,计算机首先判断这四个数中有几个猜对了,并且在猜对的数字中又有几位位置也是对的,将结果显示出来,给人以提示,请人再猜 ,直到人猜出计算机所想的四位数为止。请编程实现该游戏,游戏结束时,显示人猜一个数用了几次。提示:用库函数rand ()产生一个随机数。如:Int z;z= rand()%9999;例如:计算机“想”了一个“1234”请人猜,可能的提示如下:人猜的整数 计算机判断有几个数字正确 有几个位置正确1122 2 13344 2 13312 3 04123 4 01243 4 21234 4 4游戏结束请编程实现该游戏。游戏结束时,显示人猜一个数用了几次。17、 取子串函数编写求子串函数substr(s,n1,n2),在串s中从n1位置开始取n2个字符的子串18、 输入三行文字,找出其中有多少个空格和多少个单词(规定单词间以一个或多个空格分开)。若一个单词恰好在行末结束,则下一行的开头应有空格,句号和逗号后面也应有空格。19、 递归算法用递归算法编写求1n的累加和。在主函数中调用。20、 计算字符串中子串出现的次数程序说明:利用输入函数输入任意两个字符串,请你编写程序求出第二个字符串在第一个字符串中出现的次数,即在第一个字符串中有几个第二个字符串。21、 (必做题) 设有以下结构体类型:Struct studentChar num5,name20;Int s4;Double ave;(1) 编写函数把10名学生的学号,姓名,四项成绩以及平均分放在一个结构体数组中,学生的学号,姓名和四项成绩由键盘输入,然后计算出平均分放在结构体对应的域中。(2) 编写函数writerec输出学生的记录。(3) 编写通过学号或学生的姓名查找学生的记录的函数findrec。(4) Main函数调用readrec函数和writerec函数,以及findrec函数,实现全部功能。注意:如果是用链表完成,并能说明如何实现的,给予更高一级的分数。附:随机函数rand()c+一、C+中不能使用random()函数 random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。 可改用C+下的rand函数来实现。1、 C+标准函数库提供一随机数生成器rand,返回0RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。rand()函数不接受参数,默认以1为种子(即起始值)。 随机数生成器总是以相同的种子开始,所以形成的伪随机数列也相同,失去了随机意义。(但这样便于程序调试)2、 C+中另一函数srand(),可以指定不同的数(无符号整数变元)为种子。但是如果种子相同,伪随机数列也相同。一个办法是让用户输入种子,但是仍然不理想。 3、 比较理想的是用变化的数,比如时间来作为随机数生成器的种子。 time的值每时每刻都不同。所以种子不同,所以,产生的随机数也不同。 / C+随机函数(VC program) #include #include #include using namespace std; #define MAX 100 int main(int argc, char* argv) srand( (unsigned)time( NULL ) );/srand()函数产生一个以当前时间开始的随机种子 for (int i=0;i10;i+) coutrand()%MAXendl;/MAX为最大值,其随机域为0MAX-1 return 0; 二、rand()的用法 rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。 这样,如果你要产生010的10个整数,可以表达为:int N = rand() % 11; 这样,N的值就是一个010的随机数,如果要产生110,则是这样:int N = 1 + rand() % 11;总结来说,可以表示为:a + rand() % n 其中的a是起始值,n是整数的范围。 若要01的小数,则可以先取得010的整数,然后均除以10即可得到随机到十分位的10个随机小数,若要得到随机到百分位的随机小数,则需要先得到0100的10个整数,然后均除以100,其它情况依此类推。 通常rand()产生的随机数在每次运行的时候都是与上一次相同的,这是有意这样设计的,是为了便于程序的调试。若要产生每次不同的随机数,可以使用srand( seed )函数进行随机化,随着seed的不同,就能够产生不同的随机数。 如大家所说,还可以包含time.h头文件,然后使用srand(time(0)来使用当前时间使随机数发生器随机化,这样就可以保证每两次运行时可以得到不同的随机数序列(只要两次运行的间隔超过1秒)四、 课程设计的安排 每两个班安排1名指导教师和1名辅导教师,布置任务、指导编程及编写报告、指导学生熟悉开发环境和辅导学生调试程序,并对学生进行负责考勤。最后对学生完成的系统进行现场验收和评定成绩。五、 考核方式与评分办法实习报告不少于10页纸,具体应包括以下内容: 系统题目 摘要(简要说明程序的功能) 系统设计:系统功能模块框图、菜单结构图、数据结构说明、重要的输入界面说明以及相应的文字说明; 系统实现:各函数的实现技术,包括文字说明和流程图;程序调试过程中的要点和难点; 系统使用说明:说明如何使用你编写的程序,详细列出每个操作步骤及注意事项; 测试数据:列出你的测试数据(两个原始数据文件)及测试结果,即输入和输出; 结论:谈谈本次实习的收获、存在的问题及改进意见。 附录:程序清单。通过程序实现、总结报告和学习态度综合考评,并结合学生的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内镜室各班职责及流程
- IB历史HL2024-2025模拟试卷-20世纪战争与国际组织历史现象探讨
- 人卫版医学伦理
- 2025年证券投资基金从业资格考试试卷:经典案例分析与应用
- 2025年注册消防工程师综合能力消防设施调试综合能力测试题库
- 2025年校园活动组织条例中的学生权益保护与纠纷处理
- 2025年中国美术学院美术考级(素描九级)模拟试卷:人物半身像写生高分策略
- 2025年中考语文作文专项训练卷:诗词歌赋与文学鉴赏
- 2025年中学教师资格《综合素质》教学反思与总结教育伦理试题试卷
- 宝妈发烧护理方法
- 2025解题觉醒邓诚数学(名师大招册)
- 第四单元第一课 多姿多彩的乐音世界-《唱脸谱》 课件 2024-2025学年湘艺版(2024)初中音乐七年级下册
- 给小朋友科普化学小知识
- 中医专科护士进修汇报
- 9.2 法律保障生活课件(共13张)-2024-2025学年统编版道德与法治七年级下册
- 《装备测试性工作要求GJB 2547B-2024》知识培训
- 北非旅游地理
- 体重管理培训课件
- EPC工程合作框架协议书范本
- 人教版八年级英语下册导学案(全册 共10个单元)
- 外科学-上肢骨、关节损伤
评论
0/150
提交评论